python: чтение с устройства USB HID
У меня есть устройство USB RFID, которое появляется в /dev/hidraw, для моих последовательных устройств они появляются в /dev/ttyUSB* Я использовал pyserial, и он работает как шарм, но для этого я не смог прочитать с него, используя cat /dev/hidraw0
нужны права суперпользователя плюс мне нужно прочитать одну строку и не продолжать слушать
Я использовал библиотеку evdev, но мое устройство вообще не отображается:
import evdev
devices = [evdev.InputDevice(fn) for fn in evdev.list_devices()]
for device in devices:
print(device.fn, device.name, device.phys)
Так есть ли правильный способ читать с устройства программно?
1 ответ
По умолчанию evdev.list_devices() смотрит только в /dev/input
И вам нужны разрешения для работы с вашим устройством. Вы можете добавить своего пользователя в группу, которой принадлежит ваше устройство (см. $ Ls -l /dev/hidraw0)
Тогда вам нужно слушать ваше устройство в цикле
#!/usr/bin/python3
import evdev
devices = [evdev.InputDevice(fn) for fn in evdev.list_devices()]
for device in devices:
print(device.fn, device.name, device.phys)
device = evdev.InputDevice("/dev/input/event4")
print(device)
for event in device.read_loop():
print(event)