Seite 1 von 1
hilfe bei der benutzung von struct
Verfasst: Mittwoch 14. Januar 2009, 11:06
von Costi
ich will daten meines openmoko freerunner touchscreens auslesen
mit:
Code: Alles auswählen
import struct
fmt = 'iiIll'
size = struct.calcsize(fmt)
f = file('/dev/input/touchscreen0', 'rb')
while True:
read = f.read(size)
print struct.unpack(fmt, read)
bekomme ich falsche daten
was mache ich falsch?
Code: Alles auswählen
struct ts_sample {
int x;
int y;
unsigned int pressure;
struct timeval tv;
};
typedef struct timeval {
long tv_sec;
long tv_usec;
} timeval;
danke!
Verfasst: Mittwoch 14. Januar 2009, 11:23
von rayo
Hi
Ich rate nur mal ... probier mal folgende struct-formate:
Gibt eines die richtigen Daten?
Sind einfach verschienede Byteorder und Alignings.
Ich würde dir aber
pyconstruct nahelegen, da man damit einfach Daten parsen kann.
Gruss
Verfasst: Mittwoch 14. Januar 2009, 15:32
von Costi
hab ich auch schon ausprobiert...., ging nicht
pyconstruct scheint ganz interessant zu sein, ist aber fuer diesen einsatzweck voellig overkill
Verfasst: Mittwoch 14. Januar 2009, 15:47
von rayo
Stimmen denn die Daten ungefähr?
Also mach mal
Gruss
Verfasst: Donnerstag 15. Januar 2009, 13:07
von Costi
Code: Alles auswählen
root@om-gta02:~# python touchscreen.py
Traceback (most recent call last):
File "touchscreen.py", line 12, in <module>
print read.encode('hex')
LookupError: no codec search functions registered: can't find encoding
vieleicht kannst du mir "print repr(read)" was anfangen?
Code: Alles auswählen
root@om-gta02:~# python touchscreen.py
'\xc2\x88mI<o\x02\x00\x03\x00\x00\x00\xd8\x01\x00\x00\xc2\x88mI'
========
'eo\x02\x00\x03\x00\x01\x00\x1e\x02\x00\x00\xc2\x88mImo\x02\x00'
========
'\x01\x00J\x01\x01\x00\x00\x00\xc2\x88mIso\x02\x00\x03\x00\x18\x00'
========
'\x01\x00\x00\x00\xc2\x88mIyo\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00'
========
'\xc2\x88mI~o\x02\x00\x01\x00J\x01\x00\x00\x00\x00\xc2\x88mI'
========
'\x83o\x02\x00\x03\x00\x18\x00\x00\x00\x00\x00\xc2\x88mI\x88o\x02\x00'
========
'\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x88mI\x1c\xf8\x02\x00\x03\x00\x00\x00'
========
'\xe9\x01\x00\x00\xc2\x88mI1\xf8\x02\x00\x03\x00\x01\x00\x1b\x02\x00\x00'
========
'\xc2\x88mI8\xf8\x02\x00\x01\x00J\x01\x01\x00\x00\x00\xc2\x88mI'
========
'=\xf8\x02\x00\x03\x00\x18\x00\x01\x00\x00\x00\xc2\x88mIB\xf8\x02\x00'
========
'\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x88mI2F\x03\x00\x03\x00\x00\x00'
========
'\xd5\x01\x00\x00\xc2\x88mIIF\x03\x00\x03\x00\x01\x00\x0e\x02\x00\x00'
========
'\xc2\x88mIQF\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x88mI'
========
'S\x94\x03\x00\x03\x00\x00\x00\xff\x01\x00\x00\xc2\x88mIi\x94\x03\x00'
<snipp>
Verfasst: Donnerstag 15. Januar 2009, 14:03
von rayo
Hi
Bist du sicher dass aus dem Device wirklich diese structs herauskommen?
Wie gross sind die Datentypen int und long auf openmoko? Auch 32Bits?
Die Folge \xc2\x88mI kommt immer wieder vor, ich nehme mal an das koennte nicht sein wenn du immer wieder woanders geklickt hast.
Irgendwie siehts aus als waere das ganze nur 16Byte gross und nicht 20 (\xc2\x88mI sieht aus wie ein Header, etwas konstantes sollte es ja nicht geben bei den klicks oder?)
Gruss