Получение пустого SMS SIM800 с использованием AT команд и Python на Raspberry Pi 2
Я создал этот скрипт на rpi2, сообщение проходит, но это пустое сообщение. Это проблема кодирования?
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-команды (где 0000000000 - 10-значный номер мобильного телефона) в Minicom, все еще пустое сообщение
minicom -D /dev/ttyAMA0 -b 115200 -o
AT
OK
AT+CMGS="0000000000"
>Hello
<ctrl-z>
+CMGS: 14
OK
1 ответ
Возникла проблема с параметрами текстового режима. Команда AT ниже исправила это -
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.
AT+CSMP=17,167,0,0
Параметры В зависимости от команды или кода результата: первый октет GSM 03.40 ДОСТАВКА SMS, ОТПРАВИТЬ SMS (по умолчанию 17),
SMS-STATUS-REPORT или SMS-COMMAND (по умолчанию 2) в целочисленном формате. Отчет о состоянии SMS поддерживается в текстовом режиме, если установлено значение 49.
В зависимости от настройки SMS-SUBMIT: GSM 03.40 TP-Validity-Period либо в целочисленном формате (по умолчанию 167), либо в формате строки времени (см.)
GSM 03.40 TP-Protocol-Identifier в целочисленном формате (по умолчанию 0).
GSM 03.38 Схема кодирования данных SMS в целочисленном формате.