Я объявил два входных отчета (64B для короткого отчета и 128B для длинного отчета) с конечной точкой прерывания 64B в размере пакета.
При чтении короткого отчета USB-анализатор показывает ожидаемое количество байтов (64B) для короткого отчета как передаваемого, но ReadFile жалуется, что мой буфер недопустим (хотя он достаточно велик и numberOfBytesToRead = 64).
Если я использую длинный размер отчета для параметра numberOfBytesToRead в коротком отчете, ReadFile не будет жаловаться, но это бесполезно и явно неправильно. Как я могу это исправить?
И я использовал кратные значения конечной точки прерывания по размеру пакета, чтобы упростить задачу; что произойдет, если мои отчеты не будут кратны?
Я прочитал, что мне нужно использовать ZLP или короткий пакет в конце коротких отчетов, потому что драйвер HID ожидает отчеты самого длинного размера. Так что это, вероятно, проблема. Есть ли пример как сделать ZLP в прошивке SiLabs? Я использую C8051F320.