Buenos días,
Expongo mi problema para ver si alguien me puede ayudar. Tengo un modem conectado a un Arduino Mega, si uso el ejemplo que viene con el IDE "MultiSerialMega" me funciona sin problemas. Veo como llega un sms y cuando pido leerlo con "AT+CMGR=1" lo veo sin problemas.
+CMTI: "SM",1
+CMGR: "REC UNREAD","+34XXXXXXXXX,,"12/12/08,12:43:41+04"
Mensaje de pruebas
OK
El problema viene cuando quiero capturarlo en un variable todo el mensaje, sólo soy capaz de leer los primeros 64 bytes, y nada del resto, es decir, obtengo la cabecera del mensaje y sólo los tres primero caracteres del sms (+CMGR: "REC UNREAD","+34XXXXXXXXX,,"12/12/08,12:43:41+04"Men), ¿ alguien tiene alguna idea ?
La función que uso es esta.
void Modem::obtenerTextoSms()
{
// Esta funcion recoge el texto del sms
String texto;
int a = 0;
// Le pedimos el sms
limpiarBuffer();
delay(1000);
Serial1.println("AT+CMGR=1");
delay(5000);
Serial.println("Numero de caracteres sin leer: " + Serial1.available());
while (Serial1.available() > 0)
{
char aux = (char)Serial1.read();
texto += aux;
Serial.println(aux);
a ++;
}
Serial.println(a);
this->textoSms = texto.substring(texto.length()-3, texto.length());
}
P.D.: En este ejemplo Serial1 es el modem, la función limpiarBuffer() lo único que hace es emular a Serial1.flush() que ya no está disponible
void Modem::limpiarBuffer()
{
while (Serial1.read() >= 0)
; // no hacemos nada :-)
}