LINUX.ORG.RU

Джойстик Linux


0

2

Доброй ночи ЛОР. Без введений сразу к делу. Есть джойстик в виде штурвала,типа такого http://www.ulmart.ru/goods/530492?from=gmc_krasnodar&gclid=CNK9je3R770CFe... Вопрос, как использовать его показания в программе? Приложение на c++. Какой наиболее оптимальный и быстрый способ?

FAQ 1. Мне это надо. 2. Программа - не игра.

P.S Еще один вопрос. У меня в /dev/* много устройств. Например в момент времени t их кол-во k=181, а в момент времени t1 k =182. Как узнать имя файла, подключенного устройства?

Заранее благодарю.

Как использовать - не знаю, а узнать -
/dev/jsX
Если их много - по очереди cat /dev/jsX и дергать штурвал. Если есть выхлоп - это он самый.

NeverLoved ★★★★★
()

Вопрос, как использовать его показания в программе?

libsdl например

P.S Еще один вопрос. У меня в /dev/* много устройств. Например в момент времени t их кол-во k=181, а в момент времени t1 k =182. Как узнать имя файла, подключенного устройства?

libudev

exception13 ★★★★★
()
Ответ на: комментарий от NeverLoved

Спасибо, что так скоро ответили. Т.е. в лине нет лога, в котором указывается последнее подключенное устройство.

promistrio
() автор топика

узнать

Берешь udevadm, запускаешь его так:

# udevadm monitor --property

Подключаешь джойстик и смотришь на появившуюся простыню.

yars068 ★★★★
()
Ответ на: комментарий от yars068

Вот простыня.

udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[2264.490250] add      /devices/pci0000:00/0000:00:1a.0/usb1/1-2 (usb)
KERNEL[2264.494098] add      /devices/pci0000:00/0000:00:1a.0/usb1/1-2/1-2:1.0 (usb)
KERNEL[2264.512379] add      /devices/pci0000:00/0000:00:1a.0/usb1/1-2/1-2:1.0/0003:046D:C214.0003 (hid)
KERNEL[2274.513207] add      /devices/pci0000:00/0000:00:1a.0/usb1/1-2/1-2:1.0/input/input18 (input)
KERNEL[2274.513376] add      /devices/pci0000:00/0000:00:1a.0/usb1/1-2/1-2:1.0/input/input18/event15 (input)
KERNEL[2274.513393] add      /devices/pci0000:00/0000:00:1a.0/usb1/1-2/1-2:1.0/input/input18/js0 (input)
KERNEL[2274.513407] add      /devices/pci0000:00/0000:00:1a.0/usb1/1-2/1-2:1.0/0003:046D:C214.0003/hidraw/hidraw0 (hidraw)
UDEV  [2274.524998] add      /devices/pci0000:00/0000:00:1a.0/usb1/1-2 (usb)
UDEV  [2274.526980] add      /devices/pci0000:00/0000:00:1a.0/usb1/1-2/1-2:1.0 (usb)
UDEV  [2274.530044] add      /devices/pci0000:00/0000:00:1a.0/usb1/1-2/1-2:1.0/input/input18 (input)
UDEV  [2274.530625] add      /devices/pci0000:00/0000:00:1a.0/usb1/1-2/1-2:1.0/0003:046D:C214.0003 (hid)
UDEV  [2274.531277] add      /devices/pci0000:00/0000:00:1a.0/usb1/1-2/1-2:1.0/0003:046D:C214.0003/hidraw/hidraw0 (hidraw)
UDEV  [2274.533321] add      /devices/pci0000:00/0000:00:1a.0/usb1/1-2/1-2:1.0/input/input18/event15 (input)
UDEV  [2274.534048] add      /devices/pci0000:00/0000:00:1a.0/usb1/1-2/1-2:1.0/input/input18/js0 (input)

cat /dev/js0 не работает(устройств js вообще нет)

promistrio
() автор топика
Ответ на: комментарий от yars068

Но устройств становится на 1 больше. Файлов us* тоже не существует.

promistrio
() автор топика
Ответ на: комментарий от exception13

libsdl например

Не, не вариант. Я хочу нагло читать файл. В каком виде поступают данные? Короче велосипед нужен. Я на изучение библиотеки больше времени потрачу. Данные приходят по байтам, словам, или двойным словам? Что из себя представляют? Программа будет использоваться только на одном компьютере.

promistrio
() автор топика
Ответ на: комментарий от exception13

Мне нужно знать степень наклонения, какие кнопки нажаты и т.д. Следующий выхлоп будет от нажатия одной кнопки. В начале я нажимал и отпускал, а потом делал двойные нажатия (там где пробел)

�3�3�3�3H�3�3X�3 �3x�3H�3`�30��3�3��3P�3�3��3P�3�3��3(�3�3��3��3�3`�3��3�3�3�3h�3��3�3x�3��3�38�3�3X�3��3�30�3`�3��3�3�3(�3p�3��3�3(�3p�3��3h�3��3�3 �3

promistrio
() автор топика
Ответ на: комментарий от promistrio

cat /dev/js0 не работает

Надо найти симлинк, который ссылается на
/sys/чего-то-там/devices/pci0000:00/0000:00:1a.0/usb1/1-2/1-2:1.0/input/input18/js0
Eсли точно такого нет, надо правило нарисовать, чтобы udev создавал нужные симлинки и выставлял права, например, разрешал чтение-запись группе plugdev.

yars068 ★★★★
()
Ответ на: комментарий от yars068

Я же написал, что нашел выше. Спасибо. Он был в /dev/input/js0

promistrio
() автор топика

Если бы ls умел выводить список файлов в формате «один файл - одна строка», то я бы посоветовал сделать вывод в текстовые файлы, и diff/meld

ZenitharChampion ★★★★★
()
Ответ на: комментарий от ZenitharChampion
As
soon as any joystick is connected, it can be accessed in /dev/input
on: 

	crw-r--r--   1 root     root      13,   0 Apr  1 10:50 js0
	crw-r--r--   1 root     root      13,   1 Apr  1 10:50 js1
	crw-r--r--   1 root     root      13,   2 Apr  1 10:50 js2
	crw-r--r--   1 root     root      13,   3 Apr  1 10:50 js3
	...

And so on up to js31.

https://www.kernel.org/doc/Documentation/input/input.txt

false ★★★★★
()
Ответ на: комментарий от ZenitharChampion

чтоа? ты серьезно не вкурсе что ls разбивает на колонки только при выводе в терминал, и про ключ -1?

yunake@x230:~/src/tmp$ ls > /tmp/1
yunake@x230:~/src/tmp$ touch 2
yunake@x230:~/src/tmp$ ls > /tmp/2
yunake@x230:~/src/tmp$ diff /tmp/{1,2}
3a4
> 2
val-amart ★★★★★
()
Ответ на: комментарий от promistrio

Т.е. в лине нет лога, в котором указывается последнее подключенное устройство.

dmesg

Zhbert ★★★★★
()
18 декабря 2014 г.
Ответ на: комментарий от promistrio

Добрый день, присоеденяюсь к теме джоя, только задача другая: 1. Есть джой PCSX подсоеденненный к parport модуль gamecon все дела... 2. Есть /dev/input/js0 3. Есть удаленная машина БЕЗ ПАРАЛЕЛЬНОГО ПОРТА 4. Есть NETCAT передающий /dev/input/js0 по сети

Вопрос: на удаленной машине файл /dev/input/js0 появился, но эффекта нет, это просто файл (при тестах usb клаву схватил сразу) куда тыкать?

PROgrammeur
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.