struct ueber RS232 senden
Verfasst: 21. Februar 2007 09:10
Ich bin Anfängerin mit QT und C++, darum meine Fragen werden immer trivial.
ich empfange diese struktur m_session und hier ist das Ergebniss in dezimal Form
012 255 089 001 045 181 018 000 166 002 000 000 und von dieser Werte in Binär-Form kann ich mein m_session nicht "wiederherstellen"
und sizeof(m_session)=12 WARUM???
Wenn ich umschreibe meine struct so:
dann ist sizeof(m_session)=8 so wie ich es erwarte. WARUM kommt zu diese Unterschiede? Wie wird Speicherplatz für mein struct allokiert??
und nach dem senden ich empfange die Werte auch in die richtige Ordnung
012 045 089 001 166 002 000 000
Die ersten 2 Bytes sind a und d , dann die anderen 2 Bytes 089 001
in binär form 101011001 ergibt 345 usw...
Also ist memcpy nicht gut für mein Problem...
Wie kopiere ich genau die Elemente einer struct in einem char *()?
Ich glaube ich verstehe nicht ein paar grundsätzliche Dinge...
DANKE für eure Hilfe?
Code: Alles auswählen
struct{
BYTE a;
WORD b;
BYTE d;
DWORD c;
}m_session;
char buffer[512];
m_session.a=12;
m_session.b=345;
m_session.d=45;
m_session.c=678;
memcpy(buffer,&m_session,sizeof(m_session));
m_serial->writeData(buffer,sizeof(m_session));012 255 089 001 045 181 018 000 166 002 000 000 und von dieser Werte in Binär-Form kann ich mein m_session nicht "wiederherstellen"
und sizeof(m_session)=12 WARUM???
Wenn ich umschreibe meine struct so:
Code: Alles auswählen
struct{
BYTE a;
BYTE d;
WORD b;
DWORD c;
}m_session;und nach dem senden ich empfange die Werte auch in die richtige Ordnung
012 045 089 001 166 002 000 000
Die ersten 2 Bytes sind a und d , dann die anderen 2 Bytes 089 001
in binär form 101011001 ergibt 345 usw...
Also ist memcpy nicht gut für mein Problem...
Wie kopiere ich genau die Elemente einer struct in einem char *()?
Ich glaube ich verstehe nicht ein paar grundsätzliche Dinge...
DANKE für eure Hilfe?