sábado, 12 de marzo de 2011

.:: Como enviar SMS por Comandos AT 2/4 ::.

Continuamos hoy con el especial sobre envío de SMS con enlaces y modems. Esperamos que os sea de utilidad.

Problemas con el envío de SMS con caracteres especiales.


Como ejemplo tenemos el carácter ä tiene el código 123 decimal in ASCII pero el 132 decimal en GSM. El código 123 decimal en ASCII es { , de esa forma necesitas enviar el carácter { con el comando cmgs desde Hiperterminal para recibir el carácter ä en un sms tipo texto a 7 bit.

Esto lleva a construirse una tabla de conversión de los caracteres para poder enviarlos adecuadamente.

La excepción es el carácter @ , este carácter en la tabla GSM coincide con 0 decimal, o sea NULL-Byte o el cero binario.
Este carácter no es posible enviarlo desde Hiperterminal. Curiosamente el carácter NULL-Byte se usa en el lenguaje de programación C\C++
para identificar el final de una cadena de texto. Para poder enviar el carácter se debe utilizar \00 ó \0 dependiendo del compilador C usado, o la secuencia de escape 5c3030.

Si existe un micro la aplicación se puede construir una tabla propia de caracteres para que coincida con la GSM.

Asimismo también se puede enviar cadenas de escape para representar todos los caracteres. ($#áö, ...)

La característica de la codificación de @ ha llevado a muchos operadores a sustituir este carácter por el * para enviar SMS a e-mail.
Este problema de la @ además se presenta en los USSD que van también codificados a 7 bits en bytes. Al final se rellena lo que sobra de 0, y si sobran 7 bits del último byte al rellenarlos te sale el especial carácter @ (Esto se encuentra solucionado en todos los módulos Siemens)

Mas problemas que se pueden presentar, si se utiliza control de flujo XON/XOFF puede cortar las secuencias y no enviar los SMS si detecta los caracteres
XON y XOFF , códigos decimales 17 y 18.

No hay comentarios: