как узнать, что отправленное СМС не удалось или успешно - PullRequest
0 голосов
/ 05 ноября 2019

Я создаю SMS-шлюз от порта GSM-модема. Мне нужно убедиться, что отправленное SMS-сообщение успешно или неудачно. Таким образом, я думаю, что способы проверить, не удалось или успешно, это проверить хранилище сообщений, называемое исходящие, если успех и не удалось набрать. Но я пытаюсь по команде проверить хранилище по индексу или распечатать все индексные сообщения. он ничего не возвращает.

Ответ на отправленное сообщение

+ CMGS: 170

когда я читаю, мы можем прочитать сообщение с помощью AT +CMGR команда

modem = serial.Serial('COM5', 9600, timeout=0)

modem.write(b'AT+CMGR=170\r')

while True:
    print(modem.read(100))
    input('Type to see response')

я пытаюсь с этой командой также AT + CMGR = "ALL" распечатать что-нибудь в хранилище. но ни одно сообщение не распечатывается.

1 Ответ

0 голосов
/ 06 ноября 2019

Команда AT+CMGS предварительная прямая отправка SMS без сохранения. В ответе на команду

+ CMGS: 170

число 170 - это просто прогрессивное число, считающее успешные посылки (увеличивается до 255 и перезапускается с 0) ионо совершенно не связано с расположением хранилища SMS.

Но, к счастью, этот ответ отправляется только тогда, когда SMS успешно отправлено , в противном случае модем вернул бы ответ ERROR. Что значит «отправлено»? Именно это успешно доставлено в сервисный центр SMS. Фактическая доставка получателю SMS обычно немедленная, но она также может быть задержана из-за перегрузки сети или недоступности получателя.

Просто для полноты AT+CMGR=<index> и AT+CMGL=ALL могут фактически отображать также отправленные сообщения, но только дляте, которые хранятся с AT+CMGW перед отправкой. Например, с + CMGL вы можете иметь N строк, каждая из которых сообщает:

+CMGL: <index>,<stat>,...

, в которых могут быть следующие значения:

  • "REC UNREAD" - новое входящее сообщение
  • «REC READ» - чтение входящего сообщения
  • «STO UNSENT» - сохраненное сообщение еще не отправлено
  • «STO SENT» - сохраненное сообщение уже отправлено <-это актуально для вас </strong>
...