首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python故障排除: open()故障

Python故障排除: open()故障
EN

Stack Overflow用户
提问于 2018-05-14 02:23:47
回答 3查看 5K关注 0票数 2

OS \Python2.7.15配备了USB扫描仪:

代码语言:javascript
复制
user$ lsusb | grep Metrologic
Bus 250 Device 005: ID 0c2e:9a6c 0c2e Metrologic Scanner 

试图打开HID设备的python语句:

代码语言:javascript
复制
h.open(0x0c2e, 0x9a6c)  # METROLOGIC VendorID/ProductID

生成错误消息:

代码语言:javascript
复制
user$ python2 test5.py
Traceback (most recent call last):
  File "test5.py", line 46, in <module>
    h.open(0x0c2e, 0x9a6c)  # METROLOGIC VendorID/ProductID
  File "hid.pyx", line 66, in hid.device.open
IOError: open failed

HID设备使用Python HIDAPI进行枚举。

代码语言:javascript
复制
### enumerate USB devices
for d in hid.enumerate():
    keys = list(d.keys())
    keys.sort()
    for key in keys:
        print("%s : %s" % (key, d[key]))
    print()

并返回目标HID设备信息:

代码语言:javascript
复制
                interface_number : -1
                manufacturer_string : Metrologic
                path : IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/EHC2@1A,7/EHC2@fa000000/PRT1@fa100000/IOUSBHostDevice@fa100000/AppleUSB20InternalHub@fa100000/PRT3@fa130000/Metrologic Scanner@fa130000/IOUSBHostInterface@0/IOUSBHostHIDDevice@fa130000,0
                vendor_id : 3118     
                product_id : 39532
                product_string : Metrologic Scanner
                release_number : 21574
                serial_number : 
                usage : 6
                usage_page : 1

尝试使用十进制(而不是十六进制)参数打开HID设备:

代码语言:javascript
复制
h.open(3118,39532)      # METROLOGIC VendorID/ProductID

也失败了:

代码语言:javascript
复制
user$ python2 test5.py
Traceback (most recent call last):
  File "test5.py", line 47, in <module>
    h.open(3118,39532)      # METROLOGIC VendorID/ProductID
  File "hid.pyx", line 66, in hid.device.open
IOError: open failed

问题

  1. 这里是否有足够的信息来诊断,还是需要执行另一个测试来诊断故障?
  2. h.open()参数是否不正确?
  3. 下一步诊断和纠正的步骤/策略是什么?

任何诊断问题将不胜感激,并将回复将更新到原来的公告。

EN

回答 3

Stack Overflow用户

发布于 2018-08-13 07:34:43

我也遇到了同样的问题,但在谷歌搜索后,我发现了这个论坛。切换到根用户解决了我的问题。也许你没有得到足够的许可。

票数 2
EN

Stack Overflow用户

发布于 2019-01-29 13:33:53

使用尝试键入sudo python2 test5.py :用户$sudo python2 test5.py

票数 0
EN

Stack Overflow用户

发布于 2021-02-06 03:19:52

我也遇到过同样的问题。

显然你需要添加一个udev规则

/etc/udev/rules/99-my-device.rules

代码语言:javascript
复制
SUBSYSTEM=="usb", ATTRS{idVendor}=="04d8", MODE="0666", GROUP="plugdev"

注意:您可能需要更新VID编号以匹配您的情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50322382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档