打印

usb hid如何处理超过64字节的数据?

[复制链接]
13045|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jekey|  楼主 | 2012-7-10 07:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
l_lin2003| | 2012-7-10 08:58 | 只看该作者
Host如何发送你不用管,Host控制器自己会处理
Device接收的话,一次中断会接收64字节,有几个OUT中断就接收几次,OUT中断是由Host发起的

使用特权

评论回复
板凳
jekey|  楼主 | 2012-7-10 11:43 | 只看该作者
哦,好谢谢!
我试试。

使用特权

评论回复
地板
jekey|  楼主 | 2012-7-10 12:14 | 只看该作者
还有个问题, device分包接收,那是不是应用层的数据还得做数据长度的指示?
否则, device不知道收多少包才是完整的通讯数据。

使用特权

评论回复
5
zhaoqichao| | 2012-7-10 12:17 | 只看该作者
学习了

使用特权

评论回复
6
zhangxu985| | 2012-9-5 11:32 | 只看该作者
学习了

使用特权

评论回复
7
neilshao| | 2012-9-6 08:41 | 只看该作者
jekey
可以将你的例程给一分给我参考学习吗,我现在枚举成功,但出现各种问题致不能通信

使用特权

评论回复
8
a2018| | 2012-9-6 13:43 | 只看该作者
哦,这样啊

使用特权

评论回复
9
ksn13| | 2012-12-18 16:19 | 只看该作者
l_lin2003 发表于 2012-7-10 08:58
Host如何发送你不用管,Host控制器自己会处理
Device接收的话,一次中断会接收64字节,有几个OUT中断就接收 ...

大哥 你有 USB_HID_HOST 的代码吗? 符合OHCI协议 的

我 邮箱 xiongding@gmail.com QQ37327563

谢谢

使用特权

评论回复
10
l_lin2003| | 2012-12-25 14:41 | 只看该作者
ksn13 发表于 2012-12-18 16:19
大哥 你有 USB_HID_HOST 的代码吗? 符合OHCI协议 的

我 邮箱 xiongding@gmail.com QQ37327563

HOST的代码没有,只做device的

使用特权

评论回复
11
liyihong028| | 2012-12-25 23:34 | 只看该作者
这个跟你的报告描述符有很大的关系。你报告描述符中说明数据有多少个字节,就应该要发多少个字节。

使用特权

评论回复
12
computer00| | 2012-12-25 23:44 | 只看该作者
最好不要超过最大包长,这样处理起来不太方便。可以考虑自己做一个协议,把数据拆成一个个小包,一次只传一点。如果数据量大,不建议用HID,因为HID传大量数据时速度上不去的。

使用特权

评论回复
13
john_lee| | 2012-12-26 01:04 | 只看该作者
实际是这样的,在device的报告描述符中,可以有多个报告描述符,所描述的报告长度可以各不相同,host取到描述符后,会找出最长的那个报告,每次以这个长度来读报告,如果device发出的报告,正好是最长的那个,就按实际长度发,超过了 packet size 就分多次发,如果报告的长度不是最长的,并且其长度正好是 packet size 的整数倍,那么当发完数据后,需要发出一个0长度的 packet,作用是让 host 知道数据结束(术语叫 zlp:zero length packet),如果长度不是整数倍,则发完就行了。
当只有一个报告描述符时,device 就只发出报告数据本身,而有多个报告时,每次transfer,只能发出一个报告,并且在报告数据之前,要加一个字节,表示报告ID。

使用特权

评论回复
14
woshansi| | 2014-1-25 22:28 | 只看该作者
lz,可以问个问题吗,我的hid的键盘不能发送按键的值,我的hid键盘是stm32的,是hid的鼠标更改的,现在电脑已经可以识别我的键盘设备了,但是就是发送不了键盘的值,可这能是什么问题呢

使用特权

评论回复
15
xinge3721| | 2014-6-23 22:17 | 只看该作者
学习

使用特权

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

本版积分规则

2

主题

254

帖子

1

粉丝