首页 > 解决方案 > 使用 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)

标签: pythonpyusb

解决方案


看起来您正在使用 Python libusb 包装器。这只会枚举实际与 libusb 驱动程序关联的 USB 设备。每个设备都与一个驱动程序相关联,并且大多数设备都会有操作系统提供的类驱动程序(例如 HID、UVC、MSC 等),因此您需要使用不同的 API 来访问它们。如果这是您真正想要的,您可以使用 Windows 上的本机 SetupAPI 和 WinUSB 以通用方式枚举所有设备。但是这个包装器只会枚举专门使用 libusb 驱动程序的设备。由于您的代码没有显示任何内容,因此您可能只是没有使用 libusb 的设备。

您可以使用 Zadig 工具将驱动程序重新映射到不同的设备。但是请注意这样做,因为如果您碰巧选择了不受支持的配置,您很容易破坏事情。它通常在您拥有自定义或第 3 方设备时使用。


推荐阅读