Я не уверен, что это подходящее место для этого вопроса. Я пытаюсь получить значения положения оси от джойстика /dev/input/js0
в моей системе. Если я запустил jstest /dev/input/js0
, он даст мне прямую обратную связь по всем кнопкам и положениям осей. Я пытаюсь передать эту информацию в мою программу C для управления сервомоторами. Есть ли функция для этого? Я не очень много работал с устройствами ввода в программировании, поэтому для меня это совсем не ново. Любая помощь приветствуется.Получение информации о реальном времени с/dev/input
6
A
ответ
2
Эта страница: http://scaryreasoner.wordpress.com/2008/02/22/programming-joysticks-with-linux/ имеет хорошую рецензию о том, как читать информацию из/Dev/вход/js0
Формат событий, считанных из файла документированной здесь: https://www.kernel.org/doc/Documentation/input/input.txt. Это простая структура, содержащая метку времени, тип события и идентификатор и значение:
struct input_event {
struct timeval time;
unsigned short type;
unsigned short code;
unsigned int value;
};
2
Вы можете запустить этот python code читать события.
Вы также можете использовать модуль высокого уровня python-evdev.
#!/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)
Пример вывода:
(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)