Witam,
dzisiaj stanąłem na wydawałoby się prostej sprawie.
Jest sobie bufor, do którego pobieram pewne dane bajt po bajcie.
Następnie te dane chcę przekazać do wcześniej zadeklarowanej struktury.
Elementy struktury są typu long, czyli dla AVR 4 bajty.
Uproszczony kod wygląda mniej więcej tak:
I nic z tego nie wychodzi. Zamiast spodziewanego wyniku 44332211 Hex, otrzymuję 00000011 Hex.
Wydawało mi się, że takie rzutowanie zadziała i do struktury pobrane zostaną kolejne cztery bajty z bufora. Jest jednak inaczej. Gdzie popełniam błąd ??
Andrzej.
dzisiaj stanąłem na wydawałoby się prostej sprawie.
Jest sobie bufor, do którego pobieram pewne dane bajt po bajcie.
Następnie te dane chcę przekazać do wcześniej zadeklarowanej struktury.
Elementy struktury są typu long, czyli dla AVR 4 bajty.
Uproszczony kod wygląda mniej więcej tak:
#include <mega32.h>
#include <stdio.h>
void main(void)
{
struct _test
{
unsigned long dana;
};
struct _test test;
char bufor[10];
//wypełniamy bufor
bufor[0]=0x11;
bufor[1]=0x22;
bufor[2]=0x33;
bufor[3]=0x44;
//kopiujemy do struktury
test.dana=(unsigned long)bufor[0];
printf("test:%08X\n\r",test.dana);
}
I nic z tego nie wychodzi. Zamiast spodziewanego wyniku 44332211 Hex, otrzymuję 00000011 Hex.
Wydawało mi się, że takie rzutowanie zadziała i do struktury pobrane zostaną kolejne cztery bajty z bufora. Jest jednak inaczej. Gdzie popełniam błąd ??
Andrzej.
