Donnerstag, Mai 28, 2020

python :Lesen von einem USB-HID-Gerät

Ich habe ein USB-RFID-Gerät, das auf /dev/hidraw
für meine seriellen Geräte, die Sie erscheinen auf /dev/ttyUSB* habe ich verwendet, pyserial und es funktioniert wie Charme, aber hier konnte ich nicht Lesen, es mit cat /dev/hidraw0 root-Rechte benötigt
plus brauche ich zum Lesen einer Zeile und nicht zu halten auf hören

Ich verwendet evdev-Bibliothek, aber mein Gerät scheint nicht bei allen :

import evdev
devices = [evdev.InputDevice(fn) for fn in evdev.list_devices()]
for device in devices:
    print(device.fn, device.name, device.phys)

So gibt es eine richtige Weg, um aus dem Gerät gelesen programmgesteuert ?

  • Deine Frage ist schwer zu Lesen. Haben Sie einen Blick auf pyusb (natürlich müssen Sie noch die Zugriffsrechte auf das Gerät).
  • Wenn cat /dev/hidraw0 können es nicht sehen, es klingt nicht gut: haben Sie möglicherweise ein defektes Gerät. Zeigt es, wenn lsusb im terminal? Überprüfen Sie auch dmesg | tail nachdem Sie es anschließen. Beachten Sie, dass, auch wenn lsusb sehen können, dass es nicht unbedingt bedeuten, dass Sie tatsächlich tun können, etwas sinnvolles mit dem Gerät. Aber wenn lsusb nicht sehen kann, ist es wahrscheinlich tot.
  • ich kann Lesen, mit der Katze funktionieren, aber es braucht root-Berechtigung gibt es eine Möglichkeit, zu Lesen als normaler Benutzer ?

1 Kommentar

  1. 3

    Durch Standard evdev.list_devices() schauen nur auf /dev/input

    Und Sie benötigen Berechtigungen zum arbeiten mit dem Gerät. Sie können fügen Sie Ihren Benutzer zu der Gruppe, die Ihr Gerät besitzen (siehe $ ls -l /dev/hidraw0 )

    Dann müssen Sie zu hören Sie Ihre Gerät in der Schleife, die

    #!/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)
    • Ich angeschlossen mein Beurere BC 58 zum raspberry pi von 3 an und sah das Gerät wird erkannt als /dev/hidraw3. Aber leider bin ich nicht in der Lage, zu finden die input-Veranstaltungen des „dev“. Ich habe die Liste mit 3 events /dev/input/event0, event1, event2. In dem Fall 1 und 2 zu sehen sind, wie keyboards und eine Maus. Aber mein Blutdruck-Monitoren ist nicht Teil der Veranstaltung. Gibt es irgendeine andere suchen es?

Kostenlose Online-Tests