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)
Другие вопросы по тегам