Ich bin mir nicht sicher, ob dies der richtige Ort für diese Frage ist. Ich versuche, die Achsenpositionswerte von einem Joystick /dev/input/js0
auf meinem System zu erhalten. Wenn ich jstest /dev/input/js0
laufen lasse, gibt es mir Live-Feedback zu allen Tasten und Achsenpositionen. Ich versuche, diese Informationen in mein C-Programm einzugeben, um Servos zu steuern. Gibt es dafür eine Funktion? Ich habe nicht viel mit Eingabegeräten in der Programmierung gearbeitet, also ist das alles neu für mich. Jede Hilfe wird sehr geschätzt.Erhalten von Live-Informationen von/dev/input
6
A
Antwort
2
Diese Seite: http://scaryreasoner.wordpress.com/2008/02/22/programming-joysticks-with-linux/ hat eine nette Zuschreibung, wie die Informationen zu lesen, von/dev/input/js0
Das Format der Ereignisse, die Sie aus der Datei lesen hier dokumentiert ist: https://www.kernel.org/doc/Documentation/input/input.txt. Es ist eine einfache Struktur einen Zeitstempel, den Ereignistyp und Kennung und den Wert enthält:
struct input_event {
struct timeval time;
unsigned short type;
unsigned short code;
unsigned int value;
};
2
Sie können diese python code laufen Ereignisse zu lesen.
Sie können auch ein High-Level-Modul python-evdev verwenden.
#!/usr/bin/env python
import struct
infile_path = "/dev/input/js0"
EVENT_SIZE = struct.calcsize("llHHI")
file = open(infile_path, "rb")
event = file.read(EVENT_SIZE)
while event:
print(struct.unpack("llHHI", event))
(tv_sec, tv_usec, type, code, value) = struct.unpack("llHHI", event)
event = file.read(EVENT_SIZE)
Beispielausgabe:
(73324490, 8454144, 55242, 1118, 25231360)
(73324490, 42008576, 55242, 1118, 58785792)
(73324490, 75563008, 55242, 1118, 92340224)
(73324490, 109117440, 55242, 1118, 125894656)
(73324490, 142671872, 55242, 1118, 159449088)
(73324490, 176226304, 55242, 1118, 193003520)
(73324490, 209780736, 55242, 1118, 226557952)
(73324490, 243335168, 55242, 1118, 8519680)
(73324490, 25296896, 55242, 1118, 42074112)
(73324490, 58884097, 55242, 1118, 75661313)
(73324490, 92405760, 55242, 1118, 109215745)
(73324490, 125992961, 55242, 1118, 142737408)
(73324490, 159514624, 55242, 1118, 176324609)
(73327790, 84041474, 58542, 1118, 84049919)
(73328030, 84044852, 58782, 1118, 84017152)
(73331790, 33749013, 62542, 1118, 33742256)
(73331790, 33736851, 62562, 1118, 33731108)
(73331830, 33723339, 62602, 1118, 33718273)
(73332090, 33723339, 62862, 1118, 33685504)