2016-06-26 282 views
1

我有一个USB RFID设备出现在/ dev/hidraw 为我的串行设备,他们出现在/ dev/ttyUSB *我用pyserial,它的作品像魅力,但为这一个我从它使用cat /dev/hidraw0需要root权限 无法读取再加上我需要读取一行,并没有继续听蟒蛇:从USB HID设备读取

我用了evdev库,但我的设备没有出现在所有:

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

所以有没有一种从程序中读取设备的正确方法?

+0

你的问题是难以阅读。看看pyusb(当然你还需要访问设备的权限)。 – handle

+0

如果'cat/dev/hidraw0'看不到它,它听起来不太好:你可能有一个有缺陷的设备。当你在终端上做'lsusb'时它会显示吗?同时检查'dmesg |尾巴“。请注意,即使lsusb可以看到它,并不一定意味着您实际上可以做任何有用的设备。但是如果lsusb不能看到它,它可能已经死了。 –

+0

我可以读取与猫功能,但它需要root权限有没有一种方法来阅读为普通用户? – safouman

回答

2

通过default evdev.list_devices()只盯着到/ dev /输入

而你需要的权限与您的设备一起工作。您可以将用户添加到其自己的设备组(见$ 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) 
+0

我已将Beurere BC 58连接到覆盆子pi 3,并将设备检测为/ dev/hidraw3。但不幸的是,我无法找到“开发”中的输入事件。我有3个事件/ dev/input/event0,event1,event2的列表。其中事件1和2显示为键盘和一个鼠标。但是我的血压计并不是任何事件的一部分。有没有其他的定位它? – Kiran