Я написал свою небольшую программу на Linux, поскольку именно эту ОС я использую для написания кода. могу предоставить подробную информацию о коде, если хотите, но в основном я:
- перечисляю все устройства
- выбираю свое с помощью PID и VID
- откройте его
- отсоедините драйвер ядра
- заявите интерфейс
- а затем отправить массовую передачу, чтобы получить данные и распечатать их на терминале
Поэтому я решил попробовать это в Windows, и первой проблемой, с которой я столкнулся, была LIBUSB_ERROR_NOT_SUPPORTED при попытке открыть устройство. После некоторого поиска в Google я обнаружил, что USB CDC не имеет драйвера по умолчанию в Windows или что-то еще (в отличие от устройств массового хранения данных и устройств человеко-машинного интерфейса), поэтому мне пришлось установить какой-нибудь универсальный драйвер USB, например WinUSB. Так я и сделал, используя программное обеспечение под названием Zadig, я также удалил код для отсоединения драйвера ядра, потому что мне, видимо, пришлось это сделать, и теперь я могу открыть устройство, но передача не удалась с LIBUSB_ERROR_NOT_FOUND.Я пробовал много вещей, но ничего не помогло. Вот полный журнал с уровнем отладки, установленным на 4, начиная с открытия устройства:
Код: Выделить всё
[ 0.077542] [00005830] libusb: debug [libusb_open] open 3.2
[ 0.078566] [000022f0] libusb: debug [libusb_claim_interface] interface 0
[ 0.078694] [000022f0] libusb: debug [winusbx_claim_interface] claimed interface 0
[ 0.079206] [000022f0] libusb: debug [windows_assign_endpoints] (re)assigned endpoint 82 to interface 0
[ 0.079853] [00000280] libusb: debug [windows_iocp_thread] ignoring overlapped 000000FB54DFF8D0 for handle 000002181F1A3310
[ 0.080480] [00000280] libusb: debug [windows_iocp_thread] ignoring overlapped 000000FB54DFF8D0 for handle 000002181F1A3310
[ 0.081122] [000022f0] libusb: debug [libusb_submit_transfer] transfer 000002181F1930E0
[ 0.081842] [00000280] libusb: debug [windows_iocp_thread] ignoring overlapped 000000FB54DFF8D0 for handle 000002181F1A3310
[ 0.085782] [000022f0] libusb: debug [add_to_flying_list] arm timer for timeout in 2000ms (first in line)
[ 0.086302] [00000280] libusb: debug [windows_iocp_thread] ignoring overlapped 000000FB54DFF8D0 for handle 000002181F1A3310
[ 0.086975] [000022f0] libusb: error [winusbx_submit_bulk_transfer] unable to match endpoint to an open interface - cancelling transfer
[ 0.087657] [00000280] libusb: debug [windows_iocp_thread] ignoring overlapped 000000FB54DFF9B0 for handle 000002181F1A3310
[ 0.088588] [000022f0] libusb: debug [arm_timer_for_next_timeout] no timeouts, disarming timer
Failed to submit bulk transfer: LIBUSB_ERROR_NOT_FOUND
[ 0.091200] [000022f0] libusb: debug [libusb_free_transfer] transfer 000002181F1930E0
[ 0.091677] [000022f0] libusb: debug [libusb_release_interface] interface 0
Я могу опубликовать подробную информацию о USB-устройстве с помощью USBView или при необходимости отправить части кода.
Подробнее здесь: https://stackoverflow.com/questions/790 ... on-windows