Autor Tema: Assignment inside relational expression?  (Leído 4411 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Assignment inside relational expression?
« en: 16 de Mayo de 2008, 19:14:35 »
Saludos mi gente!
Fíjense que he estado haciendo una prueba con el modulo gps Earthmate y el pic... lo que quiero a la final es hacer una lectura del gps y procesar los datos recibidos para conocer la posición en la cuál estoy ubicado...
Entonces pensé en hacer algo así como un arreglo para guardar cada caracter de la sentencia NMEA y luego procesarlos...
La cosa es que no tengo mucha experiencia con los arreglos en C, así que bueno, he hecho varios programas pero no funcionan.

El código es así:

Código: C
  1. //////////////////////////////////////
  2. // Recibe del gps y envia al pc //
  3. //////////////////////////////////////
  4.  
  5. #include <16f876.h>
  6. #fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,NOBROWNOUT
  7. #define led PIN_C5
  8. #define Tx  PIN_C6
  9. #define Rx  PIN_C7
  10. #define Rg  PIN_C0
  11. #define DTR PIN_C1
  12. #use delay (CLOCK=20000000)
  13. #use rs232 (STREAM=GPS,BAUD=4800,RCV=Rg)
  14. #use rs232 (STREAM=PC,BAUD=19200,XMIT=Tx,RCV=Rx)
  15. #use fast_io(A)
  16. #use fast_io(B)
  17. #use standard_io(C)
  18.  
  19. void main(void)
  20. {
  21.    char cadena[80];
  22.    int  i;
  23.    setup_ccp1(CCP_OFF);
  24.    set_tris_a(0b11111111);
  25.    set_tris_b(0b11111111);
  26.    fputs("=====RECIBIDO DEL GPS=====",PC);
  27.    output_high(led);
  28.    while(TRUE)
  29.    {
  30.       for(i=0;i=79;i++)
  31.       {
  32.          output_high(DTR);
  33.          cadena[i]=fgetc(GPS);
  34.          fputc(cadena[i],PC);
  35.       }
  36.       output_low(DTR);
  37.       fputs("==SENTENCIA NMEA RECIBIDA==",PC);    
  38.    }
  39. }

Con este código el pic debería recibir 80 caracteres del gps y enviarlos al pc, y luego enviar el mensaje "==SENTENCIA NMEA RECIBIDA=="... pero nada... no lo hace... lo que hace es que manda continuamente las sentencias NMEA, de forma indefinida, como si no existiera el ciclo for.
Ahora bien, cuando compilo el ccs no da errores, pero me da el siguiente mensaje:

Executing: "C:\Program Files\PICC\Ccsc.exe" +FM "C:\Program Files\PICC\gps_2.c" +DF +LN +T +A +M +Z +Y=9 +EA
>>> Warning 201 "gps_2.c" Line 30(1,1): Assignment inside relational expression
      Memory usage:   ROM=3%      RAM=25% - 25%
      0 Errors,  1 Warnings.

No entiendo eso del "Assignment inside relational expression"... que me señala justamente al ciclo for... me parece que es allí donde está el error...  :shock:

Seguramente estoy cometiendo una burrada de novato, pero si pueden me gustaría me aclararan qué es lo que estoy haciendo mal...   :(

Espero y agradezco de antemano sus respuestas.
Nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Assignment inside relational expression?
« Respuesta #1 en: 16 de Mayo de 2008, 19:57:42 »
Ya lo he resuelto, si era una burrada  :D
Es que en el for se me olvidó colocar "i<=79", estaba colocando "i=79"...
Ahora si no me da ese "warning"...
Me queda volver a grabar el pic y probar a ver qué pasa...
Ok nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Assignment inside relational expression?
« Respuesta #2 en: 16 de Mayo de 2008, 20:15:47 »
Pues sí, funcionó lindo en la realidad!  :-/
A veces hago cada tontería que pa' qué les cuento... y cómo me hacen perder tiempo  :x
Bueno que más, es parte del aprendizaje... solo que algunos somos más brutos que otros  :D
Ok nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Re: Assignment inside relational expression?
« Respuesta #3 en: 16 de Mayo de 2008, 21:20:19 »
Hola firepic, la advertencia "Assignment inside relational expression" indica que has asignado un valor a una variable que esta sometida a una comparacion como en una sentencia if, for, while. Aunque esta asignación de valor a la variable a ser testeada es un procedimiento legal y permitido por CCS, la advertencia indica que probablemente el programador se equivoco y ha escrito una asignacion de valor cuando en realidad ha querido escribir una expresión de relación. Un error comun es por ejemplo escribir:

Código: [Seleccionar]
if(A = 3){ ;}
cuando en realidad habrás querido escribir

Código: [Seleccionar]
if(A == 3){ ;}
No te subestimes fire, el que no se equivoca nunca aprende, y no hay mas brutos que otros, simplemente gente que le gusta aprender y gente que no, no siempre el que mas se equivoca es el mas bruto, yo te diria que todo lo contrario.

Un saludo desde Argentina.
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Assignment inside relational expression?
« Respuesta #4 en: 16 de Mayo de 2008, 21:40:30 »
Gracias por tu respuesta Dr. Gonzalo!
Ahora la cosa me quedó más clara  :P
Ok nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web


 

anything