24-06-2021, 17:50
Hola:
Estoy haciendo un programa en Cpp el cual ya compilado se carga en un microcontrolador.
El uC recibirá un pack de datos (22,34,34,176,90,20,60,0) que se definen de la siguiente manera:
#define dato0 recibe[0]
#define dato1 recibe[1]
#define dato2 recibe[2]
#define dato3 recibe[3]
#define dato4 recibe[4]
#define dato5 recibe[5]
#define dato6 recibe[6]
#define dato7 recibe[7]
int8 recibe[8]; // Éste es el Pack
Justo después de recibir el pack, se envía el mismo a una PC vía Serial (RS-232) en modo Bytes
(no string) de la siguiente manera:
putc(recibe[]);
Y en la PC, usando CuteCom en modo HEX como Software Serial, se recibe el pack como:
[0x16][0x22][0x22][0xB0][0x5A][0x14][0x3C][0x00]
Lo cual es correcto.
Pero si en vez de enviar recibe[], mando uno a uno sus componentes:
putc(dato0);
putc(dato1);
putc(dato2);
putc(dato3);
putc(dato4);
putc(dato5);
putc(dato6);
putc(dato7);
Recibo lo siguiente, que no es lo esperado:
[0x16][0x00][0x00][0x00][0x00][0x00][0x00][0x00]
[0x22][0x00][0x00][0x00][0x00][0x00][0x00][0x00]
[0x22][0x00][0x00][0x00][0x00][0x00][0x00][0x00]
[0xB0][0x00][0x00][0x00][0x00][0x00][0x00][0x00]
[0x5A][0x00][0x00][0x00][0x00][0x00][0x00][0x00]
[0x14][0x00][0x00][0x00][0x00][0x00][0x00][0x00]
[0x3C][0x00][0x00][0x00][0x00][0x00][0x00][0x00]
[0x00][0x00][0x00][0x00][0x00][0x00][0x00][0x00]
Lo cual provoca que mi proyecto no funcione, por el "exceso" de datos extras que vienen con
cada dato0,1,...7.
Admito que me cuesta trabajo entender los arreglos, porque tal parece que:
recibe[0] está compuesto por dato0[0], dato0[1], ......dato0[7]
recibe[1] está compuesto por dato1[0], dato1[1], ......dato1[7]
y así todos los demás.
De todos modos mando mi código completo en Cpp por si alguien tiene una idea de cómo solucionarlo.
Gracias.
Estoy haciendo un programa en Cpp el cual ya compilado se carga en un microcontrolador.
El uC recibirá un pack de datos (22,34,34,176,90,20,60,0) que se definen de la siguiente manera:
#define dato0 recibe[0]
#define dato1 recibe[1]
#define dato2 recibe[2]
#define dato3 recibe[3]
#define dato4 recibe[4]
#define dato5 recibe[5]
#define dato6 recibe[6]
#define dato7 recibe[7]
int8 recibe[8]; // Éste es el Pack
Justo después de recibir el pack, se envía el mismo a una PC vía Serial (RS-232) en modo Bytes
(no string) de la siguiente manera:
putc(recibe[]);
Y en la PC, usando CuteCom en modo HEX como Software Serial, se recibe el pack como:
[0x16][0x22][0x22][0xB0][0x5A][0x14][0x3C][0x00]
Lo cual es correcto.
Pero si en vez de enviar recibe[], mando uno a uno sus componentes:
putc(dato0);
putc(dato1);
putc(dato2);
putc(dato3);
putc(dato4);
putc(dato5);
putc(dato6);
putc(dato7);
Recibo lo siguiente, que no es lo esperado:
[0x16][0x00][0x00][0x00][0x00][0x00][0x00][0x00]
[0x22][0x00][0x00][0x00][0x00][0x00][0x00][0x00]
[0x22][0x00][0x00][0x00][0x00][0x00][0x00][0x00]
[0xB0][0x00][0x00][0x00][0x00][0x00][0x00][0x00]
[0x5A][0x00][0x00][0x00][0x00][0x00][0x00][0x00]
[0x14][0x00][0x00][0x00][0x00][0x00][0x00][0x00]
[0x3C][0x00][0x00][0x00][0x00][0x00][0x00][0x00]
[0x00][0x00][0x00][0x00][0x00][0x00][0x00][0x00]
Lo cual provoca que mi proyecto no funcione, por el "exceso" de datos extras que vienen con
cada dato0,1,...7.
Admito que me cuesta trabajo entender los arreglos, porque tal parece que:
recibe[0] está compuesto por dato0[0], dato0[1], ......dato0[7]
recibe[1] está compuesto por dato1[0], dato1[1], ......dato1[7]
y así todos los demás.
De todos modos mando mi código completo en Cpp por si alguien tiene una idea de cómo solucionarlo.
Gracias.
Es mejor saber un poco de todo, que todo de muy poco. Lo primero, garantiza la supervivencia humana.