2009-09-14 13 views
8

Tengo un módem GSM conectado a mi computadora, quiero recibir mensajes de texto enviados mediante un programa Python que he escrito, me pregunto cuál es la mejor técnica para buscar datos.¿Cuál es el mejor diseño para sondear un módem para datos entrantes?

Si escribo un programa que tiene un ciclo infinito que comprueba continuamente si hay sms entrantes, es decir, dentro del ciclo, el programa envía los comandos AT y lee los datos de entrada. o los módems tienen una forma de señalizar una aplicación de datos entrantes (sms).

Im tratando de imaginar que un teléfono celular es simplemente un módem GSM, y cuando se recibe un sms, el teléfono le avisa del evento, o el software del teléfono tiene un bucle infinito que sondea los datos entrantes.

+0

¡Gran pregunta! Solo curiosidad, ¿qué modem GSM tienes? –

+0

Huawei, modelo E220 Módem USB HSDPA – gath

Respuesta

3

He escrito algo similar antes. Hay una forma de usar comandos AT para decirle al módem que te avise cada vez que se recibe un SMS.

Como referencia, estaba usando un Maestro 100 GSM Modem en una aplicación incrustada.

Primero debe inicializar correctamente el módem. Estaba usando el modo de texto para el SMS, pero podría estar usando algo diferente. Elige de estos lo que quieras. AT + CNMI es el más importante.

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 

Esperaría la notificación del mensaje, que se vería así. (No coinciden en el número de índice, que pueden diferir entre las notificaciones)

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

Al llegar la notificación, recuperar los no leídos de SMS:

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

Yo recomendaría también se añade una encuesta, tal vez cada 5 minutos más o menos, en caso de que pierda una notificación. ¡Con las comunicaciones en serie nunca puedes estar seguro!

+0

Gracias, no puedo esperar. – gath

+0

Ok, editado. Espero que esto ayude. Usé esos comandos en una aplicación integrada con un módem GSM externo. –

+0

Genial, déjame probarlo. – gath

0

Me parece que no recuerdo gran parte del conjunto de comandos AT relacionado con SMS. La respuesta de Andre Miller parece sonar algunas campanas. De todos modos, deberías leer la documentación con mucho cuidado, estoy seguro de que hubo algunos errores.

Mi recomendación para el sondeo es al menos cada 5 segundos: esto es solo por robustez y capacidad de respuesta frente a la desconexión.

Utilicé una máquina de estados para navegar entre la inicialización, leer y borrar mensajes.

Cuestiones relacionadas