GSMモデムを使用して電話をかけたい。だから私は以下のプログラムを書いた:
import time
import serial
recipient = "+98xxxxxxxxxx"
phone = serial.Serial("COM10", 115200, timeout=5)
try:
time.sleep(0.5)
phone.write(b'ATZ\r')
time.sleep(1)
phone.write(b'ATD"'+recipient.encode() +b'"\r')
while(1):
print(phone.readline())
time.sleep(0.5)
finally:
phone.close()
しかし、実行すると、次の出力が表示されます。
>>> ================================ RESTART ================================
>>>
b'ATZ\r\r\n'
b'OK\r\n'
b'ATDxxxxxxxxxx\r\r\n'
b'NO CARRIER\r\n'
この「NO CARRIER」エラーの意味は?
SMS正常に送信できます。
これは、SMSの送信に使用するプログラムです。
import time
import serial
recipient = "+98xxxxxxxxxx"
message = "Test"
phone = serial.Serial("COM10", 115200, timeout=5)
try:
time.sleep(0.5)
phone.write(b'ATZ\r')
time.sleep(0.5)
phone.write(b'AT+CMGF=1\r')
time.sleep(0.5)
phone.write(b'AT+CMGS="' + recipient.encode() + b'"\r')
time.sleep(0.5)
phone.write(message.encode() + b"\r")
time.sleep(0.5)
phone.write(bytes([26]))
time.sleep(0.5)
finally:
phone.close()
エラーの原因を見つけました:
構文はATD+98xxxxxxxxxx;
の後に終了文字列が続きます。数字の後にセミコロンを付けるのを忘れていました。
だから私は交換します
phone.write(b'ATD"'+recipient.encode() +b'"\r')
と
phone.write(b'ATD"'+recipient.encode() +b';"\r')
そして今、それは正常に動作します。
this ドキュメントの括弧に基づいて、「;」を使用すると考えましたオプションです。しかし、私は間違っていたようです。