Получение данных последовательного ответа в python - PullRequest
0 голосов
/ 12 сентября 2018

Я использовал этот код для отправки SMS с помощью Python на моем Raspberry Pi.

Как отправлять / получать SMS с помощью AT-команд?

import time
import serial

recipient = "+1234567890"
message = "Hello, World!"

phone = serial.Serial("/dev/ttyUSB3",  460800, timeout=5)
    try:
        time.sleep(0.5)
        phone.write(b'ATZ\r')
        time.sleep(0.5)
        phone.write(b'AT+CMGF=1\r')
        time.sleep(0.5)
        phone.write(b'AT+CMGS="' + recipient.encode() + b'"\r')
        time.sleep(0.5)
        phone.write(message.encode() + b"\r")
        time.sleep(0.5)
        phone.write(bytes([26]))
        time.sleep(0.5)
    finally:
        phone.close()

При запуске скрипта ошибок нет, но не приходит текстовое сообщение.Я запустил AT-команды непосредственно в оболочке minicom, и текстовое сообщение ДОЛЖНО быть успешно отправлено.

Есть ли способ печати сценария python для проверки ответа модема при отправке ему команд?Например, если я отправлю ATZ, было бы хорошо, если бы я мог напечатать «OK».

1 Ответ

0 голосов
/ 13 сентября 2018

Извинения мои, я пропустил это в моем первоначальном поиске.

Чтение ответа AT команда с pySerial

Последовательный ответ отображается с:

response =  ser.read(2)

Также с кодом

phone.write(bytes([26]))

Мне удалось отправить SMS-сообщение из IDLE, но оно не отправляло ничего из командной строки. Чтобы это исправить, мне пришлось изменить его на

phone.write('\x1A')
...