打印
[USB编程]

新手求教 添加端点后,电脑认不出来!已经琢磨一月了

[复制链接]
1809|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
源程序是  HID 键盘
现在我想通过这个源程序上添加一个端点,因为现在程序是只有一个端点,是从机发送到PC机。
但是添加后,电脑认不上了!!!  求教各位大神啊!!!
我修改的地方:
0x02    /* bNumEndpoints  */该接口使用的端点数    原本是1的   现在改成2
0,         /* bInterfaceProtocol*/   接口所遵循的协议  原本是1的(键盘)    现在改成0  


然后在原本的端点描述符的基础上  Copy一个出来
第一个为 :   0x81,    /* bEndpointAddress */
第二个为 :   0x02    /* bEndpointAddress */

但是这样添加后我的电脑就认不出来了,之前的是一插上    设备管理器上就有键盘显示,并且是可以对电脑发送按键!!
请问各位大神,是不是我在哪里没有设置??

注:  已经琢磨了一个多月了!!!
                                                                                     谢谢!

QQ截图20150711171532.png (56.92 KB )

添加的端点描述符

添加的端点描述符

相关帖子

沙发
584025981| | 2015-7-11 19:38 | 只看该作者
建议修改USB的VID和PID

使用特权

评论回复
板凳
584025981| | 2015-7-11 19:39 | 只看该作者
更新驱动

使用特权

评论回复
地板
includeyeah|  楼主 | 2015-7-11 22:28 | 只看该作者
584025981 发表于 2015-7-11 19:38
建议修改USB的VID和PID

请问一下要改成什么的?

使用特权

评论回复
5
includeyeah|  楼主 | 2015-7-11 22:29 | 只看该作者

为什么要更新驱动?
  我加多了一个端点,和驱动没有关系吧,我的之前都可以用的哦!

使用特权

评论回复
6
john_lee| | 2015-7-13 10:38 | 只看该作者
为什么要增加一个endpoint?
host 的驱动很可能不支持这个 output endpoint 而造成枚举失败。

使用特权

评论回复
7
includeyeah|  楼主 | 2015-7-14 17:39 | 只看该作者
john_lee 发表于 2015-7-13 10:38
为什么要增加一个endpoint?
host 的驱动很可能不支持这个 output endpoint 而造成枚举失败。 ...

那这样的话有什么办法解决吗

使用特权

评论回复
8
john_lee| | 2015-7-14 17:50 | 只看该作者
没有充足的理由就不要乱改。

使用特权

评论回复
9
includeyeah|  楼主 | 2015-7-15 22:23 | 只看该作者
john_lee 发表于 2015-7-14 17:50
没有充足的理由就不要乱改。

我是想要双向通信!!

使用特权

评论回复
10
584025981| | 2015-7-15 23:26 | 只看该作者
键盘可以有两个端点吗?

使用特权

评论回复
11
john_lee| | 2015-7-16 01:13 | 只看该作者
本帖最后由 john_lee 于 2015-7-16 01:20 编辑

键盘的双向通信,IN 是靠一个中断端点完成的,OUT 则是靠默认的端点 0 完成的。
IN 之所以要用中断端点,主要的考虑是 host 需要快速查询 device 是否有按键输入,使用中断端点,host 最快可以在每个 frame 里查询一次 device,而如果用端点 0 的话,虽然也有 GET_REPORT 请求可用,但 control 传输每次都需要 3 个 stage 才能完成,这至少要耗费 3 个或以上的 frame。比中断传输的效率要差很多,可能会影响到输入的即时响应。
OUT 用端点 0,原因是键盘需要 OUT 的信息,大概就是 LED 的操作,可以用 SET_REPORT 请求,而且只是偶尔需要操作,使用频率非常低,对 USB 的带宽占用可以忽略不计,没有必要使用中断端点。

使用特权

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

本版积分规则

1

主题

5

帖子

0

粉丝