0
votes

In our SMS server we have an old GSM modem(Siemens iRZ ES75iT) connected by COM port. We have a python script which allows to send SMS messages. Here is the code of sms sender function:

  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()

The script usually working as expected but sometimes we get SMS containing "AT" string in the text, like

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

or

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

The question is why we are getting such text in the message and how to avoid it? Thanks in advance.

1

1 Answers

0
votes

This is an issue related to at command echo, every time you send an AT command it is echoed on serial. We have python scripts for sending sms. what we normally do is disable the echo before sending any AT command. send this command

ser.write('ATE0\r')

This command will turn off the echo

before sending

ser.write('AT')

Hope this helps