hw: плата lpc1549 eval с тестовой прошивкой USB hid...
размер конечной точки 64 байта intr конечной точки считывает out-report buf и отображает len и данные в шестнадцатеричном формате ... копирует out_report в in_report buf и возвращает обратно с функцией записи и len
хозяин :
используя qt5, libusb-1.0.19 wingw32 dll и код hidapi
скрытый тестовый код успешно выдает все ваши вызовы API (кроме записи и чтения) в linux, win7 и win8.1
тестовый код выдает hid_write, за которым следует hid_read, и правильно возвращает данные в linux
я не использую идентификатор отчета с обязательным флагом Hidapi hid_write, поскольку прошивка nxp и программное обеспечение keil не используют его (насколько я мог понять) ... мой linux sw отправляет и получает определенный шаблон размером 64 байта или меньше len) правильно и байт [0] является частью этого шаблона ... out и в байте [0] данные намеренно отличаются и правильно получены
запуск клиента keil hid под windows позволяет правильно взаимодействовать с прошивкой lpc1549, даже если они передают и повторяют только один байт ...
в моей прошивке размер конечной точки изменен на 64 байта (я надеюсь, что мои изменения верны), и клиент keil hid работает с ним в Windows, поэтому я предполагаю, что мои дескрипторы верны ... надеюсь
host sw kububtu 14.04 hid_write len = 17, устройство 17 байт получено, 17 байт указано как полученное... вроде все работает нормально
host sw с hidapi в win 8.1 hid_write len = 17 байт отображается на устройстве с 16 правильными байтами, а остальные равны 0, но чтение указывает на полученный len 64 ... я выдал запись 17, получил 16 правильно, но было указано как 64 получено также win 8.1 выдает пустое окно подсказки system32/cmd вверх ... почему ???
то же самое зависает на win7, и только hid_write len = 0 удается ... выдает ту же подсказку cmd ... получил len = 64, но данные не передаются (как это имело бы смысл с len = 0)
я не могу сделать один шаг или точки останова, так как отладчик qt получает ошибку сегмента при загрузке приложения
также я ссылаюсь в своем приложении qt на код hidapi "windows/hid.c", и теперь он является частью моего кода
извините за мое довольно сложное описание
почему идентификатор отчета является обязательным, если он не используется ... это будет пустой тратой одного байта, а если требуется выравнивание uint32_t, это будет пустой тратой около 7% 64-байтовых данных.
почему клиент keil hid, написанный на c++ msvs, корректно работает с моей прошивкой, а hidapi нет
будет ли функционирование клиента keil hid указывать на то, что мой fw, мои дескрипторы и отчет len верны
Что может вызвать появление пустой командной строки cmd?
Что я могу делать неправильно (целое приложение на основе Hidapi правильно взаимодействует с полной прошивкой на основе USB, а не только с описанным тестовым кодом)?