несколько отчетов HID ввода - PullRequest
3 голосов
/ 16 ноября 2011

Я объявил два входных отчета (64B для короткого отчета и 128B для длинного отчета) с конечной точкой прерывания 64B в размере пакета.

При чтении короткого отчета USB-анализатор показывает ожидаемое количество байтов (64B) для короткого отчета как передаваемого, но ReadFile жалуется, что мой буфер недопустим (хотя он достаточно велик и numberOfBytesToRead = 64).

Если я использую длинный размер отчета для параметра numberOfBytesToRead в коротком отчете, ReadFile не будет жаловаться, но это бесполезно и явно неправильно. Как я могу это исправить?

И я использовал кратные значения конечной точки прерывания по размеру пакета, чтобы упростить задачу; что произойдет, если мои отчеты не будут кратны?

Я прочитал, что мне нужно использовать ZLP или короткий пакет в конце коротких отчетов, потому что драйвер HID ожидает отчеты самого длинного размера. Так что это, вероятно, проблема. Есть ли пример как сделать ZLP в прошивке SiLabs? Я использую C8051F320.

Ответы [ 2 ]

2 голосов
/ 17 ноября 2011

Вы используете ReadFile, поэтому ясно, что вы читаете пакетов , а не отчетов .Это важное различие в HID.Пакеты HID могут быть 8 байтов для низкоскоростных устройств и 64 байта для полноскоростных устройств.

Википедия ссылается на спецификации, которые вы должны прочитать: https://en.wikipedia.org/wiki/Human_interface_devices

WDK содержит некоторые функции - всес именем Hid_*, который также позволяет взаимодействовать с устройствами HID и уже выполняет некоторую предварительную обработку.Но насколько это полезно, зависит от того, относится ли ваше устройство к одному из классов HID, для которого существуют эти ярлыки ...

Для остальной части вопроса вы должны опубликовать немного кода, а также сообщить намкакие именно коды возврата вы получите где.Я, вероятно, отредактирую свой ответ, как только с вашего конца поступят дополнительные подробности.

0 голосов
/ 22 ноября 2011

Необходимо отправить ZLP после коротких отчетов, если они кратны конечной точке в размере пакета.

...