Как обработать отчет о доставке в GSM модеме?
Я хочу использовать GSM-модем в приложении для каких-то целей.
то, что я хочу, обрабатывает отчет о доставке SMS для списка отправленных смс.
Входящие и исходящие GSM модемы ограничены 15 пунктами. каждый раз, когда я читаю входящие, модем gsm возвращает список и очищает список.
Как проверить статус доставки смс, которые были удалены из входящих сообщений модема GSM?
Мне нужно что-то уникальное, что позволяет мне идентифицировать каждое сообщение.
1 ответ
каждый раз, когда я читаю входящие, модем gsm возвращает список и очищает список.
Сообщения, хранящиеся в памяти модема, не будут удалены после прочтения. Вы только что прочитали сообщение с at+cmgl={message id in storage}
команда, а затем удалите его, используя at+cmgd={message id in storage}
(или нет, как вы хотите. Вы можете очистить все хранилища модема, используя at+cmgd=1,4
команда).
Вернемся к вопросу: после отправки SMS вы получите ответ от модема, что-то вроде этого: +cmgs: {sms id, 0 to 255} OK
, В случае, если Сервисный центр успешно доставил SMS, модем вернет этот ответ: +cds: {some id which does not matter} {PDU status report}
, Вам нужно просто декодировать этот PDU, чтобы получить отчет о состоянии, идентификатор оригинального SMS и другие полезные данные. Если ID отправленного смс и идентификатор из отчета о состоянии совпадают, у вас есть отчет о состоянии именно для вашего сообщения. Обратите внимание: если вы удалите сообщение из хранилища модема до получения отчета о доставке, вы получите отчет, который будет содержать всю обычную информацию, но статус доставки будет, скорее всего, 71 вместо 0.