首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有windows、libusb1和libusb-win32后端不工作的libusb1

带有windows、libusb1和libusb-win32后端不工作的libusb1
EN

Stack Overflow用户
提问于 2019-01-12 18:57:04
回答 1查看 5K关注 0票数 1

我在试着从USB设备上读。要做到这一点,我使用的是PyUSB,它提出了多个问题。

错误

使用libusb- With 32,没有找到任何设备。在发现它的支持有限后,我转而使用libusb1

使用libusb1,可以找到一些设备,但是会引发NotImplementedError: Operation not supported or unimplemented on this platform错误。

设置

我用的是Windows10,这个设备是M10 10磅数字邮政秤

我使用Zadib安装设备驱动程序,设置如下

当设备连接时,我可以在设备管理器中看到它。

我下载了libusb-win32 32libusb1的源代码,并将它们添加到%PATH%环境变量中(但每次只有一个在%PATH%中,因此我知道正在使用的是哪个)。

  • 如果没有指向其中一个.dll文件的路径,PyUSB将引发一个没有找到后端的错误。

代码

代码语言:javascript
复制
import usb.core
import usb.util

# find the USB device
for device in usb.core.find(find_all=True):
    print(device)

完全错误信息

请注意,在出现此错误消息之前,已成功地打印了两个设备。

代码语言:javascript
复制
Traceback (most recent call last):


File "C:\ProgramData\Anaconda3\lib\site-packages\usb\core.py", line 727, in __str__
    for configuration in self:
  File "C:\ProgramData\Anaconda3\lib\site-packages\usb\core.py", line 1094, in __iter__
    yield Configuration(self, i)
  File "C:\ProgramData\Anaconda3\lib\site-packages\usb\core.py", line 586, in __init__
    configuration
  File "C:\ProgramData\Anaconda3\lib\site-packages\usb\backend\libusb1.py", line 757, in get_configuration_descriptor
    config, byref(cfg)))
  File "C:\ProgramData\Anaconda3\lib\site-packages\usb\backend\libusb1.py", line 595, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 2] Entity not found

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "reading_dymo_scale.py", line 22, in <module>
    print(device)
  File "C:\ProgramData\Anaconda3\lib\site-packages\usb\core.py", line 731, in __str__
    configuration = self.get_active_configuration()
  File "C:\ProgramData\Anaconda3\lib\site-packages\usb\core.py", line 875, in get_active_configuration
    return self._ctx.get_active_configuration(self)
  File "C:\ProgramData\Anaconda3\lib\site-packages\usb\core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\usb\core.py", line 236, in get_active_configuration
    self.managed_open()
  File "C:\ProgramData\Anaconda3\lib\site-packages\usb\core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\usb\core.py", line 120, in managed_open
    self.handle = self.backend.open_device(self.dev)
  File "C:\ProgramData\Anaconda3\lib\site-packages\usb\backend\libusb1.py", line 786, in open_device
    return _DeviceHandle(dev)
  File "C:\ProgramData\Anaconda3\lib\site-packages\usb\backend\libusb1.py", line 643, in __init__
    _check(_lib.libusb_open(self.devid, byref(self.handle)))
  File "C:\ProgramData\Anaconda3\lib\site-packages\usb\backend\libusb1.py", line 593, in _check
    raise NotImplementedError(_strerror(ret))
NotImplementedError: Operation not supported or unimplemented on this platform
EN

回答 1

Stack Overflow用户

发布于 2019-01-12 19:20:38

昨晚经过几个小时的反复试验,我找到了解决办法。当然,现在看来很明显

  • zadib驱动程序应该与后端驱动程序匹配,后端驱动程序应该都是libusb- with 32,到目前为止,其他驱动程序/后端没有任何进展。

解决方案

  1. 下载libusb-win32 32源
  2. libusb-win32/bin/amd64/文件夹添加到%PATH%环境变量中,以便PyUSB可以找到它
  3. 安装PyUSB pip install pyusb
  4. 如果需要为USB设备安装驱动程序,请下载zadig。
  5. 打开zadig并使用libusb 32驱动程序添加usb设备。示例

  1. 您现在应该能够运行您的代码了,尝试用
代码语言:javascript
复制
import usb.core
import usb.util

# find the USB device
for device in usb.core.find(find_all=True):
    print(device)

调试

  • 如果在设置路径之前终端已打开,则需要打开一个新的终端。
  • 如果仍然找不到司机,请重新启动。还要检查设备管理器,看看是否可以这样找到设备。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54162872

复制
相关文章

相似问题

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