Идентификация USB-устройства

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

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

есть идеи....

4 ответа

Вы пробовали 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().

Ответ @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))

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

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

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

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

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

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

Другие вопросы по тегам