Проблемы с использованием PyUSB для чтения с USB-устройства в разных системах - PullRequest
0 голосов
/ 11 января 2019

Я написал небольшой скрипт на python для чтения данных с цифрового термометра, и все отлично работает на моем компьютере. тем не менее, мне нужно запустить этот же скрипт в других системах, но я продолжаю получать ошибку «[Errno 10060] Timed out».

на втором компьютере я вижу устройство, его конечные точки и все такое, но когда я пытаюсь прочитать с него, я получаю сообщение об ошибке.

это код (я намеренно не установил конфигурацию для устройства, так как я пытаюсь ускорить чтение, и в моей системе это оказалось ненужным):

import usb.core

def get_temp(T):

    # find our device
    dev = usb.core.find(idVendor=0x04d9, idProduct=0xe000)
    # was it found?
    if dev is None:
        raise ValueError('Device not found')

    # poll the thermometer for current temperature
    t = dev.read(0x83, 32) # gets 32 bytes from ENDPOINT address 0x83

Итак, на компьютере, на котором я это написал, он работает как положено, и возвращает хороший 32-байтовый массив. но в других системах я получил ошибку:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\usb\core.py", line 402, in read
    return self.device.read(self, size_or_buffer, timeout)
  File "C:\Python27\lib\site-packages\usb\core.py", line 988, in read
    self.__get_timeout(timeout))
  File "C:\Python27\lib\site-packages\usb\backend\libusb1.py", line 851, in 
intr_read
    timeout)
  File "C:\Python27\lib\site-packages\usb\backend\libusb1.py", line 936, in 
__read
    _check(retval)
  File "C:\Python27\lib\site-packages\usb\backend\libusb1.py", line 595, in 
_check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 10060] Operation timed out

На этот раз я также попытался настроить конфигурацию устройства, но ошибка все равно.

есть идеи о том, чего мне не хватает?

edit: это мой выходной журнал с переменной среды PYUSB_DEBUG, для которой задано значение debug:

>>> dev.read(0x83,32)
2019-01-11 10:35:06,951 DEBUG:usb.backend.libusb1:_LibUSB.get_configuration(<usb.backend.libusb1._DeviceHandle object at 0x02A2A610>)
2019-01-11 10:35:06,953 DEBUG:usb.backend.libusb1:_LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x02A2A650>, 0)
2019-01-11 10:35:06,954 DEBUG:usb.backend.libusb1:_LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x02A2A650>, 0, 0, 0)
2019-01-11 10:35:06,956 DEBUG:usb.backend.libusb1:_LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x02A2A650>, 0)
2019-01-11 10:35:06,957 DEBUG:usb.backend.libusb1:_LibUSB.get_endpoint_descriptor(<usb.backend.libusb1._Device object at 0x02A2A650>, 0, 0, 0, 0)
2019-01-11 10:35:06,957 DEBUG:usb.backend.libusb1:_LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x02A2A650>, 0, 0, 0)
2019-01-11 10:35:06,957 DEBUG:usb.backend.libusb1:_LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x02A2A650>, 0)
2019-01-11 10:35:06,957 DEBUG:usb.backend.libusb1:_LibUSB.claim_interface(<usb.backend.libusb1._DeviceHandle object at 0x02A2A610>, 0)
2019-01-11 10:35:06,957 DEBUG:usb.backend.libusb1:_LibUSB.intr_read(<usb.backend.libusb1._DeviceHandle object at 0x02A2A610>, 131, 0, array('B', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 1000)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\usb\core.py", line 988, in read
    self.__get_timeout(timeout))
  File "C:\Python27\lib\site-packages\usb\_debug.py", line 60, in do_trace
    return f(*args, **named_args)
  File "C:\Python27\lib\site-packages\usb\backend\libusb1.py", line 851, in intr_read
    timeout)
  File "C:\Python27\lib\site-packages\usb\backend\libusb1.py", line 936, in __read
    _check(retval)
  File "C:\Python27\lib\site-packages\usb\backend\libusb1.py", line 595, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 10060] Operation timed out
>>>
...