Python 使用Python简单查询已连接的USB设备信息的方法

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设备信息的简单方法。希望本文对大家有所帮助!

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程