Получить серийный номер 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 ) )