идентификация USB-устройства - PullRequest
4 голосов
/ 21 марта 2010

я использую python в Ubuntu 9.04 скажем, у меня есть два USB-устройства, подключенные к одному компьютеру. Как я могу определить устройства в коде Python ..... например, как

если идентификатор порта USB == A записать данные на устройство 1 если ID порта USB == B записать данные на устройство 2

любые идеи ....

Ответы [ 4 ]

7 голосов
/ 21 марта 2010

Вы пробовали pyUsb ? Вот фрагмент того, что вы можете сделать:

import usb
busses = usb.busses()
for bus in busses:
    devices = bus.devices
    for dev in devices:
        print "Device:", dev.filename
        print "  idVendor: %d (0x%04x)" % (dev.idVendor, dev.idVendor)
        print "  idProduct: %d (0x%04x)" % (dev.idProduct, dev.idProduct)

Здесь хороший урок по pyUsb.

Для получения дополнительной документации используйте интерактивный режим Python с dir () и help ().

3 голосов
/ 12 сентября 2012

@ systempuntoout - хороший ответ, но сегодня я нашел более простой способ поиска или перебора всех устройств: usb.core.find(find_all=True)

Следуя вашему примеру:

import usb
for dev in usb.core.find(find_all=True):
    print "Device:", dev.filename
    print "  idVendor: %d (%s)" % (dev.idVendor, hex(dev.idVendor))
    print "  idProduct: %d (%s)" % (dev.idProduct, hex(dev.idProduct))
1 голос
/ 17 февраля 2014

но что угодно .. кто-то будет искать ответ в какой-то момент:

Я на Mac (OSX 10.9) .. Я успешно установил libusb с портами Mac, но получал сообщение «нет доступного бэкэнда». Это потому, что python не может найти usb dylibs.

Вы должны добавить путь к вашей libusb в ваш $ DYLD_LIBRARY_PATH (например, / opt / local / lib, где бы его не установил ваш macport).

Как только я добавил, pyusb работал нормально.

0 голосов
/ 23 октября 2015

Хорошо, я также искал ответы, вот фрагмент, который работает:

def locate_usb():
import win32file
drive_list = []
drivebits=win32file.GetLogicalDrives()
for d in range(1,26):
    mask=1 << d
    if drivebits & mask:
        # here if the drive is at least there
        drname='%c:\\' % chr(ord('A')+d)
        t=win32file.GetDriveType(drname)
        if t == win32file.DRIVE_REMOVABLE:
            drive_list.append(drname)
return drive_list

взято из https://mail.python.org/pipermail/python-win32/2006-December/005406.html

...