python - 使用 pyusb 列出 USB 设备不起作用
问题描述
我正在尝试在我的 Windows 7 电脑上列出 USB 设备。我提前安装了这个:https ://sourceforge.net/projects/libusb-win32/files/libusb-win32-releases/1.2.6.0/libusb-win32-devel-filter-1.2.6.0.exe
下面的代码不打印任何内容。要获取设备信息,还有其他事情要做吗?
import usb.core
import usb.util
dev = usb.core.find(find_all=True)
for d in dev:
print(usb.util.get_string(d,128,d.iManufacturer))
编辑:已解决
这接近我需要 的使用 Python 检索 USB 项目列表
import win32com.client
wmi = win32com.client.GetObject ("winmgmts:")
for usb in wmi.InstancesOf ("Win32_USBHub"):
print('Device ID:', usb.DeviceID)
解决方案
看起来您正在使用 Python libusb 包装器。这只会枚举实际与 libusb 驱动程序关联的 USB 设备。每个设备都与一个驱动程序相关联,并且大多数设备都会有操作系统提供的类驱动程序(例如 HID、UVC、MSC 等),因此您需要使用不同的 API 来访问它们。如果这是您真正想要的,您可以使用 Windows 上的本机 SetupAPI 和 WinUSB 以通用方式枚举所有设备。但是这个包装器只会枚举专门使用 libusb 驱动程序的设备。由于您的代码没有显示任何内容,因此您可能只是没有使用 libusb 的设备。
您可以使用 Zadig 工具将驱动程序重新映射到不同的设备。但是请注意这样做,因为如果您碰巧选择了不受支持的配置,您很容易破坏事情。它通常在您拥有自定义或第 3 方设备时使用。
推荐阅读
- emacs - Setting Key Bindings for Common Lisp Top Level in Emacs
- ruby-on-rails - Rails 5 弃用警告“`attribute_change` 的行为”
- c# - EFCore- Update Entity with Navigation Properties
- python - 基于列值python pandas匹配行
- reporting-services - 项目文件 (rptproj) 的 SSRS 结构很奇怪
- java - 为什么 ByteBuffer::asCharBuffer 返回的 CharBuffer 中的第一个字符总是一个空格?
- reactjs - React mobx-state-tree model as array of model
- c# - Couchbase Lite 2.0 复制
- javascript - 更改 div id/class onclick
- javascript - dynamoose 如何让多个模型共享一个表?