Cómo enviar un SMS desde cero ( I )

En esta serie de posts os enseñaré cómo se envía un SMS desde cero. 


Para empezar tenemos que tener un hardware específico, que en mi caso es un módem modelo MC35i, tiene una salida para una antena con un imán en la base para fijarla firmemente a un soporte, en la parte de atrás tiene un conector DB9 que es el puerto COM del equipo, que tendremos que unir a la salida del puerto serie del PC, una ranura para insertar la tarjeta SIM que nos la proporcionará nuestro operador de telefonía y por último una salida para poder conectar un teléfono.

Aquí tenéis algunas fotos:





























Pues una vez que hemos conectado el módem al PC por el puerto serie y le hemos encendido (parpadeará un led verde), vamos a configurarlo:




En este caso he utilizado Delphi 7 y Turbo Power Async Pro (o cualquier otra utilidad que os permita enviar y recibir texto por un puerto serie)




Instalamos Turbo Power y ponemos el objeto ApdComPort1 en el Form de nuestra aplicación, con las siguientes propiedades:


AutoOpen=TRUE, para que se active cuando iniciamos el programa.

Baud=9600 se podría poner a 19200 con este módem, pero he visto que trabaja mejor a esta velocidad.

ComNumber=8 es el número de puerto COM

DataBits=8, StopBits=1, SWFlowOption=swfNone









El Form contendrá un botón (Caption=INICIO) y un Grid, donde mostraremos fila por fila los parámetros de inicialización del módem












La inicialización del módem se hace utilizando comandos AT .


Existen cuatro formatos de ejecución para cada  comando AT. Cada
formato se determina generalmente por la sintaxis según se presenta en la
siguiente tabla:





























Comandos de prueba


AT+CXXX=?


Devuelve una lista de los
posibles parámetros que se pueden introducir con el correspondiente parámetro
de escritura.



Comandos de lectura


AT+CXXX?


Devuelve el parámetro o
conjunto de parámetros actualmente establecidos.



Comandos de escritura


AT+CXXX=<...>


Establece el valor a los
parámetros introducido por el usuario.



Comandos de ejecución


AT+CXXX


Este comando utiliza
parámetros predefinidos en caso de que no hayan sido modificados con el
correspondiente comando de escritura.






La respuesta dada por el módem a cada comando es distinta dependiendo del formato, incluso a pesar de que el comando sea el mismo.




Al final de cada comando se debe incluir un retorno de carro.

Los comandos para el  MC35i son los siguientes:






 Comandos
generales.




































Comando


Sintaxis / Respuesta


Descripción


AT


AT


OK


Verifica que la
comunicación se ha establecido pero no realiza ninguna acción. La respuesta
del terminal es OK. De ahora en adelante se marcara en rojo la respuesta del
terminal.


AT+CPIN


AT+CPIN=


OK


CPIN=?


READY


Permite introducir
el código PIN para poder utilizar la tarjeta SIM.


Una vez lo hemos
introducido se puede comprobar si es correcto ejecutando el correspondiente
comando de lectura.


AT+CGMI


AT+CGMI


Identifica al
fabricante del terminal.


AT+CGMM


AT+CGMM


Identifica el
modelo del terminal.


AT+CVIB


AT+CVIB=1





OK


ERROR


Activa el modo
vibración. Sólo está disponible para terminales que tengan vibrador
incorporado.


Si el modo
vibrador se ha activado correctamente


Si el modo
vibrador no esta disponible







Comandos para
control de llamadas.































Comando


Sintaxis / Respuesta


Descripción


ATD


Ó


ATDT


ATD [;]








OK


NO DIALTONE


BUSY


Realiza una
llamada de teléfono al número dado por n. Es importante enviar ; al terminar, en
caso contrario la llamada será una llamada de datos. debe ser una
cadena de caracteres.


Siempre se recibe
esta respuesta.


Se recibe además
de la anterior sino hay tono.


Si el interlocutor
esta ocupado.


ATA


ATA


OK


CONNECT


NO CARRIER


Responder a una
llamada.


En el caso de
llamada de voz.


En el caso de
llamada de datos.


En el caso de que
lo haya fallo de conexión.


ATH


ATH


OK


Finalizar la
llamada en curso.


Llamada finalizada
con éxito.


ATDL


ATDL


ERROR


Rellamada.


No hay ningún
número como último número marcado.







                    Comandos para
gestión de la memoria.


























Comando


Sintaxis / Respuesta


Descripción


AT+CPBS


AT+CPBS=


OK


AT+CPBS=?





+CPBS: lista
posible


OK


Selecciona la memoria activa dada por storage. Storage es una cadena de
caracteres.


Consulta la lista de las posibles unidades
de almacenamiento.


Devuelve dicha lista.


AT+CPBR


AT+CPBR=


Lee de la memoria activa la entrada en
dicha agenda situada en la posición dada por el entero location. Si dicho entero
supera el límite de almacenamiento se devolverá un error.


AT^SDLD


AT^SDLD


OK


ERROR


Borra el número establecido como último
número marcado.







Comandos para el envío y recepción de SMS.








































Comando


Sintaxis / Respuesta


Descripción


AT+CMGF


AT+CMGF


OK


Activa/Desactiva
el modo texto.


Con el
correspondiente comando de prueba se puede consultar el estado: 1, activado,
0, desactivado


AT+CMGR


AT+CMGR=


OK


Lee el mensaje almacenado
en la posición de la memoria activa, dada por el entero n.


AT+CMGD


AT+CMGR=


OK


Borra el mensaje
almacenado en la posición de la memoria activa, dada por el entero n.


AT+CMSS


AT+CMSS=


OK


Reenvía el
mensaje, anteriormente enviado, almacenado en la posición de la memoria
activa dada por el entero n.


AT+CMGS


AT+CMGS=””[,]











> ^z


+CMGS: 149


OK


Envia un mensaje
SMS al numero de teléfono indicado en n. n es una cadena de caracteres. Si n
incluye el prefijo internacional el tipo de destino puede dejarse en blanco.
es un retorno de carro.


El
modem responde con > y enviamos el cuerpo del mensaje, texto, seguido de
^z (Ctrl z)











En siguientes posts veremos cómo preparar al módem para enviar y recibir SMS




No hay comentarios:

Publicar un comentario

Simulación del movimiento de los electrones en un campo electrico

Espectacular simulación realizada con OpenGL del movimiento de los electrones cuando atraviesan un campo eléctrico. Como muestra la image...