Probleme mit Wire.h

Hallo,
ich nutzte IDE 1.8.5 und Wire.h und tausche über I2C Daten mit einem Python-Programm auf einem Raspi aus.

Byte und String sind kein Problem, Integer und Long sind abhängig vom Wert.

Ich möchte z.B. Werte einer long Variabe übertragen. Vom Raspi zum Arduino kommt alles korrekt an.
Vom Arduino zum Raspi nur dann, wenn alle 4 Byte ungleich 0x00 sind, sonst werden nur die Bytes davor übertragen.

Ich denke, dass liegt an der Write-Anweisung. Gibt es Alternativen oder kann ich die Daten anders aufbereiten um das zu umgehen?

Beispiele:Arduino -> Raspi

0x04:03:02:01   0x04:03:02:01 (ok)
0x04:03:02:00   0x04:03:02:FF (falsch)
0x04:03:00:01   0x04:03:FF:FF (falsch)
0x04:00:02:01   0x04:FF:FF:FF (falsch)
0x00:03:02:01   0x00:FF:FF:FF (falsch)
void sendData1(char *c) {Wire.write(c);}

0x00 ist die Endemarkierung einer Zeichenkette und wird daher nicht mit übertragen. Der Typ char dürfte unglücklich gewählt sein.

Mache lieber Wire.write(data, sizeof(long)). Siehe #3!

Danke, manchmal verrennt man sich so, dass man nicht auf das naheliegendst kommt.

Der Typ char dürfte unglücklich gewählt sein.

Mache lieber Wire.write(data, sizeof(long)).

Der Typ war char* (nicht char) und ja, auf den Datentyp kommt es ganz wesentlich an.

agmues Tip wäre so etwas richtiger:

long data = 0x01000200;
Wire.write((byte*)&data, sizeof(data));

Danke, macht es noch einfacher.

@michael_x: Danke für die Korrektur.