Forum: Compiler & IDEs struct exportieren


von Klaus W. (Firma: privat) (texmex)


Lesenswert?

Hallo!

Ich möchte für das Debugging den Inhalt einer Struktur von einem 
Programm in einem Controller auf den Host übertragen.
Bislang hatte ich die interessanten Daten einfach über eine software 
USART mit etwas Text drumrum gesendet.
Dafür ist aber jetzt kein Platz mehr im Controller und ich würde lieber 
die komplette Struktur bitweise an den Host senden und dort auswerten.

Gehe ich recht in der Annahme, dass man nicht sicherstellen kann, dass 
der Compiler auf dem Host die struktur genauso zusammenbaut wie der für 
den Controller? Von so Byteorder Sachen ganz abgesehen...
Also vermutlich kann ich nicht einfach in einer Schleife Byteweise die 
Daten senden?

Aber wie macht man dann sowas?

Ich will ja nicht jedes Feld in der Struktur einzeln senden....

An eine union hatte ich schon mal gedacht, aber das ändert ja am Prinzip 
auch nichts.

Viele Grüße,
Klaus

von Jörg G. (joergderxte)


Lesenswert?

Schau nach, wie der Compiler für deinen µC das struct aufbaut, schick es 
byteweise und lass den PC es wieder zurecht fummeln - der hat die 
Leistung und die Zeit dazu.

hth, Jörg

von Klaus W. (Firma: privat) (texmex)


Lesenswert?

Jörg G. schrieb:
> Schau nach, wie der Compiler für deinen µC das struct aufbaut, schick es
> byteweise und lass den PC es wieder zurecht fummeln - der hat die
> Leistung und die Zeit dazu.

Ja, so hätte ich das jetzt gemacht. Ich hatte gehofft es gäbe einen 
etwas eleganteren Weg.
Aber ok :-).
Danke!

viele Grüße,
Klaus

von der mechatroniker (Gast)


Lesenswert?

Eleganterer Weg: beim Aufbau der Struktur drauf achten, dass alles schön 
alignt ist, dann sollten alle Compiler dasselbe draus machen, 
vorausgesetzt, die Endianess stimmt (ggf. auf dem PC drehen).

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.