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

5

我一直在使用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))

开发中的代码完美地输出了一个序列号,但是dev2却输出了“Zebra”这个制造商的名称。如果我将3更改为6或7,它就可以正常工作,但是第一个dev会返回错误。

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

有没有一种可靠地使所有设备都工作的方法?谢谢。


解决了!我只是用“iSerialNumber”(不带引号)替换了索引。 - Bobblet
idProduct=iSerialNumber这样吗? - The2ndSon
usb.util.get_string(dev2,256,iSerialNumber)。idProduct=0x001f是我正在访问的设备特定的。 - Bobblet
1个回答

6

针对目前的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 ) )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接