Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
 Registrieren
    Profil      Private Nachrichten   Login
Komplexer Struct byteweise füllen/Endianness

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Raffzz
Gast





BeitragVerfasst am: 11. Jun 2012 9:50   Titel: Komplexer Struct byteweise füllen/Endianness Antworten mit Zitat

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
 

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3469

BeitragVerfasst am: 13. Jun 2012 10:51   Titel: Antworten mit Zitat

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.
 
Benutzer-Profile anzeigen Private Nachricht senden

Raffzz
Gast





BeitragVerfasst am: 27. Jun 2012 16:04   Titel: Antworten mit Zitat

Cool, vielen Dank!
 

Beiträge vom vorherigen Thema anzeigen:   
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy