реклама на сайте
подробности

 
 
> Номер ID HID репорта, может ли быть нулевым?
IgorAVR2
сообщение Dec 25 2014, 05:46
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 153
Регистрация: 29-05-08
Пользователь №: 37 901



Стал использовать впервые USB контроллер в новых STM (до этого именно в STM не использовал) и столкнулся с проблемой совместимости с предыдущем устройством, сделанным на микроконтроллере от NXP. Дело в том, что в репорте HID устройства с USB библиотекой для STM не могу выставить номер ID репорта равным 0. Если ставлю, то устройство висит в диспетчере устройств как HID, но с восклицательным знаком, то есть Винде такое описание репорта сразу не нравиться. Любой другой номер пожалуйста, главное не 0.

Старое же моё аналогичное устройство сделанное на LPC1343, как выяснилось теперь, шлёт репорт, а главное писать в него можно, репорт у которого номер равен 0. В LPC1343 это было скрыто для разработчика и я в этот вопрос при разработке не вдавался.

Из-за этого не могу сделать новое устройство на микроконтроллере STM, что бы его поддерживал старый софт на PC.

Может ли этот номер быть нулевым и почему пример от ST не даёт этого сделать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Jan 15 2015, 08:14
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(IgorAVR2 @ Jan 7 2015, 03:12) *
Поэтому я их и не стал группировать парами, а так вот:


Я позволил себе расшифровать этот дескриптор:
Код
const uint8_t CustomHID_ReportDescriptor[] =
{
    0x06, 0x00, 0xFF,   // Global: USAGE_PAGE(Vendor defined)
    0x09, 0x01,         // USAGE (01)
    0xA1, 0x01,         // COLLECTION(Application)
        0x15, 0x00,         // LOGICAL_MINIMUM (0)
        0x26, 0xFF, 0x00,   // LOGICAL_MAXIMUM (255) можно было сэкономить: 0x25, 0xFF
        0x75, 0x08,         // REPORT_SIZE(8)
        0x95, 0x10,         // REPORT_COUNT(16)
        0x09, 0x01,         // USAGE(01)
        0x81, 0x02,         // INPUT(Data, Variable, Absolute, Linear)
        0x95, 0x02,         // REPORT_COUNT(2)
        0x09, 0x01,         // USAGE(01)
        0x91, 0x02,         // OUTPUT(Data, Variable, Absolute, Linear)
    0xC0                // END_COLLECTION
};

В нем нет поля REPORT_ID. Поэтому в самом рапорте это поле тоже отсутствует, совсем.

Цитата(IgorAVR2 @ Jan 5 2015, 03:03) *
Это позволило отправлять данные без указания ID репорта и у которых это ID при передаче равен 0.

Нету там ID равного нулю. Это просто байт данных. У ваш рапорт состоит из 16 8-битовых полей(REPORT_SIZE(8), REPORT_COUNT(16)). Все байты этого рапорта являются данными, как я и писал вам в самом начале.

Вот описание пункта REPORT_ID из "Device class definition fort HID":
Цитата
Report ID 1000 01 nn Unsigned value that specifies the Report ID. If a Report ID tag is used anywhere in Report descriptor, all data reports for the device are preceded by a single byte ID field.
...


Цитата(IgorAVR2 @ Dec 25 2014, 15:29) *
Если оно и принимало и отправляло данные, то я так понимаю что это уже два репорта?
Это не более одного в каждую сторону.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- IgorAVR2   Номер ID HID репорта   Dec 25 2014, 05:46
- - SM   Цитата(IgorAVR2 @ Dec 25 2014, 08:46) Мож...   Dec 25 2014, 05:55
|- - IgorAVR2   Цитата(SM @ Dec 25 2014, 08:55) Специфика...   Dec 25 2014, 06:05
|- - SM   Цитата(IgorAVR2 @ Dec 25 2014, 09:05) Но ...   Dec 25 2014, 06:07
|- - IgorAVR2   Цитата(SM @ Dec 25 2014, 09:07) Видимо (н...   Dec 25 2014, 06:10
|- - toweroff   Цитата(IgorAVR2 @ Dec 25 2014, 09:10) Так...   Dec 25 2014, 06:18
|- - IgorAVR2   Цитата(toweroff @ Dec 25 2014, 09:18) тог...   Dec 25 2014, 06:36
|- - toweroff   Цитата(IgorAVR2 @ Dec 25 2014, 09:36) А ч...   Dec 25 2014, 07:27
|- - IgorAVR2   Цитата(toweroff @ Dec 25 2014, 10:27) я п...   Dec 25 2014, 13:29
- - Сергей Борщ   Насколько я помню, если устройство работает только...   Dec 25 2014, 08:33
- - IgorAVR2   Проблему, совместимости решил - по сути как и посо...   Jan 5 2015, 01:03
- - toweroff   А скопируйте сюда этот репорт, попробуем разобрать...   Jan 5 2015, 05:41
|- - IgorAVR2   Цитата(toweroff @ Jan 5 2015, 08:41) А ск...   Jan 7 2015, 01:12
|- - IgorAVR2   Цитата(Сергей Борщ @ Jan 15 2015, 11:14) ...   Jan 20 2015, 06:33
- - IgorAVR2   Спасибо за расшифровку, буду вникать!   Jan 19 2015, 16:24


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th July 2025 - 15:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01444 секунд с 7
ELECTRONIX ©2004-2016