Serial.println dudas funcionamiento

Hola,

ya sé que alguno se me echará encima diciéndome que por qué no busco en el foro para obtener información sobre el tema antes de postear algo pero no encuentro solución a mis problemas.

Sigo con mi proyecto de mandarle comandos AT a un móvil basado en el artículo de Igor y su módem GSM y solucionados los problemas HW ahora los tengo con algo que se supone que está más que trillado y que no debería suponer ningún problema.

Se trata de escribir por el puerto serie. Hay determinados comandos como p.e. Serial.println("AT+CSCA=+3460909xxxx"); que luego te metes en el móvil y ves que efectivamente ha pitado.
Mis problemas vienen por ejemplo a la hora de decir que escriba algo en la memoria del teléfono o que mande un sms lo cual se traduce en escribir un chorro de caracteres (va en formato PDU no tiene la posibilidad de meter un texto en cristiano)...tipo Serial.print("01A32....");
Serial.println(26, BYTE); //

y el tema es que primero, no sale reflejado nada en el móvil y segundo, el resto de comandos que digo que escriba ya pasa de ellos.

Está puesto a 19200 baudios y he puesto los delays para que le dé tiempo a mandar todo por el puerto serie. Tb no sé que había leido de que el máximo tamaño del buffer eran 40 caracteres, así que tb he dividido la escritura.

Ni con delays ni con nada el tema funciona. Será el tema de que no interpreta el Ctrl-z? También he puesto que lea el promt que te devuelve el equipo cuando te conectas con un hyperterminal, a saber, OK, ERROR, > y tampoco tiene un comportamiento definido.

Estoy ya un poco hasta el gorro la verdad, si alguno puede darme alguna guía genial, seguro que es una pollada pero yo soy más lerdo todavía.

Gracias

Serial.println(26, BYTE);

Hola,

¿Porqué no trabajas en modo texto?. Es más fácil que en modo PDU.

En el ejemplo estaba ésta función ...

 void messageFormat(boolean formato){
   /*
   Elige el formato con el que vamos a trabajar

   Ejemplo:

   Comando: AT+CMFG=1                   
   Respuesta: OK

   */
   Serial.print("at+cmgf=");
   if (formato) {
     Serial.println("1");                  // Modo texto
   }else {
     Serial.println("0");                  // Modo PDU
   }
   delay(1000); 
 }

Por otra parte ... sería buena idea que revisases los comando AT específicos para el modem que tienes. Algunas marcas se pasan los estándares por el arco del triunfo.

Y finalmente ... si lo pruebas desde el hyperterminal ... ¿funciona o no?

Salu2,

Igor

Hola,

te respondo por partes:

  • este modelo de Siemens sólo admite el formato PDU
  • y sí, el comando funciona ok, lo ejecutas desde un hyperterminal y pita. Vamos, no sólo ese sino todos los comandos AT que viene en la lista de aceptados por ese modelo.

Gracias por tu respuesta.

Pues vaya ... habrá que ver como mandar el Ctrl + Z en modo PDU ...

La equivalencia en hexadecimal es 0x1A ... prueba a ver si lo pilla.

Por otra parte esto que acabo de encontar en internet está muy bien:

http://www.articledashboard.com/Article/How-to-send-and-receive-SMS-using-computer-and-gsm-modem/555207

Salu2,

Igor

Hola,

Por si os sirve os paso un pequeño tutorial del modulot GPRS de Libelium.

http://www.libelium.com/squidbee/index.php?title=New_GPRS_module_for_Arduino_(Hilo_-_Sagem)

Saludos