CN102012886B - 基于hid协议的通讯方法、装置及系统 - Google Patents
基于hid协议的通讯方法、装置及系统 Download PDFInfo
- Publication number
- CN102012886B CN102012886B CN 201010507144 CN201010507144A CN102012886B CN 102012886 B CN102012886 B CN 102012886B CN 201010507144 CN201010507144 CN 201010507144 CN 201010507144 A CN201010507144 A CN 201010507144A CN 102012886 B CN102012886 B CN 102012886B
- Authority
- CN
- China
- Prior art keywords
- report
- order
- hid
- main frame
- length
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Communication Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种基于HID协议的通讯方法、装置及系统,其方法包括:当HID设备与主机连接时,接收HID设备预先报告的Report ID的集合;当主机向HID设备发送命令时,根据命令携带的数据包的长度H以及预制的公式计算该数据包对应的Report ID的值X;当X属于Report ID的集合时,将命令发送至HID设备;HID设备向主机发送响应数据时,根据响应数据的长度以及预制的公式计算该数据包对于的ReportID的值,并响应主机发送的GetReport请求。本发明以主机发送的命令所携带数据包的长度H选择对应的Report ID的值X,按照包含有Report ID的值X的命令格式将主机命令以其实际数据长度发送出去,命令长度设置灵活,可长可短,从而提高了通讯效率,节约了系统资源。
Description
技术领域
本发明涉及通讯领域,尤其涉及一种基于HID协议的通讯方法、装置及系统。
背景技术
现有技术中,在使用HID协议进行通讯时,比如主机与USB设备之间通过HID协议进行通讯时,需要预先向系统报告其所支持的Report ID的个数,即Report ID值的集合,主机与USB设备通讯命令数据中需要附带该命令所携带的数据包的Report ID值,一个Report ID所对应的数据包的长度是固定的,因此Report ID个数的多少可以决定主机与USB设备之间交互命令的数据长度。
而现有技术中主机与USB设备之间交互命令的数据长度基本上都固定为64字节,即当主机向USB设备所发送的命令的实际长度少于64字节时,也会将命令补足到64字节后发送,当发送命令的长度大于64字节时,需要将一条命令切分为多个64字节命令发送。
因此,现有技术在使用HID协议进行通讯时,发送的命令长度固定,使得命令发送不够灵活,极大的浪费了系统资源。
发明内容
本发明的主要目的在于提供一种基于HID协议的通讯方法、装置及系统,旨在提高主机发送命令的灵活性,以节约系统资源。
本发明提出一种基于HID协议的通讯方法,包括以下步骤:
当HID设备与主机连接时,接收HID设备预先报告的Report ID的集合;
当主机向HID设备发送命令时,根据所述命令携带的数据包的长度H以及预制的公式计算该数据包对应的Report ID的值X,并按照约定的协议格式组织所述命令的数据包;
当所述X属于所述Report ID的集合时,将所述命令以SetReport请求发送至所述HID设备;
当HID设备接收到主机发送的GetReport请求时,根据HID设备响应数据包的长度以及预制的公式计算响应数据包对应的Report ID值,并按照约定的协议格式将响应数据包发送至主机。
优选地,所述根据命令携带的数据包的长度H以及预制的公式计算该数据包对应的Report ID的值X的步骤包括:
若1≤H≤272,则X=H/8;
若273≤H≤528,则X=[(H-272)/64]+34;
若529≤H≤1040,则X=[(H-528)/128]+38;
若H≥1041,则X=[(H-1040)/256]+42。
优选地,所述命令的发送格式为Report ID PaddingNum OpCode OpDataPadding,其中,Report ID为报告描述符的ID号,PaddingNum为补足长度,OpCode为操作码,OpData为操作数据,Padding为补足数据。
优选地,所述操作码包括:08h、04h、20h以及24h,其中,08h表示设备复位,04h表示明文发送命令,20h表示密钥协商,24h表示密文发送命令。
本发明还提出一种基于HID协议的通讯装置,包括:
接收模块,用于当HID设备与主机连接时,接收HID设备预先报告的Report ID的集合;
计算模块,用于当主机向HID设备发送命令时,根据所述命令携带的数据包的长度H以及预制的公式计算该数据包对应的Report ID的值X,并按照约定的协议格式组织所述命令的数据包;
发送模块,用于当所述X属于所述Report ID的集合时,将所述命令以SetReport请求发送至所述HID设备;
响应数据处理模块,当HID设备接收到主机发送的GetReport请求时,根据HID设备响应数据包的长度以及预制的公式计算响应数据包对应的Report ID值,并按照约定的协议格式将响应数据包发送至主机。
优选地,所述计算模块还用于,
当1≤H≤272时,X=H/8;
当273≤H≤528时,X=[(H-272)/64]+34;
当529≤H≤1040时,X=[(H-528)/128]+38;
当H≥1041时,X=[(H-1040)/256]+42。
优选地,所述命令的发送格式为Report ID PaddingNum OpCode OpDataPadding,其中,Report ID为报告描述符的ID号,PaddingNum为补足长度,OpCode为操作码,OpData为操作数据,Padding为补足数据。
本发明提出一种基于HID协议的通讯方法、装置及系统,通过主机发送的命令所携带数据包的长度H以及预制的公式计算主机发送的命令所携带的数据包对应的Report ID的值X,当数据包对应的Report ID的值X属于HID设备可接收的Report ID的值时,将主机命令以其实际数据长度发送出去,命令长度设置灵活,可长可短,从而提高了通讯效率,节约了系统资源。
附图说明
图1是本发明基于HID协议的通讯方法一实施例流程示意图;
图2是本发明基于HID协议的通讯主机一实施例流程示意图;
图3是本发明基于HID协议的通讯系统一实施例流程示意图。
为了使本发明的技术方案更加清楚、明了,下面将结合附图作进一步详述。
具体实施方式
本发明实施例解决方案主要是根据主机发送的命令所携带的数据包的长度H以及预制的公式计算主机发送的命令所携带的数据包对应的Report ID的值X,当数据包对应的Report ID的值X属于HID设备可接收的Report ID的值时,将主机命令以其实际数据长度发送出去,以节约系统资源。
如图1所示,本发明一实施例提出一种基于HID协议的通讯方法,包括:
步骤S101,当HID设备与主机连接时,接收HID设备预先报告的ReportID的集合;
本实施例方法运行环境涉及通过HID协议进行通讯的主机与HID设备,其中HID设备比如可以是带有USB接口的U盘、键盘或鼠标等。当HID设备通过USB接口与主机连接时,HID设备会主动将其可以接收的所有ReportID的值即Report ID的集合预先报告给主机,当后续主机通过应用层发送给HID设备的命令格式中的Report ID的值为HID可以接收的Report ID的值时,主机发送命令成功,否则,主机发送命令失败。
步骤S102,当主机向HID设备发送命令时,根据命令携带的数据包的长度H以及预制的公式计算该数据包对应的Report ID的值X,并按照约定的协议格式组织命令的数据包;
步骤S103,当X属于Report ID的集合时,将命令以SetReport请求发送至HID设备;
上述步骤S102和步骤S103中,为了避免现有技术中,主机通过HID协议与HID设备进行通讯时,以固定命令数据长度发送命令,浪费系统资源,在本实施例中,为了实现以主机发送命令的实际数据长度进行发送,在主机向HID设备发送命令时,根据命令携带的数据包的长度H,并采用预制的公式计算该数据包对应的Report ID的值X。
由于主机发送命令的命令格式为Report ID PaddingNum OpCode OpDataPadding,其中,Report ID为报告描述符的ID号;PaddingNum为补足长度,即Padding的长度;OpCode为操作码,操作码包括:08h、04h、20h以及24h,其中,08h表示设备复位,04h表示明文发送命令,20h表示密钥协商,24h表示密文发送命令;OpData为操作数据,Pading为补足数据,因此,根据主机命令所携带的数据包的长度H计算出该数据包实际所使用的Report ID值,然后将命令通过上述命令格式打包后进行发送,即可通过主机发送的命令所携带的数据包的实际长度H选择相应的Report ID的值,使得主机发送命令长度可以根据相应的Report ID的值进行灵活设置,从而节约了系统资源。
在本实施例中,根据命令携带的数据包的长度H以及预制的公式计算该数据包对应的Report ID的值X的过程包括:
当1≤H≤272时,X=H/8;
当273≤H≤528时,X=[(H-272)/64]+34;
当529≤H≤1040时,X=[(H-528)/128]+38;
当H≥1041时,X=[(H-1040)/256]+42。
这里,[n]表示对数据n取整。
需要说明的是,当主机通过应用层给HID设备发送命令时,主机操作层会自动判断该命令的命令格式中的Report ID的值是否为HID设备可以接收的Report ID的值,若是,则发送命令成功,否则,发送命令失败。
步骤S104,当HID设备接收到主机发送的GetReport请求时,根据HID设备响应数据包的长度以及预制的公式计算响应数据包对应的Report ID值,并按照约定的协议格式将响应数据包发送至主机。
HID设备收到主机发送的命令后,则对该命令所携带的数据包进行处理。主机向HID设备发送完命令后,会等待HID设备的响应数据,并通过发送GetReport请求以获取HID设备的响应数据。若此时,HID设备还在处理过程中,没有响应主机发送的GetReport请求,当超过预定时间比如4-5s时,主机会认为HID设备没有响应,后续就不能再向此HID设备发送命令。
为了解决上述超时问题,可以设定HID设备每隔3s左右的时间,向主机响应GetReport请求,以告知主机,该HID设备还在进行数据处理过程中,需要主机等待一段时间后再发送GetReport请求。HID设备可以在响应数据的包中携带需要主机等待即Sleep的时间。
本实施例通过主机发送的命令所携带的数据包的长度H以及预制的公式计算主机发送的命令所携带的数据包对应的Report ID的值X,当数据包对应的Report ID的值X属于HID设备可接收的Report ID的值时,将主机命令以其实际数据长度发送出去,命令长度设置灵活,可长可短,从而节约了系统资源。
如图2所示,本发明一实施例提出一种基于HID协议的通讯装置,包括:接收模块201、计算模块202、发送模块203以及响应数据处理模块204,其中:
接收模块201,用于当HID设备与主机连接时,接收HID设备预先报告的Report ID的集合;
本实施例中HID设备比如可以是带有USB接口的U盘、键盘或鼠标等。当HID设备通过USB接口与主机连接时,HID设备会主动将其可以接收的所有Report ID的值即Report ID的集合预先报告给主机接收模块201,当后续主机通过应用层发送给HID设备的命令格式中的Report ID的值为HID可以接收的Report ID的值时,主机发送命令成功,否则,主机发送命令失败。
计算模块202,用于当发送模块203向HID设备发送命令时,根据命令携带的数据包的长度H以及预制的公式计算该数据包对应的Report ID的值X,并按照约定的协议格式组织命令的数据包;
发送模块203,用于当X属于Report ID的集合时,将命令以SetReport请求发送至HID设备;
为了避免现有技术中,主机通过HID协议与HID设备进行通讯时,以固定命令数据长度发送命令,浪费系统资源,在本实施例中,为了实现以主机发送命令的实际数据长度进行发送,在主机发送模块203向HID设备发送命令时,计算模块202根据命令携带的数据包的长度H,并采用预制的公式计算该数据包对应的Report ID的值X。
由于主机发送命令的命令格式为Report ID PaddingNum OpCode OpDataPadding,其中,Report ID为报告描述符的ID号;PaddingNum为补足长度,即Padding的长度;OpCode为操作码,操作码包括:08h、04h、20h以及24h,其中,08h表示设备复位,04h表示明文发送命令,20h表示密钥协商,24h表示密文发送命令;OpData为操作码,Padding为补足数据,因此,根据主机命令所携带的数据包的长度H计算出该数据包实际所使用的Report ID的个数即Report ID的值,然后将命令通过上述命令格式以实际的数据长度进行发送,即可通过主机发送的命令所携带的数据包的实际长度H选择相应的Report ID的值,使得主机发送命令长度可以根据相应的Report ID的值进行灵活设置,从而节约了系统资源。
在本实施例中,根据命令携带的数据包的长度H以及预制的公式计算该数据包对应的Report ID的值X的过程包括:
当1≤H≤272时,X=H/8;
当273≤H≤528时,X=[(H-272)/64]+34;
当529≤H≤1040时,X=[(H-528)/128]+38;
当H≥1041时,X=[(H-1040)/256]+42。
这里,[n]表示对数据n取整。
需要说明的是,当主机通过应用层给HID设备发送命令时,主机操作层会自动判断该命令的命令格式中的Report ID的值是否为HID可以接收的Report ID的值,若是,则发送命令成功,否则,发送命令失败。
响应数据处理模块204,用于当HID设备接收到主机发送的GetReport请求时,根据HID设备响应数据包的长度以及预制的公式计算响应数据包对应的Report ID值,并按照约定的协议格式将响应数据包发送至主机。
HID设备收到主机发送的命令后,则对该命令所携带的数据包进行处理。主机向HID设备发送完命令后,会等待HID设备的响应数据,并通过响应数据处理模块204发送GetReport请求以获取HID设备的响应数据。若此时,HID设备还在处理过程中,没有响应主机发送的GetReport请求,当超过预定时间比如4-5s时,主机会认为HID设备没有响应,后续就不能再向此HID设备发送命令。
为了解决上述超时问题,可以设定HID设备每隔3s左右的时间,向主机响应GetReport请求,以告知主机,该HID设备还在进行数据处理过程中,需要主机等待一段时间后再发送GetReport请求。HID设备可以在响应数据的包中携带需要主机等待即Sleep的时间。
本实施例中装置可以是设置在主机上,也可以为与主机配合的独立的部件。
如图3所示,本发明提出一种基于HID协议的通讯系统,包括:主机301、与主机301通过HID协议通讯的HID设备302;其中:
HID设备302,用于与主机301连接时,向主机301报告该HID设备可接收的Report ID的集合;以及当接收到主机301发送的GetReport请求后,向主机301发送响应数据;
主机301,用于与HID设备302连接时,获取HID设备302报告的ReportID的集合;当向HID设备302发送命令时,根据命令携带的数据包的长度H以及预制的公式计算该数据包对应的Report ID的值X;当X属于Report ID的集合时,将命令发送至HID设备302;以及向HID设备302发送GetReport请求以获取HID设备302的命令响应数据包。
本实施例中主机可以包括上述实施例中所述的装置。
本发明实施例基于HID协议的通讯方法、装置及系统,通过主机发送的命令所携带的数据包的长度H以及预制的公式计算主机发送的命令所携带的数据包对应的Report ID的值X,当数据包对应的Report ID的值X属于HID设备可接收的Report ID的值时,将主机命令以其实际数据长度发送出去,命令长度设置灵活,可长可短,从而提高了通讯效率,节约了系统资源。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (5)
1.一种基于HID协议的通讯方法,其特征在于,包括以下步骤:
当HID设备与主机连接时,接收HID设备预先报告的报告描述符的ID号Report ID的集合;
当主机向HID设备发送命令时,根据所述命令携带的数据包的长度H以及预制的公式计算该数据包对应的Report ID的值X,并按照约定的协议格式组织所述命令的数据包;其中,所述根据命令携带的数据包的长度H以及预制的公式计算该数据包对应的Report ID的值X的步骤包括:
若1≤H≤272,则X=H/8;
若273≤H≤528,则X=[(H-272)/64]+34;
若529≤H≤1040,则X=[(H-528)/128]+38;
若H≥1041,则X=[(H-1040)/256]+42;其中,符号[]表示对其中的数据取整;
当所述X属于所述Report ID的集合时,将所述命令以SetReport请求发送至所述HID设备;
当HID设备接收到主机发送的GetReport请求时,根据HID设备响应数据包的长度以及预制的公式计算响应数据包对应的Report ID值,并按照约定的协议格式将响应数据包发送至主机。
2.根据权利要求1所述的方法,其特征在于,所述命令的发送格式为Report ID PaddingNum OpCode OpData Padding,其中,Report ID为报告描述符的ID号,PaddingNum为补足长度,OpCode为操作码,OpData为操作数据,Padding为补足数据。
3.根据权利要求2所述的方法,其特征在于,所述操作码包括:08h、04h、20h以及24h,其中,08h表示设备复位,04h表示明文发送命令,20h表示密钥协商,24h表示密文发送命令。
4.一种基于HID协议的通讯装置,其特征在于,包括:
接收模块,用于当HID设备与主机连接时,接收HID设备预先报告的报告描述符的ID号Report ID的集合;
计算模块,用于当主机向HID设备发送命令时,根据所述命令携带的数据包的长度H以及预制的公式计算该数据包对应的Report ID的值X,并按照约定的协议格式组织所述命令的数据包;其中,根据命令携带的数据包的长度H以及预制的公式计算该数据包对应的Report ID的值X的过程包括:
当1≤H≤272时,X=H/8;
当273≤H≤528时,X=[(H-272)/64]+34;
当529≤H≤1040时,X=[(H-528)/128]+38;
当H≥1041时,X=[(H-1040)/256]+42;其中,符号[]表示对其中的数据取整;
发送模块,用于当所述X属于所述Report ID的集合时,将所述命令以SetReport请求发送至所述HID设备;
响应数据处理模块,当HID设备接收到主机发送的GetReport请求时,根据HID设备响应数据包的长度以及预制的公式计算响应数据包对应的Report ID值,并按照约定的协议格式将响应数据包发送至主机。
5.根据权利要求4所述的装置,其特征在于,所述命令的发送格式为Report ID PaddingNum OpCode OpData Padding,其中,Report ID为报告描述符的ID号,PaddingNum为补足长度,OpCode为操作码,OpData为操作数据,Padding为补足数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010507144 CN102012886B (zh) | 2010-10-14 | 2010-10-14 | 基于hid协议的通讯方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010507144 CN102012886B (zh) | 2010-10-14 | 2010-10-14 | 基于hid协议的通讯方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102012886A CN102012886A (zh) | 2011-04-13 |
CN102012886B true CN102012886B (zh) | 2012-12-05 |
Family
ID=43843059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010507144 Active CN102012886B (zh) | 2010-10-14 | 2010-10-14 | 基于hid协议的通讯方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102012886B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104991870A (zh) * | 2015-06-10 | 2015-10-21 | 四川华拓光通信股份有限公司 | 基于hid的免驱动光通信仪器接口访问方法 |
CN108388372B (zh) * | 2018-02-24 | 2020-11-06 | 广州视源电子科技股份有限公司 | 一种自适应触摸数据的方法、装置、设备及存储介质 |
CN110175139B (zh) * | 2019-05-08 | 2021-01-05 | 厦门亿联网络技术股份有限公司 | 一种usb设备的通用调试方法及usb设备 |
CN110688052B (zh) * | 2019-09-26 | 2021-06-08 | 广州视源电子科技股份有限公司 | 人机交互设备枚举处理方法、装置及人机交互设备 |
CN110830168B (zh) | 2019-11-11 | 2021-11-02 | 飞天诚信科技股份有限公司 | 一种usb通讯的实现方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2904116Y (zh) * | 2006-03-31 | 2007-05-23 | 北京飞天诚信科技有限公司 | 基于usb接口的智能卡读写器 |
CN101013406A (zh) * | 2007-02-12 | 2007-08-08 | 北京飞天诚信科技有限公司 | 一种可自动安装的信息安全设备及其控制方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100409150C (zh) * | 2006-09-07 | 2008-08-06 | 北京飞天诚信科技有限公司 | 一种提高hid设备通讯速度的方法 |
US20090054069A1 (en) * | 2007-08-24 | 2009-02-26 | Zeetoo, Inc. | Platform Independent Communication Protocol |
-
2010
- 2010-10-14 CN CN 201010507144 patent/CN102012886B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2904116Y (zh) * | 2006-03-31 | 2007-05-23 | 北京飞天诚信科技有限公司 | 基于usb接口的智能卡读写器 |
CN101013406A (zh) * | 2007-02-12 | 2007-08-08 | 北京飞天诚信科技有限公司 | 一种可自动安装的信息安全设备及其控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102012886A (zh) | 2011-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102012886B (zh) | 基于hid协议的通讯方法、装置及系统 | |
CN102297493B (zh) | 监控空调机组的系统和方法 | |
CN102523103B (zh) | 一种工业监控网络数据采集结点 | |
CN102945169A (zh) | 一种基于Android的Native APP融合Web APP开发系统 | |
CN106411619A (zh) | 一种基于低功耗广域网的无线设备升级方法 | |
CN104144466A (zh) | 物联网中传感器接入方法、物联网系统和服务器 | |
CN102736601B (zh) | 设备数据采集、处理装置和方法及设备状态管理系统 | |
CN105704252A (zh) | 低功耗蓝牙设备数据传输方法及装置 | |
CN103839401A (zh) | 一种基于云服务器的集中红外遥控方法 | |
CN103996276A (zh) | 一种电厂数据远程传输系统及方法 | |
CN105227639A (zh) | 一种变电站远程画面传送方法和一种变电站告警直传方法 | |
CN102857552B (zh) | 云技术在电网电力信息控制中的应用 | |
CN103838587A (zh) | 基于gprs的控制系统远程升级方法及装置 | |
CN104518852A (zh) | 一种传输反馈方法 | |
CN102149173B (zh) | 一种指示机器终端发送和接收数据的方法及系统 | |
CN103532595A (zh) | 基于电力载波的电力设备软体升级方法 | |
CN112637370B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN106815006B (zh) | 页面调用方法、装置及页面管理服务器 | |
CN102662716A (zh) | 计算机系统中利用网口实现引导启动控制的方法 | |
CN103532726A (zh) | 信息分发系统 | |
CN102882799B (zh) | 流量可控的集群部署配置系统与方法 | |
CN102801561A (zh) | 一种管理网络设备的方法 | |
CN202203923U (zh) | 一种无电缆锅炉炉管泄漏监控系统 | |
CN202906948U (zh) | 基于modbus_RTU总线的通讯装置 | |
CN202171822U (zh) | 一种统计smt贴片数量的装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20170406 Address after: 100000 room 703-710, room B3, Huayuan Road, Haidian District, Beijing, 7 Patentee after: Beijing Minghua Alliance Technology Co., Ltd. Address before: 518057 Shenzhen, Guangdong, Nanshan District hi tech Zone, Shenzhen Software Park building, room 4, Room 403 Patentee before: Shenzhen Wendingchuang Data Technology Co., Ltd. |
|
TR01 | Transfer of patent right |