HID读写过程

HIDUSB的上、下位机之间相互读写时,并不是直接通信的,而是经过各自的buffer.

如下图所示:


 

上位机向下位机写数据:

step1:      当点击Writ HID按键后,上位机首先将要写的数据写入PC的驱动buffer中;

step2:      然后PC的驱动再将buffer中的数据写入下位机USB-SIEbuffer中,进而触发下位机的中断;

step3:      下位机的USB中断程序将SIEbuffer中的数据取出,最后在firmware中进行处理。

USB trace中可以看到如下图所示

 


 

会有两个OUT包发出,第一个是上位机给驱动buffer,第二个是驱动buffer给下位机硬件buffer

上位机Write HID的程序如下图:


 

上位机读取下位机数据:

step1:      下位机将要发送的数据准备好:

step2:      根据自己设定的发送条件进行判断,满足发送条件,将要发送的数据写入下位机自身的SIE buffer中;

step3:      上位机发出读取指令,驱动先从下位机SIE中取出数据,然后UI程序再从驱动中取出数据。

                                                                       


step1


step2

 

首先将要发送的数据准备好(IN_DATAh函数中),然后在主函数中判断发送条件,当条件满足时将准备好的数据发送到下位机SIE buffer中。

如下图所示:


此时上位机还没有读取数据,但下位机因已满足firmware自己编写的发送条件,已将待发送数据送至SIE buffer。所以会出现一个IN包。

 

上位机再按下Read HID按键后,数据被读至上位机,如下图所示:


此时第二个IN包表示数据传输至上位机。


from:http://blog.csdn.net/phenixyf/article/details/49424755




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 蓝牙HID(Human Interface Device)数据的过程主要分为连接建立、数据传输和连接断开三个阶段。 连接建立阶段: 首先,设备A(例如手机)启动蓝牙并搜索周围可见的蓝牙设备。当设备A发现设备B(例如蓝牙键盘)时,设备B会发送一个广播消息,使设备A可以连接到设备B。当设备A收到设备B的广播消息后,设备A将发送一个连接请求给设备B,如果设备B同意连接,则连接建立成功。 数据传输阶段: 连接成功后,设备A可以向设备B发送数据或请求相关的数据。例如,在蓝牙键盘上按下一个键时,设备B将发送一个HID数据包给设备A,以告知按下的按键值。设备A收到HID数据包后,可以将数据包解析并处理。类似地,设备A也可以向设备B发送控制命令或其他相关数据。 连接断开阶段: 当设备A不再需要与设备B通信时,可以主动断开连接。设备A发送一个断开连接的请求给设备B,当设备B接收到该请求并确认后,连接将断开。 总结: 蓝牙HID数据的过程分为连接建立、数据传输和连接断开三个阶段。在连接建立阶段,设备A与设备B进行配对并成功建立连接;在数据传输阶段,设备A可以向设备B发送数据或请求相关数据;在连接断开阶段,设备A可以主动断开与设备B的连接。这些步骤一起构成了蓝牙HID数据的过程。 ### 回答2: 蓝牙HID(Human Interface Device,人机接口设备)是一种无线通信协议,用于连接电脑或其他设备与外围输入设备,如键盘、鼠标等。蓝牙HID的数据过程如下: 首先,设备连接和配对。当蓝牙HID设备与主设备(如电脑)进行初次连接时,需要进行配对过程。配对过程中,设备之间会建立一个安全的连接,确保数据传输的安全性和可靠性。一旦完成配对,设备之间会进行自动连接。 然后,数据传输前的准备阶段。通常,蓝牙HID设备会与主设备进行握手,以确定设备之间的通信规则和配置参数。这个过程确保设备能够正确地发送和接收数据,并保持通信的一致性。 接下来,数据的取和过程。主设备通常通过轮询的方式取蓝牙HID设备的输入报告,以获取输入设备(如键盘或鼠标)的状态和操作信息。主设备也可以主动发送命令请求或配置信息给蓝牙HID设备,以控制设备的行为。 在数据传输过程中,设备通常会使用一些数据包格式,如HID报告描述符,来定义数据的格式和内容。这样,设备之间可以准确地解析和处理数据。 最后,数据的处理和应用。主设备接收到蓝牙HID设备发送的数据后,根据数据的内容和格式,进行相应的处理。例如,如果是键盘数据,主设备会将收到的键值映射到相应的字符或功能。如果是鼠标数据,主设备会根据鼠标的移动和点击状态,实现光标的移动和操作。 总结来说,蓝牙HID数据的过程包括设备连接和配对、数据传输前的准备、数据的取和入、数据的解析和处理。这个过程保证了设备之间能够有效地传输数据,并实现了外围输入设备的功能。 ### 回答3: 蓝牙HID(Human Interface Device)是一种用于无线连接人机接口设备的通信协议。蓝牙HID数据过程包括了连接建立、数据传输和断开连接三个主要步骤。 首先,连接建立阶段。在蓝牙HID设备之间进行通信之前,需要首先建立蓝牙连接。连接建立的过程中,首先是设备的搜索与配对,其中一个设备扮演主设备的角色,另一个设备则是从设备。主设备通过发送蓝牙HID profile的匹配请求给从设备,从设备则通过接受并发送匹配响应来完成配对。一旦成功配对,就可以建立连接了。 接下来是数据传输阶段。在连接建立之后,主设备和从设备之间可以进行数据的操作。主设备通常会发送命令或者请求给从设备,从设备则响应并返回相应的数据。数据传输过程中,会使用蓝牙HID profile规定的数据格式进行通信,主设备负责控制数据的发送和接收,从设备则负责相应的数据处理。 最后是断开连接阶段。当主设备和从设备之间的通信结束后,可以进行断开连接的操作。断开连接通常由主设备发起,主设备发送断开连接的命令给从设备,断开连接后,主设备和从设备将不再保持蓝牙连接状态。 总的来说,蓝牙HID数据过程包括了连接建立、数据传输和断开连接三个步骤,通过这些步骤,设备可以实现无线的人机接口通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值