作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想使用我的 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”错误是什么意思?
请注意,我可以成功发送短信。
这是我用来发送短信的程序:
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 中的括号文档,我认为使用“;”是可选的。但似乎我错了。
关于python - 尝试在 Python 中使用 GSM 调制解调器调用电话时收到 "NO CARRIER"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30952079/
我是一名优秀的程序员,十分优秀!