Forum: Mikrocontroller und Digitale Elektronik Arduino I2C Struct senden


von Jannus (Gast)


Lesenswert?

Hallo,

ich würde gerne mit einem arduino per I2C ein struct senden. Die 
KOmmunikation steht und das senden eines einzelnen Bytes funktioniert 
auch einwandfrei.
Wie aber kann ich ein ganzes Sruct senden? Es enthält 3 Variablen vom 
Typ uint32_t.
Die Daten werden vom Slave gesendet. Das heißt ich fordere diese vom 
master aus mit der Funktion Wire.requestFrom(address, quantity) an. 
Leider bekomme ich sobald ich für quantity den Wert 2 für einen 16-Bit 
Integer angebe bekomme ich allerdings falsche werte. Für das genannte 
Besipiel mit dem struct ebenfalls.

Hoffe jemand kann mir weiterhelfen, oder hat vllt sogar einen 
Beispielcode

von Ulrich F. (Gast)


Lesenswert?


von Joachim B. (jar)


Lesenswert?

versuchs mal mit byte senden von Adresse des struct bis struct ende 
sizeof und dort in einem Puffer der groß genug für das struct ist und 
diese Startadresse ist dann dein empfangenes struct, ich hoffe das im 
struct alle bytes hintereinander liegen, habe es aber nie geprüft, 
könnte man ja mal machen.

von Ulrich F. (Gast)


Lesenswert?

Nachtrag:
Es macht keinen Sinn den Code geheim zu halten.
Denn, geheim gehaltene Fehler sehen wir nicht.

von Wolfgang (Gast)


Lesenswert?

Jannus schrieb:
> ich würde gerne mit einem arduino per I2C ein struct senden.

I2C kennt nur Bytes.

Du wirst die Bytes, die die Daten deines structs enthalten, fein 
säuberlich nacheinander übertragen müssen und es ist dann das Problem 
des Empfängers, die eintreffenden Bytes wieder abzulegen und als struct 
zu interpretieren.

von Ulrich F. (Gast)


Lesenswert?

Die Arduino I2C Lib kann Daten Pakete senden.
Es gibt da allerdings die ein oder andere Stolperfalle.

von Schupp (Gast)


Lesenswert?

Google "Struct to Byte in C", alles Volltreffer!

von Jannus (Gast)


Lesenswert?

Danke für eure Antworten. Ich werde eure Vorschläe versuchen umzusetzen 
und werde die Lösung dann zeitnah hier Präsentieren

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.