2009-09-14 7 views
8

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

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

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

+0

Отличный вопрос! Просто любопытно, какой GSM-модем у вас есть? –

+0

Huawei, модель E220 HSDPA USB-модем – gath

ответ

3

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

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

Сначала вы должны правильно инициализировать модем. Я использовал текстовый режим для 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

Спасибо, не могу дождаться. – gath

+0

Хорошо, отредактировано. Надеюсь это поможет. Я использовал эти команды во встроенном приложении с внешним GSM-модемом. –

+0

Отлично, позвольте мне попробовать. – gath

0

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

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

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