Pro-Linux.de

Pro-Linux

Pro-Linux Diskussions- und Hilfeforum
Aktuelle Zeit: 15. Dez 2018 7:57

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 11. Jun 2012 9:50 
Hallo

mich beschäftigt folgendes Thema: Ich habe in einem Code einen struct aus 8, 16 und 32 bit Variabeln. Diesen Code habe ich von einer Firma als Beispilcode erhalten für einen uC. Ich selbst prammiere die SW für Linux. Der beschriebene Struct wird mit Daten aus einer seriellen Schnittstelle gefüttert. Dazu wird ein 8bit-Pointer auf die genannte Struktur erzeugt und so mit den Daten der seriellen Schnittstelle gefüllt. Leider hat das bei mir gar nicht funktioniert. Den Grund habe ich schnell gefunden: little-endian und big-endian hat mir ein Schnippchen geschlagen!

Meine Frage: Wie programmiere ich das nun sauber, so dass es auf allen Systemen funktioniert? Die Daten kommen byteweise rein und wollen irgendwie auf einfache Art und Weise in den Struct geschrieben werden.

Ich freue mich auf Anregungen! Danke.

Raffzz


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 13. Jun 2012 10:51 
Offline
Benutzeravatar

Registriert: 11. Feb 2006 19:10
Beiträge: 3569
Dafür gibt es in C keinen automatischen Weg. Die Bedeutung der Datenfelder innerhalb der Struct übergibt der Compiler dem Programm nicht - warum auch, der kann ja einfach anhand der Quellen den richtigen Code dort einfügen, wo auf ein bestimmtes Feld in einer bestimmten Weise zugegriffen werden soll. So funktionieren auch Unions.

Führe nach dem Einlesen in das Gesamtfeld eine Endianess-Korrektur für jeden einzelnen Wert durch. Das kannst du mit be16toh() usw. tun. man endian.

Janka

_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 27. Jun 2012 16:04 
Cool, vielen Dank!


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de