在我们的 SMS 服务器中,我们有一个通过 COM 端口连接的旧 GSM 调制解调器(Siemens iRZ ES75iT)。我们有一个允许发送 SMS 消息的 python 脚本。这是短信发送功能的代码:
def sendsms(to, message):
message = message.replace('@', '\0')
if (len(message) > 140 ):
message = message[0:140]
print "Connecting phone"
ser = serial.Serial('/dev/ttyS0', 115200, timeout=12)
time.sleep(1)
ser.write('AT\r')
time.sleep(1)
print "AT"
ser.write('AT+CMGD="ALL"\r')
time.sleep(2)
print "AT+CMGDA=DEL ALL"
ser.write('AT+CMGF=1\r')
time.sleep(1)
print "AT+CMGF=1, text mode"
ser.write('''AT+CMGS="''' + to + '''"\r''')
time.sleep(2)
ser.write(message + "\r")
time.sleep(3)
ser.write(chr(26))
time.sleep(1)
print message
print "disconnecting"
ser.flush()
ser.close()
该脚本通常按预期工作,但有时我们会收到文本中包含“AT”字符串的 SMS,例如
"**AT** <text we expect to see>"
或者
"<text we expect to see> **AT**"
问题是为什么我们会在消息中收到这样的文本以及如何避免它?提前致谢。
这是与 at 命令回显相关的问题,每次发送 AT 命令时,它都会在串行上回显。我们有用于发送短信的 python 脚本。我们通常做的是在发送任何 AT 命令之前禁用回声。发送这个命令
ser.write('ATE0\r')
此命令将关闭回声
发送前
ser.write('AT')
希望这可以帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句