LIBUSB_ERROR_BUSY [-6] Отправка базового c пакета с Python 3.9 с использованием LibUSB1 - PullRequest
0 голосов
/ 07 апреля 2020

Я занимаюсь разработкой программного обеспечения в python 3.9, и я нахожусь в точке, где у меня есть устройство, подключенное к моему USB-порту, и я хотел бы отправить пакет basi c для проверки интерфейса, прежде чем продолжить. Я использую этот пример, чтобы попытаться заставить мой интерфейс работать. Меня не беспокоит скорость или количество байтов. Я хотел бы видеть какой-либо ответ на интерфейсе (но при размышлении я задаюсь вопросом, могла ли бы быть проблема скорости USB):

    import usb1
    import usb.util
    import os
    import sys
    import libusb
    import usb.core
    from usb import util
    import math

    dev = usb.core.find(idVendor=0x11ac,idProduct=0x317d)

    with usb1.USBContext() as context:
        handle=context.openByVendorIDAndProductID(
            0x11ac,
            0x317d,)
        handle.claimInterface(0)
        handle.setInterface(0)

   data = bytearray(b"\\xf0\\x0f"* (int(math.ceil(0xb5db91/4.0))))
   handle.controlWrite(0x40, 0xb0, 0xb5A6, 0xdb91, b"")
   handle.bulkWrite(2,data,timeout=5000)

`

https://github.com/vpelletier/python-libusb1/issues/21

Я просматривал различные форумы в течение нескольких дней и не могу найти ответ, который работает. Вот след: Стоит отметить, что время от времени этот py-файл работает без ошибок, но ничего не делает, и я не вижу траффи c, идущих к интерфейсу USB.

Может кто-нибудь помочь мне настроить рабочий пример того, как отправить пакет на интерфейс? Я пробовал разные вещи, такие как отсоединение ядра, настройка конфигурации и т. Д. c.

В течение 4 дней я боролся с libusb01 & 10, обнаружив libusb1, я изменил свою оболочку и добился гораздо большего успеха

Я также вижу много примеров на форумах, подобных этому, и я всегда получаю один и тот же ответ. Также мне интересно узнать, где 0x40 является конечной точкой (out)

Traceback (most recent call last):
  File "/home/jbgilbert/Desktop/Packets/Backend_replace.py", line 16, in <module>
    handle.claimInterface(0)
  File "/usr/lib/python3/dist-packages/usb1/__init__.py", line 1213, in claimInterface
    libusb1.libusb_claim_interface(self.__handle, interface),
  File "/usr/lib/python3/dist-packages/usb1/__init__.py", line 133, in mayRaiseUSBError
    __raiseUSBError(value)
  File "/usr/lib/python3/dist-packages/usb1/__init__.py", line 125, in raiseUSBError
    raise __STATUS_TO_EXCEPTION_DICT.get(value, __USBError)(value)
usb1.USBErrorBusy: LIBUSB_ERROR_BUSY [-6]

1 Ответ

0 голосов
/ 28 апреля 2020

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

...