Hi all,
Danke erst mal an Alle:
Also der Befehl radio.write() erwartet void* als Daten.
Wenn ich jetzt:
time_t stamp2 = time(NULL);
uint8_t stamp[4];
stamp[0] = (stamp2 >> 0)& 0xFF;
stamp[1] = (stamp2 >> 8)& 0xFF;
stamp[2] = (stamp2 >> 16)& 0xFF;
stamp[3] = (stamp2 >> 24)& 0xFF;
Dann passen die Bytes :-)
//Allerdings:
cout << "stamp: " << (unsigned long) *stamp << endl; // nur das erste Byte
cout << "stamp: " << (unsigned int) stamp << endl; // nur Adresse
//Jetzt bekomm ich:
radio.write( &stamp, 4); //sizeof(stamp)) ; // Also Adresse von stamp
// nix gscheids
Kann aber auch ein Fehler im µC-Prog sein!?
Bei:
uint8_t stamp[4];
*(unsigned long*)stamp = time(NULL);
cout << "stamp: " << *(unsigned long*)stamp << endl;
warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
So richtig, wie ich an den Speicherbereich bei Linux ran muss, weiß ich noch nicht?
Beim µC hab ich:
uint8_t data[32];
//..
// füll es
//..
// VCC
data[x] = 0x01; x++;
data[x] = analogValue & 0xFF; x++;
data[x] = (analogValue >> 8) & 0xFF; x++;
//.. usw
// SENSDEREI
radio.powerUp();
radio.write( data, sizeof(data) );
radio.powerDown();
das klappt ohne Probleme!?
Viele Grüße aus LA
ralphi
--
"Nicht alles was einfach ist, ist genial, aber alles was genial ist, ist einfach" - Albert E.
"Nicht alles was einfach ist, ist genial, aber alles was genial ist, ist einfach" - Albert E.