Python 使用Python简单查询已连接的USB设备信息的方法
在本文中,我们将介绍如何使用Python编程语言来查询已连接的USB设备信息的简单方法。
阅读更多:Python 教程
1. Python的pyusb
库
要查询已连接的USB设备信息,我们可以使用Python的pyusb
库。pyusb
库是用于操作USB设备的Python库,它提供了一种简单而方便的方式来与USB设备进行通信。
首先,我们需要安装pyusb
库。可以使用以下命令在命令行中进行安装:
pip install pyusb
安装完成后,我们就可以使用pyusb
库来查询已连接的USB设备信息了。
2. 查询已连接的USB设备
我们首先需要导入usb
模块来使用pyusb
库:
import usb.core
import usb.util
要查询已连接的USB设备信息,我们可以使用以下代码:
# 查找所有USB设备
devices = usb.core.find(find_all=True)
# 遍历设备列表
for index, device in enumerate(devices):
# 获取设备描述符
device_descriptor = device.get_active_configuration().extra[b'device_descriptor']
# 打印设备信息
print(f"设备 {index+1}:")
print(f"厂商ID:{device_descriptor.idVendor}")
print(f"产品ID:{device_descriptor.idProduct}")
print(f"设备类别:{device_descriptor.bDeviceClass}")
print(f"供应商名称:{usb.util.get_string(device, device_descriptor.iManufacturer)}")
print(f"产品名称:{usb.util.get_string(device, device_descriptor.iProduct)}")
print("\n")
这段代码首先使用usb.core.find()
函数来查找所有已连接的USB设备,并将返回的设备列表存储在devices
变量中。然后,我们通过遍历设备列表,使用get_active_configuration().extra[b'device_descriptor']
获取设备的描述符信息。
在打印设备信息之前,我们使用usb.util.get_string(device, device_descriptor.iManufacturer)
和usb.util.get_string(device, device_descriptor.iProduct)
函数获取设备的供应商名称和产品名称。
运行以上代码,我们就可以看到已连接的USB设备的信息的输出结果。
3. 查询指定类型的USB设备
如果我们只想查询特定类型的USB设备,可以根据设备的类别来过滤查询结果。
例如,如果我们只想查询HID设备,可以使用以下代码:
# 查找所有USB设备
devices = usb.core.find(find_all=True)
# 遍历设备列表
for index, device in enumerate(devices):
# 获取设备描述符
device_descriptor = device.get_active_configuration().extra[b'device_descriptor']
# 如果设备类别是HID设备,则打印设备信息
if device_descriptor.bDeviceClass == 0x03:
print(f"设备 {index+1}:")
print(f"厂商ID:{device_descriptor.idVendor}")
print(f"产品ID:{device_descriptor.idProduct}")
print(f"设备类别:HID设备")
print(f"供应商名称:{usb.util.get_string(device, device_descriptor.iManufacturer)}")
print(f"产品名称:{usb.util.get_string(device, device_descriptor.iProduct)}")
print("\n")
在以上代码中,我们在遍历设备列表之前添加了一个条件判断语句if device_descriptor.bDeviceClass == 0x03
。如果设备的类别是HID设备(类别值为0x03),则会打印设备的信息。
4. 查询USB设备的接口和端点
除了查询设备的基本信息之外,我们还可以查询设备的接口和端点信息。
# 查找所有USB设备
devices = usb.core.find(find_all=True)
# 遍历设备列表
for device in devices:
# 获取设备配置描述符
config_descriptor = device.get_active_configuration()
# 遍历接口列表
for interface in config_descriptor:
# 遍历端点列表
for endpoint in interface:
# 打印端点信息
print(f"端点地址:{endpoint.bEndpointAddress}")
print(f"端点类型:{usb.util.endpoint_type_name(endpoint.bmAttributes)}")
print(f"最大包大小:{endpoint.wMaxPacketSize}")
print("\n")
以上代码通过device.get_active_configuration()
获取设备的配置描述符,然后通过两层循环来遍历接口和端点列表。在打印端点信息之前,我们使用usb.util.endpoint_type_name(endpoint.bmAttributes)
函数将端点类型的数值转换为对应的字符串。
总结
通过使用Python的pyusb
库,我们可以轻松地查询已连接的USB设备信息。我们可以获取设备的厂商ID、产品ID、设备类别、供应商名称、产品名称等基本信息。同时,我们还可以查询设备的接口和端点信息。使用pyusb
库,我们可以方便地与USB设备进行交互与开发。
以上就是使用Python查询已连接的USB设备信息的简单方法。希望本文对大家有所帮助!