Y misteriosamente que es lo que recibo por consola ????? pues esto...... tachan !!!
ff 02 04 06 56 02 03 21 c1 07 62 01 0e
¿De donde leches saca el PIC los últimos valores?
He visto cosas raras, pero a esto no le veo absolutamente ninguna explicación.
Editado por Nocturno: he modificado el mensaje para poner el código en formato C, porque salía en cursiva y se perdía info.
Título: Re: Las cosas raras del compilador ¿A alguien le ha ocurrido?
Publicado por: Sispic en 06 de Marzo de 2008, 18:08:49
Quizas las constantes en flash ocupen dos bytes
Código: C++
for(i=0;i <strlen(consAck_rs232)/2; i++){
Título: Re: Las cosas raras del compilador ¿A alguien le ha ocurrido?
Publicado por: RedPic en 06 de Marzo de 2008, 18:14:23
Lo mas probable es que strlen() cuente los caracteres desde el primero hasta el primer NULL ó '\0' ó 0x00 que se encuentre y que éste sea el posterior al valor 0e.
Coloca char consAck_rs232[8] ={0xFF 0x02 0x04 0x06 0x56 0x02 0x03 0x00}; y prueba de nuevo ...
ó haz el bucle for(i=0;i<7;i++).
De todas formas puedes tener problemas debido a que son constantes.
Puedes también usar sizeof(consAck);
Título: Re: Las cosas raras del compilador ¿A alguien le ha ocurrido?
Publicado por: jfh900 en 06 de Marzo de 2008, 19:46:07
Premio para don Diego.
La función StrLen mide cadena y una cadena siempre termina en cero (\0), como tu cadena de caracteres no termina en cero, pues sigue enviando caracteres.
Por contra SizeOf devuelve la longitud del objeto en memoria, en este caso es válido por que cada caracter ocupa un byte osease coincide el tamaño del objeto con el espacio ocupado en memoria.
Por cierto lo que has echo es un puntero descontrolado, en Windows eso te hubiera originado una bonita ventana azul con el mensaje "Excepción grave...."
Un saludo
Título: Re: Las cosas raras del compilador ¿A alguien le ha ocurrido?
Publicado por: jnavarro en 06 de Marzo de 2008, 19:48:57
Hay que ver las cosas con las que se encuentra uno, nunca te aocstarás sin saber algo más :)
Bueno pues mañana en llegar probaré con el SizeOf.
Gracias por contestar !! Salu2 :-/
Título: Re: Las cosas raras del compilador ¿A alguien le ha ocurrido?
Publicado por: RedPic en 07 de Marzo de 2008, 04:00:34
¡¡¡ Mis felicitaciones Don Diego !!! Has dado a la primera, es exactamente eso. :-/
Título: Re: Las cosas raras del compilador ¿A alguien le ha ocurrido?
Publicado por: RICHI777 en 10 de Marzo de 2008, 11:45:15
Otra manera usando el strlen hubiese sido declarando el array de la siguiente manera: char consAck_rs232[] ="\xFF\x02\x04\x06\x56\x02\x03"; El array al estar encerrado entre "" le asigna automaticamente el NULL al final. Saludos
Título: Re: Las cosas raras del compilador ¿A alguien le ha ocurrido?
Publicado por: jfh900 en 10 de Marzo de 2008, 13:47:14
Claro, estas declarando una cadena y en "C" todas las cadenas se terminan con "0x00".
Un saludo
Título: Re: Las cosas raras del compilador ¿A alguien le ha ocurrido?
Publicado por: RICHI777 en 10 de Marzo de 2008, 14:08:49
Como comentario final, el uso del sizeof genera código mas optimo, ya que el indice se resuelve en tiempo de compilación, por el contrario el uso del srtlen y cadena hace mas prolija la definicion,ya que no tengo que acordarme el NULL. Saludos ! PD. Ahora deberiamos cambiar el titulo del post y poner "Las cosas raras del programador" jejeje es un chiste :P