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 contar un hardware 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 favorito 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), procedemos a ver cómo lo configuramos:


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 cuyas diferencias se presentan 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