Autor Tema: Problemas con la sentencia IF  (Leído 1621 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Problemas con la sentencia IF
« en: 15 de Octubre de 2009, 17:16:18 »
Hola, estoy tratando de hacer una comparacion de una cadenas de caracteres recibidos a traves del Uart desde una PC, el problema es el siguiente:
Recibo correctamente los caracteres pero cuando trato de hacer la comparacion usando la siguiente rutina todas las condiciones se ejecutan a pesar de que solo uno de los tres condiciones se cumple, alguien me podria decir cual es mi error.

Código: [Seleccionar]
void Test_SMS_RX(){
    if ((cbuff[10]=='R')&& (cbuff[11]=='E') && (cbuff[12]=='L') && (cbuff[13]=='A')&& (cbuff[14]=='Y')&& (cbuff[15]=='-') && (cbuff[16]=='O') && (cbuff[17]=='N')){
delay_ms(100);
ON(RELAY);
break;
}

    if ((cbuff[10]=='R')&& (cbuff[11]=='R') && (cbuff[12]=='L') && (cbuff[13]=='A')&& (cbuff[14]=='Y')&& (cbuff[15]=='-') && (cbuff[16]=='O') && (cbuff[17]=='F')&& (cbuff[18]=='F')){
delay_ms(100);
OFF(RELAY);
break;
}

if ((cbuff[10]=='T')&& (cbuff[11]=='I') && (cbuff[12]=='M') && (cbuff[13]=='E')&& (cbuff[14]=='R')&& (cbuff[15]=='-') && (cbuff[16]=='O') && (cbuff[17]=='N')){
delay_ms(100);
ON (TIMER);
    break;
}
}

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problemas con la sentencia IF
« Respuesta #1 en: 15 de Octubre de 2009, 19:56:52 »
Hola.

Para que se te cumpla solo una:

Código: C#
  1. if(Condition1)
  2. {
  3.  //Code
  4. }
  5. else if (Condition2)
  6. {
  7.  
  8. }
  9. else if(Condition3)
  10. {
  11.  
  12. }

Para comparar cadenas es mejor usar strncmp();

Saludos

El papel lo aguanta todo

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Problemas con la sentencia IF
« Respuesta #2 en: 15 de Octubre de 2009, 20:08:05 »
Tres detalles:

- La segunda letra del comando relay Off está mal puesta.
- break solo se usa para terminar la ejecución del if pero no la de la función, reemplázala con return que termina la función.
- ¿Cada cuándo llamas la función Test_SMS_RX()? Si la llamas muy tarde mientras la cadena se está actualizando podrías tener resultados inesperados como la ejecución de los 3 IF's

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Problemas con la sentencia IF
« Respuesta #3 en: 16 de Octubre de 2009, 00:47:43 »
Gracias por la aclaracion  :mrgreen: