GSM 调制解调器发送 SMS,在文本中包含一些 AT 命令

GSM modem sends SMS including some AT command in the text

在我们的 SMS 服务器中,我们有一个通过 COM 端口连接的旧 GSM 调制解调器 (Siemens iRZ ES75iT)。 我们有一个允许发送 SMS 消息的 python 脚本。 这是短信发送功能的代码:

  def sendsms(to, message):
  message = message.replace('@', '[=10=]')
  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" 字符串的短信,例如

"**AT** <text we expect to see>" 

"<text we expect to see> **AT**"

问题是为什么我们会在消息中收到这样的文本以及如何避免这种情况?提前致谢。

这是一个与 at 命令回显相关的问题,每次发送 AT 命令时,它都会在串口上回显。我们有 python 个用于发送短信的脚本。 我们通常做的是在发送任何 AT 命令之前禁用回显。 发送这条指令

ser.write('ATE0\r')

此命令将关闭回显

发送前

ser.write('AT')

希望对您有所帮助