Хост->дев(ица)айc = отправка команды.

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
deemchik
Родился
Сообщения: 18
Зарегистрирован: Ср мар 13, 2013 22:50:19
Откуда: хкто его знает

Хост->дев(ица)айc = отправка команды.

Сообщение deemchik »

Как-то задавал вопрос, ответа не получил, видимо сам мало понимал что спрашивать. Попытка №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).
LIBUSB0.jpg
(134.03 КБ) 359 скачиваний
HIDlibrary(HID).jpg
(135.96 КБ) 438 скачиваний
Я так понимаю многие на этом собаку съели, но на форумах, почему-то до финальной стадии не доходит. Как говориться "на самом интересном месте" или просто - "разобрался, продолжаем дальше". Вот и мне кажется, что хожу вокруг да около... а слона не замечаю.
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Хост->дев(ица)айc = отправка команды.

Сообщение Мурик »

Если хотите чтобы помогли выкладывайте исходники, схему и прошивку девайса, иначе как найти ошибку в коде?
Реклама
deemchik
Родился
Сообщения: 18
Зарегистрирован: Ср мар 13, 2013 22:50:19
Откуда: хкто его знает

Re: Хост->дев(ица)айc = отправка команды.

Сообщение deemchik »

Пока приводил в порядок исходники... в исходнике к мк, бросилась мне в глаза фраза "Мы не передаем наши данные через HID-репорты, вместо этого мы используем custom-запросы." :))
По моему это тот ответ, который я искал... :)
А схема стандартная для ATtiny 45/85 - светодиоды на портах PB1, PB3, PB4.

Кысы. кому интересно как только одолею, выложу примеры (исходники).
Ответить

Вернуться в «Интеграция с ПК»