2015-05-13 10 views
-2

Мой код для извлечения значения из USB-устройства в Python выглядит следующим образом:usb.core.USBError: [Errno 19] Нет такого устройства (оно не может быть отключен)

import usb.core 
import usb.util 

VENDOR_ID = 0x0922 
PRODUCT_ID = 0x8005 

# find the USB device 
device = usb.core.find(idVendor=VENDOR_ID, 
         idProduct=PRODUCT_ID) 

# use the first/default configuration 
device.set_configuration() 
# first endpoint 
endpoint = device[0][(0,0)][0] 

# read a data packet 
attempts = 10 
data = None 
while data is None and attempts > 0: 
    try: 
     data = device.read(endpoint.bEndpointAddress, 
          endpoint.wMaxPacketSize) 
    except usb.core.USBError as e: 
     data = None 
     if e.args == ('Operation timed out',): 
      attempts -= 1 
      continue 

print data 

Когда я запускаю это это сообщение об ошибке:

File "/Library/Python/2.7/site-packages/usb/backend/libusb1.py", line 552, in _check 
raise USBError(_strerror(ret), ret, _libusb_errno[ret]) 
usb.core.USBError: [Errno 19] No such device (it may have been disconnected) 

Почему это происходит и как я могу это исправить? Благодаря!

+5

можете ли вы опубликовать весь трасчет, чтобы узнать, где происходит ошибка? – WoJ

+0

На всякий случай, убедитесь, что вы добавили базовый код ошибки управления: '# было найдено? если устройство отсутствует: raise ValueError ('Устройство не найдено') ' – Layo

+0

http://ubuntuforums.org/archive/index.php/t-2044904.html проверить это может быть полезно Ваш код не показывал любые ошибки для моего внешнего жесткого диска, после того, как я добавил несколько разрешений @ /etc/udev/rules.d/99-garmin.rules. Но у меня есть ошибка для моего ключа. – Ajay

ответ

1

хорошо, вы должны следовать всем необходимым шагам из учебника, особенно той части, где выполняется поиск устройства. https://github.com/walac/pyusb/blob/master/docs/tutorial.rst

и: вы уверены, что ваше устройство соответствует определенному идентификатору поставщика и продукта? Вы можете использовать lsusb для идентификации устройства USB и захвата идентификаторов оттуда. http://www.linuxnix.com/2013/05/find-usb-device-details-in-linuxunix-using-lsusb-command.html