Каков наилучший дизайн для опроса модема для входящих данных? - PullRequest
8 голосов
/ 14 сентября 2009

У меня есть GSM-модем, подключенный к моему компьютеру, я хочу получать текстовые сообщения, отправленные на него с помощью написанной мной программы на Python, мне просто интересно, как лучше всего опрашивать данные.

Если я напишу программу с бесконечным циклом, которая непрерывно проверяет входящие смс, то есть внутри цикла, программа отправляет AT-команды и считывает входные данные. или у модемов есть способ сигнализации приложения о поступлении данных (смс).

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

Ответы [ 2 ]

3 голосов
/ 14 сентября 2009

Я написал нечто подобное раньше. Есть способ с помощью AT-команд сообщить модему, что он будет сигнализировать вам каждый раз при получении SMS.

Для справки, я использовал GSM-модем Maestro 100 во встроенном приложении.

Сначала нужно правильно инициализировать модем. Я использовал текстовый режим для SMS, но вы можете использовать что-то другое. Выберите из них то, что вы хотите. AT + CNMI является наиболее важным.

AT&F0 # Restore factory defaults
ATE0  # Disable command echo
AT+CMGF=1 # Set message format to text mode
AT+CNMI=1,1,0,1,0 # Set new message indicator
AT+CPMS="SM","SM","SM" # Set preferred message storage to SIM

Затем вы подождете сообщения с уведомлением, которое будет выглядеть следующим образом. (Не совпадают по порядковому номеру, который может отличаться в уведомлениях)

+CMTI: "SM",0 # Message notification with index

Когда вы получите это уведомление, получите непрочитанные SMS:

AT+CMGL="REC UNREAD"  # Retrieve unread messages

Я бы порекомендовал вам также добавить опрос, возможно, каждые 5 минут или около того, на случай, если вы пропустите уведомление. С последовательной связью вы никогда не можете быть уверены!

0 голосов
/ 15 сентября 2009

Я не могу вспомнить большую часть набора AT-команд, связанных с SMS. Кажется, ответ Андре Миллера прозвенел несколько раз. В любом случае, вы должны внимательно прочитать документацию, я уверен, что было несколько ошибок.

Моя рекомендация для опроса - по крайней мере, каждые 5 секунд - это просто для надежности и отзывчивости перед лицом отключения.

Я использовал конечный автомат для навигации между инициализацией, чтением и удалением сообщений.

...