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

时间:2018-03-24 09:39:46

标签: python sms gsm at-command

在我们的SMS服务器中,我们有一个通过COM端口连接的旧GSM调制解调器(西门子iRZ ES75iT)。 我们有一个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**"

问题是为什么我们在邮件中收到这样的文本以及如何避免它?提前谢谢。

1 个答案:

答案 0 :(得分:0)

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

code{ stage('Checkout') { echo 'Getting source code...' checkout scm } stage('Build Test Environment') { echo 'Building dependencies...' sh 'npm i' } stage('Runnin Test') { echo 'Testing...' sh 'npm run test' }

此命令将关闭回声

发送前

ser.write('ATE0\r')

希望这有帮助