Buenas noches comunidad, les realizo una consulta capas bastante tonta, pero no logro hacerla andar.
El siguiente codigo recibe un msj, lo lee, lo separa y lo guarda en la eeprom. Cuando mando un mensaje lo procesa perfectamente, pero si mando otro sea con el comando ATC o ATA, no lo lee, solamante lo lee (o se ve por el monitor serie) si le doy un reset al arduino, es como si una ves que entra a cualquier de las dos funciones no se ejecuta mas el loop o no regresa.
Les dejo el codigo principal y las dos funciones ... Desde ya muchas gracias.
Programa principal:
#include <EEPROM.h>
#include <Separador.h>
#include <Sim800l.h>
#include <SoftwareSerial.h>
Sim800l Sim800l;
Separador S;
String textSms, numberSms;
bool error;
////////////////////////////////// Estructura para agendar administradores (Max 3 usuarios) ///////////////////
struct Administradores
{ String aDnumero1 ;
String aDnumero2 ;
String aDnumero3 ;
} ;
////////////////////////////////// Estructura para agendar avisos (Max 5 usuarios) ////////////////////////////
struct Avisos
{ String aVnumero1 ;
String aVnumero2 ;
String aVnumero3 ;
String aVnumero4 ;
String aVnumero5 ;
} ;
////////////////////////////////// ////////////////////////////////// ////////////////////////////////// //////
void setup() {
Serial.begin(9600);
Sim800l.begin();
Sim800l.reset();
error = Sim800l.delAllSms();
}
void loop() {
textSms = Sim800l.readSms(1);
if (textSms.indexOf("OK") != -1)
{
if (textSms.length() > 7)
{
numberSms = Sim800l.getNumberSms(1);
textSms.toUpperCase();
if (textSms.indexOf("ATC") != -1) {
Serial.println("Se recibio el comando para agregar administradores");
agenAdm();
}
else if (textSms.indexOf("ATA") != -1) {
Serial.println("Se recibio el comando para agregar numeros de avisos");
agenAvi();
}
else {
Serial.println("Comando no compatible");
}
Sim800l.delAllSms();
}
}
}
Función de Administradores:
void agenAdm() {
String datosRecibidos = Sim800l.readSms(1);
String elemento1 = S.separa(datosRecibidos, ',', 5);
String elemento2 = S.separa(datosRecibidos, ',', 6);
String elemento3 = S.separa(datosRecibidos, ',', 7);
Serial.println("Numero 1 recibido: " + elemento1);
Serial.println("Numero 2 recibido: " + elemento2);
Serial.println("Numero 3 recibido: " + elemento3);
Administradores datosVar;
{
Administradores Datos ;
datosVar.aDnumero1 = elemento1 ;
datosVar.aDnumero2 = elemento2 ;
datosVar.aDnumero3 = elemento3 ;
};
Serial.print("Esto se grabara en numero 1: "); Serial.print(datosVar.aDnumero1) ;
Serial.println("");
Serial.print("Esto se grabara en numero 2: "); Serial.print(datosVar.aDnumero2) ;
Serial.println("");
Serial.print("Esto se grabara en numero 3: "); Serial.print(datosVar.aDnumero3) ;
Serial.println("");
int eeAddress = 0;
EEPROM.put(eeAddress, datosVar);
Serial.println("Se han guardado los numeros!\n");
delay(5000);
Serial.println("Ahora leo la agenda!");
eeAddress = 0;
Administradores leoDatos;
EEPROM.get(eeAddress, leoDatos);
Serial.println("Agenda de administradores:\n");
Serial.print("Numero 1:"); Serial.println(leoDatos.aDnumero1);
Serial.print("Numero 2:"); Serial.println(leoDatos.aDnumero2);
Serial.print("Numero 3:"); Serial.println(leoDatos.aDnumero3);
Sim800l.delAllSms();
}
Función para avisos:
void agenAvi() {
String datosRecibidos = Sim800l.readSms(1);
String elemento1 = S.separa(datosRecibidos, ',', 5);
String elemento2 = S.separa(datosRecibidos, ',', 6);
String elemento3 = S.separa(datosRecibidos, ',', 7);
String elemento4 = S.separa(datosRecibidos, ',', 8);
String elemento5 = S.separa(datosRecibidos, ',', 9);
Serial.println("Numero 1 recibido: " + elemento1);
Serial.println("Numero 2 recibido: " + elemento2);
Serial.println("Numero 3 recibido: " + elemento3);
Serial.println("Numero 4 recibido: " + elemento4);
Serial.println("Numero 5 recibido: " + elemento5);
Avisos datosVar;
{
Avisos Datos ;
datosVar.aVnumero1 = elemento1 ;
datosVar.aVnumero2 = elemento2 ;
datosVar.aVnumero3 = elemento3 ;
datosVar.aVnumero4 = elemento4 ;
datosVar.aVnumero5 = elemento5 ;
};
Serial.print("Esto se grabara en numero 1: "); Serial.print(datosVar.aVnumero1) ;
Serial.println("");
Serial.print("Esto se grabara en numero 2: "); Serial.print(datosVar.aVnumero2) ;
Serial.println("");
Serial.print("Esto se grabara en numero 3: "); Serial.print(datosVar.aVnumero3) ;
Serial.println("");
Serial.print("Esto se grabara en numero 4: "); Serial.print(datosVar.aVnumero4) ;
Serial.println("");
Serial.print("Esto se grabara en numero 5: "); Serial.print(datosVar.aVnumero5) ;
Serial.println("");
int eeAddress = 45;
EEPROM.put(eeAddress, datosVar);
Serial.println("Se han guardado los numeros!\n");
delay(5000);
Serial.println("Ahora leo la agenda!");
eeAddress = 45;
Avisos leoDatos;
EEPROM.get(eeAddress, leoDatos);
Serial.println("Agenda de administradores:\n");
Serial.print("Numero 1:"); Serial.println(leoDatos.aVnumero1);
Serial.print("Numero 2:"); Serial.println(leoDatos.aVnumero2);
Serial.print("Numero 3:"); Serial.println(leoDatos.aVnumero3);
Serial.print("Numero 4:"); Serial.println(leoDatos.aVnumero4);
Serial.print("Numero 5:"); Serial.println(leoDatos.aVnumero5);
Sim800l.delAllSms();
}