Идентификация 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 работал нормально.