Gracias por tu respuesta, si lo corregí porque tenes razón lo q pasa q a veces (por lo menos a mi me pasa, no se seguido pero..) le damos ok para enviar y seguimos viaje...claro se q es un error no chequear, pero bue en la vorágine de la búsqueda de la solución jajajaja pasa de todo..
a ver si te sigo, me pones el código y en una parte dice:
// **********************************************
// ESTO ES LO QUE ESTAS BUSCANDO
// No es mas facil usar la librería que ya lo hace?
// **********************************************
if(NULL != ( s = strstr(gprsBuffer,"+CMGR:"))){
// Extract phone number string
p = strstr(s,",");
p2 = p + 2; //We are in the first phone number character
p = strstr((char *)(p2), "\"");
if (NULL != p) {
i = 0;
while (p2 < p) {
phone[i++] = *(p2++);
}
phone[i] = '\0';
}
// Extract date time string
p = strstr((char *)(p2),",");
p2 = p + 1;
p = strstr((char *)(p2), ",");
p2 = p + 2; //We are in the first date time character
p = strstr((char *)(p2), "\"");
if (NULL != p) {
i = 0;
while (p2 < p) {
datetime[i++] = *(p2++);
}
datetime[i] = '\0';
}
if(NULL != ( s = strstr(s,"\r\n"))){
i = 0;
p = s + 2;
while((*p != '\r')&&(i < length-1)) {
message[i++] = *(p++);
}
message[i] = '\0';
}
return true;
}
return false;
}
.
eso pareciera que es para recuperar el numero de teléfono, y eso si lo hago con una de las funciones de la librería:
Sim800l.getNumberSms(1);
que pasa el numero de cel que envio el mensaje a una variable que uso mucho..ahora,
yo puse este código:
char inicio_clave;
char clave1;
char clave2;
char clave3;
char clave4;
String clave = "";
String destinationNumber = "";
void Receive_message_and_Phone_Number(){
char num0,num1,num2,num3,num4,num5,num6,num7,num8,num9,num10,num11,num12,num13;
char data;
int trama=0;
for(int i=0;i<=100;i++){
data=ctextSms;
/* Empezar a detectar el segmento contenedora del número telefónico
remitente de los datos de entrada. */
if((trama == 0) && (data == 'C')){
trama = 1;
destinationNumber = numberSms;
clave="";
}
// lectura de caracter espacio "M" seguido del caracter dos punto "C"
if((trama == 1) && (data == 'M')){
trama = 2;
}
if((trama == 2) && (data == 'G')){ // detecta el caracter "G".
trama = 3;
}
if((trama == 3) && (data == 'R')){ // detecta el caracter "R".
trama = 4;
}
if((trama == 4) && (data == ':')){ // detecta el caracter ":".
trama = 5;
}
if((trama == 5) && (data == ' ')){ // detecta el caracter " ".
trama = 6;
}
if((trama == 6) && (data == '"')){ // detecta el caracter """.
trama=7;
/* Empieza a capturar el número telefónico remitente a partir del
caracter "+" del tipo +593982832027 para Ecuador. */
num0 = Serial.read();
num1 = Serial.read();
num2 = Serial.read();
num3 = Serial.read();
num4 = Serial.read();
num5 = Serial.read();
num6 = Serial.read();
num7 = Serial.read();
num8 = Serial.read();
num9 = Serial.read();
num10 = Serial.read();
num11 = Serial.read();
num12 = Serial.read();
num13 = Serial.read();
destinationNumber += num0;
destinationNumber += num1;
destinationNumber += num2;
destinationNumber += num3;
destinationNumber += num4;
destinationNumber += num5;
destinationNumber += num6;
destinationNumber += num7;
destinationNumber += num8;
destinationNumber += num9;
destinationNumber += num10;
destinationNumber += num11;
destinationNumber += num12;
destinationNumber += num13;
if ((num1=='5')&&(num2 =='9')&&(num3=='3')){
/* Si el número de celular remitente es correcto
(código de país para Ecuador 593). */
destinationNumber = destinationNumber;}
else {
/* Número incorrecto, mantener número registrado por software.
Si el remitente no es un número celular o nacional. */
//destinationNumber = log_numeber;
}
// Lectura de clave o contraseña enviada por el remitente.
if((trama==6)&&(data=='#')){
trama = 0;
clave1=Serial.read();
clave2=Serial.read();
clave3=Serial.read();
clave4=Serial.read();
clave += clave1;
clave += clave2;
clave += clave3;
clave += clave4;
//contraseña correcta = 1234.
if ((clave1=='1')&&(clave2 =='2')&&(clave3=='3')&&(clave4=='4')) {
text="\nNumero no autorizado.";
error=Sim800l.sendSms(numberSms.c_str(),text);
error = Sim800l.delAllSms(); //Apaga SMS
EEPROM.put(0,numberSms.c_str());
EEPROM.get(0, Buffer_admin);
text="\nActualizando Admin Tel...";
error=Sim800l.sendSms(buffer_Admin,text);
//Serial.println("Actualizando Admin Tel...");
//Serial.println("Nuevo numero de admin:");
//Serial.println(buffer_EEPROM);
strcat( text1, "El nuevo numero aceptado es: ");
strcat( text1, buffer_Admin);
error=Sim800l.sendSms(buffer_Admin,text1);
error = Sim800l.delAllSms(); //Apaga SMS
}
else {
Serial.println(textSms);
//Serial.println("Su numero no esta autorizado.");
text="\nNumero no autorizado.";
error=Sim800l.sendSms(numberSms.c_str(),text);
error = Sim800l.delAllSms(); //Apaga SMS
}
}
//delay(1000); // tiempo necesario para recepción de datos.
}
}}
pero no logro adaptarlo...