Получить серийный номер USB-устройства с Python 3

Я использовал 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), но в атрибуте serial_number, по-видимому, не существует в pyusb для Python 3.

Есть ли способ заставить это работать надежно для всех устройств? Благодарю.

0 ответов

Для текущей версии 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 ) )
Другие вопросы по тегам