Es que si estoy conciente de que no entra al segundo if pero la verdad no sé porque, eh estado investigando para trata de hacerlo por mi cuenta(solucionar el error) pero la verdad sigo en comprender el porque hace eso.
Mirando el código
if (UART1_Data_Ready() == 1) //Se vuelve a leer la entrada
{
recive[i]=UART1_Read(); // Guardamos el valor o caracter
UART1_Read_Text(recive,".",11); // Leer el dato hasta que encuentre un "." o termine de leer los
if(recive[0]=='S' && recive[1] == 'V' && recive[2]=='d' && recive[3]=='c')
Responde estas preguntas...
- ¿Qué pasaría si yo envío el texto "SVdc." desde la PC? ¿La 'S' esta en recive[0] ? ¿ Que seguridad tengo que siempre este en la posición 0 ?
- ¿Qué pasaría si detrás del . existen otros caracteres como el salto de linea y el retorno de carro? es decir "SVdc.\n\r"
- ¿Qué pasaría si justamente debido a otros caracteres extras tengo algo asi: "\n\rSVdc.\n\r"?
- Mientras envías, en tu función "bloqueante", y mientras convertis valores float a string, perdes tiempo, tiempo en que puede estar recibiéndose caracteres y ocurrir un overflow, donde supongamos perdiste el "SV" y llego solo "dc." ¿Cómo te proteges ante este problema?
- Supongamos que ocurre también el caso anterior, y envias varias veces el "dc.SVdc.SVdc.", El carácter 'S' queda en la posición 0?
La respuestas a estas preguntas son las que van a hacer que te plantees para que funcione correctamente