Форум РадиоКот https://radiokot.ru/forum/ |
|
Хост->дев(ица)айc = отправка команды. https://radiokot.ru/forum/viewtopic.php?f=24&t=148352 |
Страница 1 из 1 |
Автор: | deemchik [ Пт сен 15, 2017 22:07:47 ] |
Заголовок сообщения: | Хост->дев(ица)айc = отправка команды. |
Как-то задавал вопрос, ответа не получил, видимо сам мало понимал что спрашивать. Попытка №2. Ну очень нужна помощь! Перепробовал кучу примеров, тучу исходников, понял в чем "гвоздь" но не понял как победить. Проблема заключается в... ткните пальцем куда копать! пожалуйста! мой дескриптор - каких куча в примерах: Код: PROGMEM char usbHidReportDescriptor[22] = { /* дескриптор репорта USB */ 0x06, 0x00, 0xff, // USAGE_PAGE (Generic Desktop) 0x09, 0x01, // USAGE (Vendor Usage 1) 0xa1, 0x01, // COLLECTION (Application) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255) 0x75, 0x08, // REPORT_SIZE (8) 0x95, 0x01, // REPORT_COUNT (1) 0x09, 0x00, // USAGE (Undefined) 0xb2, 0x02, 0x01, // FEATURE (Data,Var,Abs,Buf) 0xc0 // END_COLLECTION }; ПО-хоста на библиотеке libusb0.dll отрабатывает как и задумывалось. При переходе на ДРУГИЕ библиотеки (hidlibrary, HID API и т.д. включая от Atmel), а так же другие языки (VC++, C# - были потуги) в поисках правильной передачи данных от Хоста к Девайсу, положительного резултата добиться не удалось (а еще чтение данных впереди). Даже самый распространенный пример "proba(e)" описанный на множествах форумов, работать не хочет. Откопал следующее... что-бы я не писал в структуру или массив "pdata[x]" URB_FUNCTION_CONTROL_TRANSFER (если я правильно понял SetupPacket, который должен содержать "посылку") остается тот-же. Процедура отправки данных через, hid.SendData(&pdata) т.е. при помощи HidD_SetFeature(...) вообще ну никак не влияет на посылку данных, кроме как если в pdata[0] засунуть что-нибудь не ноль (при не 0 отсылаемых данных просто нет). Такие фокусы как Write - уходят в себя не обращая внимание на OVERLAPPED. Внутрисхемный отладчик "дев(айса)ицы" показал, что он(а) получает те же данные SetupPacket что и отображает USB Trace. Прикладываю файлы лога USB Trace посылки SendData(&pdata) без коннекта. Коннект подключается нормально. Первая картинка показывает правильную "посылку" данных при помощи библиотеки libusb0. Вторая картинка то, что отсылает библиотека HID API (hidlibrary). Вложение: Вложение: Я так понимаю многие на этом собаку съели, но на форумах, почему-то до финальной стадии не доходит. Как говориться "на самом интересном месте" или просто - "разобрался, продолжаем дальше". Вот и мне кажется, что хожу вокруг да около... а слона не замечаю. |
Автор: | Мурик [ Пт сен 15, 2017 22:27:10 ] |
Заголовок сообщения: | Re: Хост->дев(ица)айc = отправка команды. |
Если хотите чтобы помогли выкладывайте исходники, схему и прошивку девайса, иначе как найти ошибку в коде? |
Автор: | deemchik [ Сб сен 16, 2017 10:22:41 ] |
Заголовок сообщения: | Re: Хост->дев(ица)айc = отправка команды. |
Пока приводил в порядок исходники... в исходнике к мк, бросилась мне в глаза фраза "Мы не передаем наши данные через HID-репорты, вместо этого мы используем custom-запросы." По моему это тот ответ, который я искал... А схема стандартная для ATtiny 45/85 - светодиоды на портах PB1, PB3, PB4. Кысы. кому интересно как только одолею, выложу примеры (исходники). |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |