Veo 3 problema con tu logica.
- ¿ Que tan seguro estas que el numero esta en CadenaAux[12], 13 y 14 ?
- Ahi son 3 letras, podes estar enviando cualquier cosa
- Faltan los \r\n
Tambien en tu primer codigo no tiene limitante el contador del array, asi que OJO con eso. Lo repito por que ya lo habia escrito antes.
Otra cosa mas los modulos tienen una memoria limitada, pueden mantener una cierta cantidad de mensajes , asi que creo que para no complicar la vida de nadie ( y menos uno mismo ), podrias ir leyendo/procesando y borrando siempre el primero. Eso hace que siempre tengas que leer unicamente el primero y los comandos sean siempre los mismos, no contengan "variables" dentro de estos.
AT+CMGL=1\r\n
Respuesta:
+CMGR: "REC READ","1234567890",,"12/07/30,00:12:05+32"
Mensaje_aca creo
OK
La ventaja de este metodo es que:
- Siempre vas a leer el primero, por lo cual el comando es siempre "AT+CMGR=1\r\n" para poder leerlo
- Vas a usar otro comando que es para borrar el primer mensaje, lo cual siempre va a ser igual ( no va a cambiar ), no recuerdo cual es el comando.
- Nunca deberias lidiar con una bandeja llena. Con lo cual recibis otro codigo diciendote que esta lleno pero que hay mensajes en espera. Sino tenes que agregar soporte a tu programa para ese codigo.
La desventaja:
- Es que no se guardan los mensajes, a no ser que lo hagas externo al PIC, supongamos que los guardes en una SD, por necesidad.
La otra es usar:
AT+CMGL="REC UNREAD"
Que si no me equivoco te devuelve todos los mensajes "no leidos".
+CMGL: 1,"REC READ","+85291234567",,"07/02/18,00:05:10+32"
Reading text messages is easy.
+CMGL: 2,"REC READ","+85291234567",,"07/02/18,00:07:22+32"
A simple demo of SMS text messaging.
+CMGL: 3,"REC READ","+85291234567",,"07/02/18,00:12:05+32"
Hello, welcome to our SMS tutorial.
OK
Observaras que el formato es otro el de respuesta. y te puede incluir muchos mensajes en 1 sola respuesta. Pero ahi directamente los pasa a todos como "leidos" asi que es 1 para todos los mensajes "no leidos".
Ventajas:
- Lees todos los "no leidos", si llegaron 2 de golpe, los tenes a los 2.
- Usas un comando fijo para leerlos, no necesitas saber el numero
- No estas recibiendo y borrando ahi nomas.
Desventajas:
- Tenes que lidiar con una posible bandeja llena, la cual vas a tener que borrar mensajes. Para que lleguen los nuevos. Eso implica tener la posibilidad de recibir otro "comando" desde el GSM.
- Se complica un poco mas el parseo de la respuesta, no es demasiado en realidad. Pero se complica. Y si queres hacer un "paso a paso" convendria mas el anterior.
Ese es mi punto de vista. Seguro que otro tendra alguno distinto, y va a depender mucho de la aplicacion que le quieras dar.