PIC32 lee los comentarios de UART

1

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é.

    
pregunta Delusion

0 respuestas

Lea otras preguntas en las etiquetas