【问题标题】:Python HIDAPI troubleshooting: open() failuresPython HIDAPI 故障排除:open() 失败
【发布时间】:2018-10-23 15:29:16
【问题描述】:

OS X \ Python 2.7.15配备USB扫描仪:

user$ lsusb | grep Metrologic
Bus 250 Device 005: ID 0c2e:9a6c 0c2e Metrologic Scanner 

The python statement that attempts to open the HID device:

h.open(0x0c2e, 0x9a6c)  # METROLOGIC VendorID/ProductID

产生错误信息:

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 枚举:

### 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 设备信息:

                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 设备:

h.open(3118,39532)      # METROLOGIC VendorID/ProductID

同样失败:

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. 接下来的诊断和纠正步骤/策略是什么?

感谢您提出任何诊断问题,并将回复更新到原始帖子。

【问题讨论】:

    标签: python-2.7 osx-yosemite barcode-scanner hid


    【解决方案1】:

    我遇到了同样的问题。

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

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

    SUBSYSTEM=="usb", ATTRS{idVendor}=="04d8", MODE="0666", GROUP="plugdev"
    

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

    【讨论】:

    • 请考虑添加您所经历的任何参考和思考过程以增强您的答案(在您当前的帖子下方)。
    • 抱歉,您的解决方案是以 root 身份运行......这对我来说是不行的。通过添加这样的开发规则,您可以使用普通用户积分运行程序。
    【解决方案2】:

    在 python2 test5.py 之前尝试输入 sudo defore 像那样 : 用户$sudo python2 test5.py

    【讨论】:

    • 这并没有添加任何新内容。
    【解决方案3】:

    我也遇到了同样的问题,但谷歌搜索后,发现了这个forum。 切换到root用户解决了我的问题。也许你没有足够的权限。

    【讨论】:

    • 我忘记了我是如何解决这个问题的(扫描仪工作正常),但是,我的脚本总是以 root 身份执行 python 脚本以确保权限不是障碍。
    猜你喜欢
    • 2023-03-08
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-15
    相关资源
    最近更新 更多