Получение пустого 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

Скриншот сообщения от модуля GSM

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 в целочисленном формате.

Другие вопросы по тегам