Estoy usando el compilador PIC18F2520
y C18
. Estoy tratando de comunicarme con SIM900. Estoy usando la interrupción para recibir datos. Entonces, cuando estoy enviando AT+CMGF?
SIM900 respuesta con +CMGF=1
. Estoy almacenando estos datos en un búfer dentro de ISR y luego llamo a una función para verificar.
void rx_handler(void)
{
Rx[k] = ReadUSART(); //read byte and save it in Rx
if(Rx[k]=='\r') //if carriage return is received, stop reading
{
LATCbits.LATC2=1; // turn on led to indicate we have received everything
process(); // call function to check the received data
}
k++; //increment k
}
void process()
{
if(strstr(Rx,"+CMGF:") != NULL) //if rx data contains +CMGF
{
UARTSend("Data Match");
}
else
{
UARTSend("Data not found");
}
memset(Rx,0,sizeof(Rx); //clear Rx
}
El problema al que me estoy enfrentando es que no coincide con los datos. Pero cuando detengo el depurador y veo el contenido de Rx
, muestra +CMGF: 1
. No sé por qué la función strstr
no funciona. También puedo verificar cada byte uno por uno, pero sería un proceso muy largo. ¿Alguien puede por favor decirme el error. Por favor ayuda.