使用 Python 3 获取 USB 设备的序列号

Posted

技术标签:

【中文标题】使用 Python 3 获取 USB 设备的序列号【英文标题】:Get Serial Number of USB device with Python 3 【发布时间】:2021-03-02 19:34:30 【问题描述】:

我一直在使用 pyusb 访问通过 USB 插入的打印机的详细信息。我目前正在使用以下代码,但似乎不同的设备需要不同的索引。这是我当前的代码:

import usb

dev = usb.core.find(idProduct=0x001f)
print(usb.util.get_string(dev,256,3))

dev2 = usb.core.find(idProduct=0x0009)
print(usb.util.get_string(dev2,256,3))

dev 的代码完美运行,输出序列号,但 dev2 输出“Zebra”,即制造商名称。如果我将 3 更改为 6 或 7,它可以工作,但是第一个开发人员返回错误。

Python 2 中的一个解决方案是使用 print(dev.serial_number),但在 Python 3 的 pyusb 中似乎不存在 serial_number 属性。

有没有办法让所有设备都能可靠地工作?谢谢。

【问题讨论】:

解决了!我只是用“iSerialNumber”(不带引号)替换了索引。 喜欢idProduct=iSerialNumber? 像这样:usb.util.get_string(dev2,256,iSerialNumber)。 idProduct=0x001f 特定于我正在访问的设备。 【参考方案1】:

对于目前的 PyUSB 版本 1.0.2,我发现回答这个问题的正确语法是:

import usb

dev = usb.core.find(idProduct=0x001f)
print( usb.util.get_string( dev, dev.iSerialNumber ) )

dev2 = usb.core.find(idProduct=0x0009)
print( usb.util.get_string( dev2, dev2.iSerialNumber ) )

【讨论】:

以上是关于使用 Python 3 获取 USB 设备的序列号的主要内容,如果未能解决你的问题,请参考以下文章

windows平台下获取USB设备“身份证”

vm记住usb设备连接序列号

通过python获取USB设备地址

Python-uiautomator2学习3--基本操作及应用

通过设备路径或句柄获取 U 盘盘符

usb调试怎么获取六字码