Estoy usando un PIC32MX795F512H para configurar un módulo wifi RN-131 itinerante utilizando UART.
Puedo comunicarme con el dispositivo, pero quiero recibir información sobre si mis comandos se procesan o no.
Básicamente necesito verificar una cadena que devuelve el módulo WiFi. La primera vez que verifico, funciona, la segunda vez, ya no hace nada.
int connected()
{
char receiverbuffer[50];
char CMD[] = "CMD";
char AOK[] = "AOK";
int done = 0;
int connected = 0;
char str[250];
putsUART1("$$$");
memset(str,0,250*sizeof(char));
memset(receiverbuffer,0,50*sizeof(char));
while(!done)
{
while(U1STAbits.URXDA)
{
getsUART1(50, receiverbuffer, 123);
U1STAbits.URXDA = 0;
U1STAbits.OERR = 0;
sprintf(str, "%s%s", str, receiverbuffer);
memset(receiverbuffer,0,50*sizeof(char)); //Clears the buffer
}
if(!strcmp(str,CMD))
{
LATBbits.LATB7 = ~LATBbits.LATB7;
done = 1;
strcpy(str, "");
memset(str,0,250*sizeof(char));
}
}
done = 0;
putsUART1("show con\r\n");
while(!done)
{
while(U1STAbits.URXDA)
{
getsUART1(50, receiverbuffer, 123);
U1STAbits.URXDA = 0;
U1STAbits.OERR = 0;
sprintf(str, "%s%s", str, receiverbuffer);
memset(receiverbuffer,0,50*sizeof(char)); //Clears the buffer
}
if(!strcmp(str, CMD))
{
LATBbits.LATB7 = ~LATBbits.LATB7;
done = 1;
connected = 1;
memset(str,0,250*sizeof(char));
}
}
putsUART1("exit\r\n");
return connected;
}
Cualquier ayuda sería bienvenida. Creo que no estoy limpiando la cadena correctamente pero no tengo idea de por qué.