你把你的键盘接到计算机上面去,你看下计算机是怎么初始化这个键盘的,估计是你只获取了第一个HID类的报表描述符,并没有获取第二个设备的报表描述符导致第二个设备未进行初始化。
我搞不懂z怎么在计算机上看它初始化 只获取了第一个报表描述符而没有获取第二个报表描述符是什么意思 我的程序在上面 你看该在哪里加上获取第二个描述符的程序 我在进行set_report时数据阶段操作没有成功 返回的状态值是0x2e 本来应该返回0x14的 可以看出0x2e-0x21等于0x14 而程序中0x21好像也是个特殊值 我想这里是不是有些什么联系 应该把这个状态值弄对了 就可以的了 但是这个我真不知道怎么做 麻烦帮忙分析指点一下 非常感谢!!
端点号我从1试到7都不行
用下面的程序测试一下 UploadImages/2010112415175294.rar
你好 谢谢你的回复
我用上面的程序测试过了 还有一个键盘可以但是另外那个仍然不行 这个程序只支持两个接口的复合设备 如果那个不止有两个接口呢? 我怀疑就是接口数量的问题 如果多余两个接口的复合设备怎么测? 它一直在收到一串数据 前面一部分有数值 后面是0 然后一直循环
1.给你的代码只支持2个接口的设备,如果超过2个接口,需要自己扩展。但是超过2个接口的HID复合设备比较少。 2.有的键盘 在空闲的时候 会每隔一段时间上传一包0字节的数据。 3.对于不支持的键盘,软件上停在什么地方,或者返回什么错误,请提供详细信息。
你好
看了一下那个键盘的技术资料 应该是2个接口的
隔断时间上传0的数据包这个情况倒是有点像 但它是一直在发 而且速度很快按键也挺不下来 收不到键值 应该不是这个原因
不支持的那个键盘 软件出错的地方是set_idle时状态阶段操作失败 返回值为2e 获取报表描述符也出错get_report_descr_ex set_report 也不成功 我一会儿下午的时候把返回值信息发出来 办公室上网不便
现在可以获取到键值了 那个键盘确实是空闲时一直在上传0的数据包 而软件跑到get_report_descr_ex 获取报表描述符时就跑飞了 没有执行下面的程序 我把它屏蔽掉以后就可以收到键值了
谢谢楼上各位的解答 能收到键值就可以了 终于算是搞定了
获取报表的时候程序跑飞了 可能是单片机的RAM溢出了。或者是存取报表描述符的缓冲区dat_buf太小了