Hallo.
Ich lese über SPI eine Bytefolge ein, die in etwa so aussieht:
Byte 1: 0bZZZZXXXX (ZZZZ = Event, XXXX X-touch-point (11:8))
Byte 2: 0bXXXXXXXX (X-touch-point (7:0))
Byte 3: 0bWWWWYYYY (WWWW = ID, YYYY Y-touch-point (11:8))
Byte 4: 0bYYYYYYYY (Y-touch-point (7:0))
Super wär es, direkt auf die Daten (Event, X, ID und Y) zugreifen zu
können.
Folgende Datenstruktur hätte ich anfangs gedacht:
1 | // data type for touch point
|
2 | typedef union
|
3 | {
|
4 | struct __attribute__ ((packed))
|
5 | {
|
6 | WORD event : 4;
|
7 | WORD xcor : 12;
|
8 | WORD id : 4;
|
9 | WORD ycor : 12;
|
10 | };
|
11 | BYTE raw[4];
|
12 | } EP0430M06_TouchPoint;
|
Das geht aber nicht, da sich die Bits "falsch verteilen".
Auch wenn ich die Felder vertausche sind die Daten falsch:
1 | // data type for touch point
|
2 | typedef union
|
3 | {
|
4 | struct __attribute__ ((packed))
|
5 | {
|
6 | WORD xcor : 12;
|
7 | WORD event : 4;
|
8 | WORD ycor : 12;
|
9 | WORD id : 4;
|
10 | };
|
11 | BYTE raw[4];
|
12 | } EP0430M06_TouchPoint;
|
Kann man das irgendiwe in dieser Form lösen oder muss ich mir die Daten
nach dem Einlesen aufbereiten?
lg