问题
I created this python script on rpi2, the message goes through, but it is a blank message. Is it a encoding issue?
import serial
import time
from sys import version_info
from curses import ascii
phone = serial.Serial("/dev/ttyAMA0", 115200, timeout=0.5)
def send_text(number,message):
phone.write(b'AT+CMGF=1\r')
phone.write(b'AT+CMGS="' + number.encode() + b'"\r')
phone.write(message.encode())
phone.write(ascii.ctrl('z'))
for i in range(len(reply)):
reply[i] = reply[i].rstrip()
print reply
AT commands (where 0000000000 is a 10 digit mobile number) in Minicom, still blank message
minicom -D /dev/ttyAMA0 -b 115200 -o
AT
OK
AT+CMGS="0000000000"
>Hello
<ctrl-z>
+CMGS: 14
OK
Screenshot of Message from GSM Module
回答1:
There was an issue with the text mode parameters. The AT command below fixed it -
AT+CSMP=17,167,0,0
--info about it
AT+CSMP=<fo>,<vp>,<pid>,<dcs>
<fo>=17 Sets reply pat, user data header, status report request, validity period format, reject duplicates and message type.
<vp>=167 Sets validity period.
<pid>=0 Higher layer protocol indicator.
<dcs>=0 Information encode format.
OK Modem Response.
来源:https://stackoverflow.com/questions/38146737/recieving-blank-sms-sim800-using-at-commands-and-python-on-raspberry-pi-2