打印
[数据传输]

关于复合设备(hid&自定义设备)的描述符问题

[复制链接]
2654|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
亦易|  楼主 | 2017-9-4 09:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zhs2007| | 2017-9-4 13:09 | 只看该作者
完整的配置描述符贴出来看看

使用特权

评论回复
板凳
亦易|  楼主 | 2017-9-4 13:40 | 只看该作者
zhs2007 发表于 2017-9-4 13:09
完整的配置描述符贴出来看看

配置描述符如下:
const configdesc CONFIGDESC =
{
{
//configuration descriptor
  0x09,
  0x02,
  0x4000,
  0x02,
  0x01,
  0x00,
  0x80,
  0x64
},
{
//interface0 descriptor
0x09,
0x04,
0x00,
0x00,
0x02,
0x03,
0x00,
0x00,
0x00
},
{
//hid_descriptor
0x09,
0x21,
0x1001,
0x00,
0x01,
0x02,
REPORT_DESP_LENGTH
},
{
//IN EP2
0x07,
0x05,
0x82,
0x03,
0x4000,
1
},
{
//OUT EP2
0x07,
0x05,
0x02,
0x03,
0x4000,
1
},
{
//interface2 descriptor
0x09,
0x04,
0x01,
0x00,
0x02,
0xff,
0x00,
0x00,
0x00
},
{
//IN EP1
0x07,
0x05,
0x81,
0x02,
0x4000,
1
},
{
//OUT EP1
0x07,
0x05,
0x01,
0x02,
0x4000,
1
}
}

使用特权

评论回复
地板
zhs2007| | 2017-9-4 14:21 | 只看该作者
你用的是大端还是小端?能否转成字节数组?

使用特权

评论回复
5
宇容创行| | 2017-9-4 14:25 | 只看该作者
描述符的问题

使用特权

评论回复
6
亦易|  楼主 | 2017-9-4 14:33 | 只看该作者
zhs2007 发表于 2017-9-4 14:21
你用的是大端还是小端?能否转成字节数组?

大端,单个hid是可以的,只是和自定义的设备复合时会出现问题

使用特权

评论回复
7
亦易|  楼主 | 2017-9-4 14:34 | 只看该作者

请指点下呗

使用特权

评论回复
8
zhs2007| | 2017-9-4 15:00 | 只看该作者
从内容上看没发现明显问题。
建议你检查一下结构体定义和对齐方式,检查一下程序中生成的这个结构体总大小是否如预期。
最好能将整个配置描述符逐字节打印出来看看,或者用抓包工具抓一下发到总线上的描述符内容是否如预期。

使用特权

评论回复
9
亦易|  楼主 | 2017-9-4 15:14 | 只看该作者
zhs2007 发表于 2017-9-4 15:00
从内容上看没发现明显问题。
建议你检查一下结构体定义和对齐方式,检查一下程序中生成的这个结构体总大小 ...

首先谢谢您
通过用bushoud抓取数据与程式中设定的描述符对比,未发现差异;
以您的经验看,这是否与我未安装驱动有关,
还是说在枚举过程中,是否安装驱动对其无影响

使用特权

评论回复
10
zhs2007| | 2017-9-4 16:52 | 只看该作者
bushound抓取的数据可以发上来看下吗?
这个描述符总长为64字节,如果EP0最大包长度设置为64字节,那么在发完这个包后,有没有发一个0字节包?
bushound报错的情况下,PC能够正确识别出设备吗?

使用特权

评论回复
11
zhs2007| | 2017-9-4 16:54 | 只看该作者
我认为bushound报错应该与设备是否安装驱动无关!

使用特权

评论回复
12
WoodData| | 2017-9-5 08:30 | 只看该作者
第2个接口描述符下面好像没有类描述符,可能是这个原因吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

6

帖子

0

粉丝