Windows USB HID报告长度

时间:2017-10-26 18:35:30

标签: windows usb hid

我正在使用STMicro微控制器开发USB HID设备。我开始使用STMicro的HID示例,该示例工作正常。我在Windows 7 64位上使用C ++用于PC端。我有一个适用于我的设备的应用程序。但是有一点我无法弄清楚。

示例固件仅允许一次发送和接收2个字节,这由HIDP_CAPS.OutputReportByteLength和InputReportByteLength确定。我想一次发送比这更多的数据,但我无法弄清楚如何增加报告长度。我成功地更改了端点wMaxPacketSize,VID和PID以及其他一些东西,但我无法弄清楚Windows如何计算输入和输出报告长度。我的报告或设备描述中似乎没有任何字段表明这个长度,但我无法想象它可能来自哪里。

有谁能告诉我Windows如何确定HIDP_CAPS.OutputReportByteLength和HIDP_CAPS.InputReportByteLength?

如何增加这些长度?

1 个答案:

答案 0 :(得分:0)

我明白了。我想我会发布在这里以防其他人需要知道。我不完全确定我真的理解这一切,所以如果我犯了错误,请有人纠正我。

我必须更改固件中的报告说明。我有几个用法。 Windows获取报告描述并确定哪种使用需要最长的长度并使用该长度。在我的一个输入报告中,我做了以下更改(输入报告只是固件中的字节数组):

0x27, 0xFF, 0xFF, 0xFF, 0xFF, //Logical maximum is 4 bytes long, and has a value of 0xFFFFFFFF 0x95, 0x01, //There is one report 0x75, 0x20, //There are 32 bits per report

我为输出做了类似的事情,但是没有报告编号字段(0x95)。

Windows现在告诉我可以发送和接收5个字节,我相信这意味着结束点加上报告编号时间报告大小。