2014-03-07 65 views
1

使用HIDAPI时混淆报告ID的我是一个USB HID新手,我试图用HIDAPI for my application.通过USB

我有一个关于使用HIDAPI问题(在Visual Studio)对报告ID。

当我尝试使用HIDAPI并连接到Microchip自定义演示, 我对这方面感到困惑 - 65字节的报告对我没有意义!

即使我不希望设置一个报告ID, 我需要的第一个字节设置为0,并发送65字节的缓冲区到设备, 但我只从接收64个字节的数据的Microchip器件(因为报告长度为64个字节)。

它看起来像:

**Host**      **Device** 

     *write_hid* 
     65 byte ---------------> 

      *read_hid* 
     <------------------ 64byte 

然而,似乎怪我。

发送或接收的报告总是不是64字节? 由于规格说报告应该有64个字节的最大值并且每1毫秒发送一次。

如果答案是肯定的,为什么API为1个字节的报告ID保留65个字节? 报表ID是否包含在64字节中?

65字节的数据长度对我没有意义。

回答

4

您的应用程序在HID描述符中是否包含报告ID?如果不是,则不应该有前面的报告ID。

如你的hid_write的文档中看到,HIDAPI应只发送64字节,如果第一个字节为0(即不存在报告ID):

unsigned char data[65]; 
buf[0] = 0; /* single report */ 
// fill report starting at buf[1] 
hid_write(device, data, sizeof(data)); 

当查看源代码libusb implementation,您可以看到报告ID被正确剥离。但是,在Windows上,数据直接传递到Windows。我不知道Windows编程,但也许这会有所作为。你有没有尝试过在Linux上使用这个测试呢?