Sto provando a convertire la seguente struttura in un array di caratteri in modo che possa essere inviata tramite la porta seriale.Conversione di una struttura in un array di car usando memcpy
struct foo
{
uint16_t voltage;
char ID ;
char TempByte;
char RTCday[2];
char RTCmonth[2];
char RTCyear[2];
char RTChour[2];
char RTCmin[2];
char Sepbyte;
}dvar = { 500, 'X' , '>' , "18" , "10" , "15" , "20" , "15" , '#'};
ho quindi convertirlo in un array di caratteri utilizzando il seguente:
char b[sizeof(struct foo)];
memcpy(b, &dvar, sizeof(struct foo));
Tuttavia, per qualche motivo ottengo questi valori finali della matrice char
0x0A 0xFF
all'inizio ho pensato che stava ottenendo i valori perché quando l'ho lanciato in un array di caratteri era effettivamente il casting su una stringa, quindi ho pensato che fosse NULL '\ 0'
Qualsiasi aiuto sarà apprezzato.
Grazie
Non vedo dove è la struttura 'datadownload' e qual è la dimensione di esso – Gopi
Cosa intendi per" valori finali "? Come si esamina il contenuto dell'array? E stai programmando C o C++? La semantica potrebbe essere diversa. Su una nota non correlata, hai comunque pensato di usare un sindacato? –
http://stackoverflow.com/questions/119123/why-isnt-sizeof-for-a-struct-equal-to-the-sum-ofsizeof-of-each-member – Lundin