CN110830168B - 一种usb通讯的实现方法及装置 - Google Patents
一种usb通讯的实现方法及装置 Download PDFInfo
- Publication number
- CN110830168B CN110830168B CN201911092405.1A CN201911092405A CN110830168B CN 110830168 B CN110830168 B CN 110830168B CN 201911092405 A CN201911092405 A CN 201911092405A CN 110830168 B CN110830168 B CN 110830168B
- Authority
- CN
- China
- Prior art keywords
- command
- report
- upper computer
- data
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0006—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission format
- H04L1/0007—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission format by modifying the frame length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0042—Universal serial bus [USB]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Information Transfer Systems (AREA)
- Accessory Devices And Overall Control Thereof (AREA)
Abstract
本发明公开一种USB通讯的实现方法及装置,该方法包括:步骤S1:当设备接收到上位机发送的命令时,判断命令的类型,如为枚举命令则向所述上位机返回枚举设备总体信息,返回步骤S1;所述设备总体信息包括报告描述符,所述报告描述符包括多个特征,每个特征包括报告标识和对应的报告长度;如为设置报告命令则根据所述设置报告命令获取响应数据并保存,返回步骤S1;如为获取报告命令则根据当前响应数据的长度选择相应的报告长度,获取与所述报告长度对应第二报告标识,根据获取的所述第二报告标识和所述当前响应数据生成返回数据并发送给所述上位机,返回步骤S1。本发明技术方案使数据交互更灵活,通讯速度更快。
Description
技术领域
本发明涉及电子产品领域,尤其涉及一种USB通讯的实现方法及装置。
背景技术
USB HID类设备属于人机交互操作的设备,是一个比较大的类,用于控制计算机操作的某些方面,如USB鼠标、USB键盘、USB游戏操作杆、USB 触摸板、USB轨迹球、电话拨号设备、VCR遥控等等设备。USB HID类设备之间的通讯通过HID(英文全称:Human InterfaceDevice,中文全称:人机接口设备)协议来实现。现有技术中,HID通讯协议一次交互数据包大小固定,发送数据的长度大于固定的数据包大小时,需要分包多次交互才能完成数据发送,通讯速度慢。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种USB通讯的实现方法及装置。
本发明提供了一种USB通讯的实现方法,包括:
步骤S1:当设备接收到上位机发送的命令时,判断命令的类型,如为枚举命令则执行步骤S2,如为设置报告命令则执行步骤S3,如为获取报告命令则执行步骤S4;
步骤S2:所述设备向所述上位机返回枚举设备总体信息,返回步骤S1;所述设备总体信息包括报告描述符,所述报告描述符包括多个特征,每个特征包括报告标识和对应的报告长度;
步骤S3:所述设备根据所述设置报告命令获取响应数据并保存,返回步骤S1;
步骤S4:所述设备根据当前响应数据的长度选择相应的报告长度,获取与所述报告长度对应第二报告标识,根据获取的所述第二报告标识和所述当前响应数据生成返回数据并发送给所述上位机,返回步骤S1。
进一步地,所述步骤S2包括:
当所述设备接收到所述上位机发送的获取状态请求时所述设备给所述上位机返回设备状态信息;
当所述设备接收到所述上位机发送的获取设备描述符命令时根据所述获取设备描述符命令中的获取数据长度返回相应的数据;所述返回相应的数据为当前信号通路支持的最大数据包长度的响应数据或完整的设备描述符;
当所述设备接收到所述上位机发送的设置地址请求时所述设备保存所述设置地址请求中的新地址并给所述上位机返回确认响应;
当所述设备接收到所述 上位机发送的获取设备配置描述符命令时所述设备将完整配置信息发送给所述上位机;
当所述设备接收到所述上位机发送的获取设备字符串描述符命令,所述设备将描述字符集发送给所述上位机;
当所述设备接收到所述上位机发送的获取人机接口设备描述符命令,所述设备给所述上位机返回人机接口设备描述符;
当所述设备接收到所述上位机发送的获取报告描述符命令时所述设备给所述上位机返回报告描述符;所述报告描述符包括多个特征,每个特征包括报告标识和对应的报告长度;
当所述设备接收到所述上位机发送的设置配置命令时对所述设备进行配置。
进一步地,所述当所述设备接收到所述上位机发送的获取设备配置描述符命令时所述设备将完整配置信息发送给所述上位机,包括:所述设备每次接收到获取设备配置描述符命令后,将对应的配置信息发送给所述上位机。
进一步地,所述步骤S4包括:所述设备根据当前响应数据的长度选择大于且最接近的报告长度,在报告描述符中获取包含所述报告长度的第二特征,获取所述第二特征中的第二报告标识,将获取的所述第二报告标识和所述响应数据顺序拼接生成返回数据并发送给所述上位机,返回步骤S1。
进一步地,所述步骤S1包括:当设备接收到上位机发送的命令时,根据命令头判断命令的类型,如命令头为第三数据则命令的类型为枚举命令,执行步骤S2,如命令头为第一数据则命令的类型为设置报告命令,执行步骤S3,如命令头为第二数据则命令的类型为获取报告命令,执行步骤S4。
进一步地,所述步骤S3具体为:所述设备根据所述设置报告命令中的第一报告标识查找对应的报告长度,根据查找到的报告长度从所述设置报告命令中获取对应长度的数据,处理获取到数据并生成响应数据,保存所述响应数据,返回步骤S1。
进一步地,所述步骤S3之前还包括:所述设备获取所述设置报告命令中数据域的第一字节数据得到所述第一报告标识。
本发明又提供了一种USB通讯的实现装置,包括:
接收模块,用于接收上位机发送的命令;
第一判断模块,用于判断所述接收模块接收到的命令的类型,如为枚举命令则触发第一发送模块,如为设置报告命令则触发获取保存模块,如为获取报告命令则触发选择获取模块;
所述第一发送模块,用于向所述上位机返回枚举设备总体信息,触发所述接收模块;所述设备总体信息包括报告描述符,所述报告描述符包括多个特征,每个特征包括报告标识和对应的报告长度;
所述获取保存模块,用于根据所述设置报告命令获取响应数据并保存,触发所述接收模块;
所述选择获取模块,用于根据当前响应数据的长度选择相应的报告长度,获取与所述报告长度对应第二报告标识,根据获取的所述第二报告标识和所述当前响应数据生成返回数据;
第二发送模块,用于将所述选择获取模块生成的返回数据发送给所述上位机,触发所述接收模块。
进一步地,所述第一发送模块包括:
第一返回单元,用于当所述接收模块接收到所述上位机发送的获取状态请求时,给所述上位机返回设备状态信息;
第二返回单元,用于当所述接收模块接收到所述上位机发送的获取设备描述符命令时,根据所述获取设备描述符命令中的获取数据长度返回相应的数据;所述返回相应的数据为当前信号通路支持的最大数据包长度的响应数据或完整的设备描述符;
第三返回单元,用于当所述接收模块接收到所述上位机发送的设置地址请求时,保存所述设置地址请求中的新地址并给所述上位机返回确认响应;
第四返回单元,用于当所述接收模块接收到所述 上位机发送的获取设备配置描述符命令时,将完整配置信息发送给所述上位机;
第五返回单元,用于当所述接收模块接收到所述上位机发送的获取设备字符串描述符命令时,将描述字符集发送给所述上位机;
第六返回单元,用于当所述接收模块接收到所述上位机发送的获取人机接口设备描述符命令时,给所述上位机返回人机接口设备描述符;
第七返回单元,用于当所述接收模块接收到所述上位机发送的获取报告描述符命令时,给所述上位机返回报告描述符;所述报告描述符包括多个特征,每个特征包括报告标识和对应的报告长度;
设置单元,用于当所述接收模块接收到所述上位机发送的设置配置命令时对所述设备进行配置。
进一步地,所述第四返回单元具体用于当所述接收模块每次接收到获取设备配置描述符命令后,将对应的配置信息发送给所述上位机。
进一步地,所述选择获取模块具体用于根据当前响应数据的长度选择大于且最接近的报告长度,在报告描述符中获取包含所述报告长度的第二特征,获取所述第二特征中的第二报告标识,将获取的所述第二报告标识和所述响应数据顺序拼接生成返回数据。
进一步地,所述第一判断模块具体用于当所述接收模块接收到上位机发送的命令时,根据命令头判断命令的类型,如命令头为第三数据则命令的类型为枚举命令,触发第一发送模块,如命令头为第一数据则命令的类型为设置报告命令,触发获取保存模块,如命令头为第二数据则命令的类型为获取报告命令,触发选择获取模块。
进一步地,所述获取保存模块具体用于根据所述设置报告命令中的第一报告标识查找对应的报告长度,根据查找到的报告长度从所述设置报告命令中获取对应长度的数据,处理获取到数据并生成响应数据,保存所述响应数据,触发所述接收模块。
进一步地,所述装置还包括:
获取模块,用于获取所述设置报告命令中数据域的第一字节数据得到所述第一报告标识,触发所述获取保存模块。
本发明与现有技术相比,具有以下优点:
本发明技术方案适用于上位机与设备之间的数据通讯过程,在枚举过程中设置上位机与设备之间的交互数据的长度是不固定的,即报告描述符设置多个特征,每个特征中的报告长度均不同,通讯时根据需要选择相应的报告长度,将对应的报告标识发送给对方,无论交互数据有多长均可一次发送完成而无需进行分包,使数据交互更灵活,通讯速度更快。
附图说明
图1为本发明实施例一提供的一种USB通讯的实现方法流程图;
图2和图3为本发明实施例二提供的一种USB通讯的实现方法流程图;
图4为本发明实施例三提供的一种USB通讯的实现装置方框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例一提供一种USB通讯的实现方法,如图1所示,包括:
步骤S1:当设备接收到上位机发送的命令时,判断命令的类型,如为枚举命令则执行步骤S2,如为设置报告命令则执行步骤S3,如为获取报告命令则执行步骤S4;
可选的,步骤S1包括:当设备接收到上位机发送的命令时,根据命令头判断命令的类型,如命令头为第三数据则命令的类型为枚举命令,执行步骤S2,如命令头为第一数据则命令的类型为设置报告命令,执行步骤S3,如命令头为第二数据则命令的类型为获取报告命令,执行步骤S4;
步骤S2:设备向上位机返回枚举设备总体信息,返回步骤S1;
在本实施例中,设备总体信息包括报告描述符,报告描述符包括多个特征,每个特征包括报告标识和对应的报告长度;
步骤S3:设备根据设置报告命令获取响应数据并保存,返回步骤S1;
可选的,步骤S3具体为:所述设备根据所述设置报告命令中的第一报告标识查找对应的报告长度,根据查找到的报告长度从所述设置报告命令中获取对应长度的数据,处理获取到数据并生成响应数据,保存所述响应数据,返回步骤S1;
优选的,在本实施例中,步骤S3之前还包括:设备获取设置报告命令中数据域的第一字节数据得到第一报告标识;
步骤S4:设备根据当前响应数据的长度选择相应的报告长度,获取与报告长度对应的第二报告标识,根据获取的第二报告标识和当前响应数据生成返回数据并发送给上位机,返回步骤S1;
具体的,本实施例中的步骤S4包括:设备根据当前响应数据的长度选择大于且最接近的报告长度,在报告描述符中获取包含报告长度的第二特征,获取第二特征中的第二报告标识,将获取的第二报告标识和当前响应数据顺序拼接生成返回数据并发送给上位机,返回步骤S1。
在本实施例中,步骤S2包括:
当设备接收到上位机发送的获取状态请求时设备给上位机返回设备状态信息;
可选的,设备状态信息包括重启状态信息;
当设备接收到上位机发送的获取设备描述符命令时根据获取设备描述符命令中的获取数据长度返回相应的数据;
具体的,在本实施例中,返回相应的数据为当前信号通路支持的最大数据包长度的响应数据或完整的设备描述符;
当设备接收到上位机发送的设置地址请求时,设备保存设置地址请求中的新地址并给上位机返回确认响应;
当设备接收到所述 上位机发送的获取设备配置描述符命令时设备将完整配置信息发送给上位机;
在本实施例中,当设备接收到所述 上位机发送的获取设备配置描述符命令时设备将完整配置信息发送给上位机,包括:设备每次接收到获取设备配置描述符命令后,将对应的配置信息发送给上位机;
当设备接收到上位机发送的获取设备字符串描述符命令,设备将描述字符集发送给上位机;
当设备接收到上位机发送的获取人机接口设备描述符命令,设备给上位机返回人机接口设备描述符;
当设备接收到上位机发送的获取报告描述符命令时设备给上位机返回报告描述符;报告描述符包括多个特征,每个特征包括报告标识和对应的报告长度;
当设备接收到上位机发送的设置配置命令时对设备进行配置。
实施例二
本发明实施例二提供一种USB通讯的实现方法,本实施例方法包括枚举过程和数据传输过程,枚举过程如图2所示,包括:
步骤A1:上位机通过集线器通过监视每个端口的信号电压,当监视信号电压升高则有设备插入,执行步骤A2;
具体的,上位机的集线器端口的两根信号线的每一根都有15kΩ的下拉电阻,而每一个设备在D+都有一个1.5kΩ的上拉电阻。当用USB线将上位机和设备接通后,设备的上拉电阻使信号电压升高,集线器就会检测到有设备插入;
步骤A2:上位机给设备发送Get_Status(获取状态)请求;
在本实施例中,集线器通过中断传输给上位机报告有设备插入的事件,上位机通过集线器给设备发送Get_Status(获取状态)请求;
步骤A3:设备给上位机返回设备与上位机的连接时间;
步骤A4:上位机给集线器发送Set_Feature(设置特征)请求,集线器重启设备端口,建立一个设备与上位机之间的信号通路;
在本实施例中,上位机给集线器发送一个Set_Feature(设置特征)请求,请求集线器来重启设备端口,使得设备的USB数据线处于重启(RESET)状态至少10ms,然后建立一个设备与上位机之间的信号通路;
步骤A5:上位机给设备发送Get_Status(获取状态)请求;
步骤A6:设备给上位机返回设备仍然处于重启状态信息;
在本实施例中,当集线器释放了重启状态,设备就处于默认状态了,设备已经准备好通过Endpoint 0(端点0)的默认流程响应控制传输,即设备现在使用默认地址0x00与上位机开始进行通信;
步骤A7:上位机通过集线器检测设备类型;
具体的,上位机通过集线器测定哪根信号线(D+或D-)在空闲时有更高的电压来检测设备是低速设备还是全速设备,全速和高速设备D+有上拉电阻,低速设备D-有上拉电阻;
步骤A8:上位机向默认地址的设备发送Get_Device_Descriptor(获取设备描述符)命令;
步骤A9:设备将包含当前信号通路支持的最大数据包长度的响应数据返回给上位机;
具体的,在本实施例中,上位机向address 0(对应默认地址0x00)发送 Get_Device_Descriptor(获取设备描述符)命令,获取缺省控制管道所支持的最大数据包长度,在预设时间内等待USB设备的响应;当接收到设备的响应时获取前8个字节数据得到最大数据包长度;
步骤A10:上位机给设备发送包含新地址的Set_Address(设置地址)请求;
步骤A11:设备保存Set_Address(设置地址)请求中的新地址并给上位机返回确认响应;
具体的,在本实施例中,上位机通过给设备发送一个Set_Address(设置地址)请求来分配一个唯一的地址给设备;设备读取Set_Address(设置地址)请求,给上位机返回确认响应,并保存新的地址;
步骤A12:上位机向新地址的设备重新发送Get_Device_Descriptor(获取设备描述符)命令;
步骤A13:设备将设备描述符发送给上位机,上位机获取设备的总体信息;
例如,设备的总体信息包括VID(厂商标识)、PID(产品标识)等,返回的设备描述符中bDeviceClass(设备类型)、bDeviceSubClass(设备子类型)、 bDeviceProtocol(设备协议)的值均为0;
步骤A14:上位机发送Get_Device_Configuration(获取设备配置描述符)命令;
具体的,上位机向设备循环发送Get_Device_Configuration(获取设备配置描述符)命令,以读取设备的全部配置信息;其中配置信息的接口描述符中 bInterFaceClass(接口类型)的值为0x03,表明该设备为HID(人机接口设备) 设备;
步骤A15:设备将完整配置信息发送给上位机;
步骤A16:上位机给设备发送Get_Device_String(获取设备字符串描述符)命令;
步骤A17:设备将描述字符集发送给上位机;
具体的,描述字符集包括:厂商、产品描述、型号等信息;
步骤A18:上位机给设备发送获取HID(人机接口设备)描述符命令;
步骤A19:设备给上位机返回HID描述符;
其中HID(人机接口设备)描述符中指示需要返回报告描述符;
步骤A20:上位机给设备发送获取报告描述符命令;
步骤A21:设备给上位机返回报告描述符;
具体的,报告描述符中有多个Feature(特征),不同Feature(特征)通过 ReportID(报告标识)区分,且每个Feature(特征)的Report size(报告长度) 不同;其中ReportSize(报告长度)表示可发送的数据长度和可接收的响应长度,包括最小长度(0x01)和最大长度(0xFFFF),即不同的数据长度,有一个对应的ReprotID(报告标识);
例如,本实施例中的报告描述符为:HID(Human Interface Device)报告描述符的内容如下:
在上述报告描述符中,报告标识的值为0x01-0x32。其中报告标识为0x01,一次通信的数据长度为0x07,即7个字节;报告标识为0x2E,一次通信的数据长度为0x080F......;
步骤A22:上位机显示发现的新设备信息;
具体的,上位机弹出窗口展示发现新设备的信息,包括:产商、产品描述、型号等;
步骤A23:上位机给设备发送Set_Configuration(x)(设置配置)命令,对设备进行配置;
具体的,在本实施例中,上位机加载了USB设备驱动以后,给设备发送 Set_Configuration(x)(设置配置)命令(x代表非0的配置值)请求对该设备进行配置,如果配置成功,USB设备进入“配置”状态,并可以和客户软件进行数据传输;
数据传输过程如图3所示包括:
步骤B1:上位机根据待发送数据的长度选择报告长度,并获取该报告长度对应的报告标识;
具体的,其中发送数据的长度选择大于该长度且最接近的报告长度;
例如,本实施例中的待发送数据长度为512,内容具体为:
5555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555;
发送数据的格式为:00 D6 00 00 00 02 00||待更新数据;发送数据总长度为:512+7=519字节,根据发送数据总长度选择的报告长度应该大于519且为最小的一个,本实施例中查找到的报告长度为0x020F即527,对应的报告标识为 0x26;
步骤B2:上位机将报告标识和待发送数据拼接生成数据包;
具体的,在本实施例中,上位机在待发送数据前填充报告标识,如填充报告标识后的数据长度小于该报告标识对应的报告长度,则在待发送数据尾部填充数据(00)至报告长度。例如,本实施例中,填充后的数据为:
26 00 D6 00 00 00 02 00
5555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555 0000000000000000;
步骤B3:上位机调用SetFeature()接口向设备发送包含数据包的设置报告命令;
例如,本实施例中调用SetFeature接口先设备发送的设置报告命令为:
21 09 26 03 00 00 0F 02
26 00 D6 00 00 00 02 00
5555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555555555555555555555 55555555 0000000000000000;
步骤B4:当上位机检测到设置报告命令发送完成之后,根据最大数据长度对应的报告标识生成获取报告命令并发送给设备,等待接收设备返回的响应;
例如,本实施例中获取报告命令为:A1 01 32 03 00 00 FF 0F;
步骤B5:当设备接收到命令时,并判断命令的类型,如为设置报告命令则执行步骤B6,如为获取报告命令则执行步骤B8;
具体的,在本实施例中,设备判断命令的头部,如为21 09则命令类型为设置报告命令,如为A1 01则命令类型为获取报告命令;
步骤B6:设备获取接收到的命令中的报告标识,根据上报的报告描述符查找报告标识对应的报告长度,根据报告长度从命令中获取对应长度的数据;
步骤B7:设备处理获取到的数据并生成响应数据,等待接收数据,返回步骤B5;
步骤B8:设备根据响应数据的长度选择报告描述符中相应的报告长度并获取对应的报告标识,根据报告标识和响应数据组织生成返回数据;
具体的,设备选择报告描述符中大于响应数据的长度且与其最接近的报告长度的值;
例如,本实施例中的响应数据为00 02 90 00,即响应数据的长度为4字节,获取的报告标识为0x01即可,组织生成的返回数据为:01 00 02 90 00 00 00 00;
步骤B9:设备将组织生成的返回数据返回给上位机;
例如,本实施例中的返回数据为:01 00 02 90 00 00 00 00;
步骤B10:上位机GetFeature()接口接收返回数据,获取返回数据中的报告标识,在报告描述符中查找报告标识对应的报告长度,根据报告长度从返回数据中获取对应长度的响应数据,对该响应数据进行处理。
实施例三
本发明实施例三提供一种USB通讯的实现装置,如图4所示,包括:
接收模块401,用于接收上位机发送的命令;
第一判断模块402,用于判断接收模块401接收到的命令的类型,如为枚举命令则触发第一发送模块403,如为设置报告命令则触发获取保存模块404,如为获取报告命令则触发选择获取模块405;
在本实施例中,第一判断模块402具体用于当接收模块401接收到上位机发送的命令时,根据命令头判断命令的类型,如命令头为第三数据则命令的类型为枚举命令,触发第一发送模块403,如命令头为第一数据则命令的类型为设置报告命令,触发获取保存模块404,如命令头为第二数据则命令的类型为获取报告命令,触发选择获取模块405;
第一发送模块403,用于向上位机返回枚举设备总体信息,触发接收模块 401;设备总体信息包括报告描述符,报告描述符包括多个特征,每个特征包括报告标识和对应的报告长度;
获取保存模块404,用于根据设置报告命令获取响应数据并保存,触发接收模块401;
在本实施例中,获取保存模块404具体用于根据设置报告命令中的第一报告标识查找对应的报告长度,根据查找到的报告长度从设置报告命令中获取对应长度的数据,处理获取到数据并生成响应数据,保存响应数据,触发接收模块401;可选的,本实施例的装置还包括:获取模块,用于获取设置报告命令中数据域的第一字节数据得到第一报告标识,触发获取保存模块404;
选择获取模块405,用于根据当前响应数据的长度选择相应的报告长度,获取与报告长度对应第二报告标识,根据获取的第二报告标识和当前响应数据生成返回数据;
在本实施例中,选择获取模块405具体用于根据当前响应数据的长度选择大于且最接近的报告长度,在报告描述符中获取包含报告长度的第二特征,获取第二特征中的第二报告标识,将获取的第二报告标识和响应数据顺序拼接生成返回数据;
第二发送模块406,用于将选择获取模块405生成的返回数据发送给上位机,触发接收模块401。
具体的,在本实施例中,第一发送模块403包括:
第一返回单元,用于当接收模块401接收到上位机发送的获取状态请求时,给上位机返回设备状态信息;
第二返回单元,用于当接收模块401接收到上位机发送的获取设备描述符命令时,根据获取设备描述符命令中的获取数据长度返回相应的数据;返回相应的数据为当前信号通路支持的最大数据包长度的响应数据或完整的设备描述符;
第三返回单元,用于当接收模块401接收到上位机发送的设置地址请求时,保存设置地址请求中的新地址并给上位机返回确认响应;
第四返回单元,用于当接收模块401接收到所述 上位机发送的获取设备配置描述符命令时,将完整配置信息发送给上位机;
在本实施例中,第四返回单元具体用于当接收模块401每次接收到获取设备配置描述符命令后,将对应的配置信息发送给上位机;
第五返回单元,用于当接收模块401接收到上位机发送的获取设备字符串描述符命令时,将描述字符集发送给上位机;
第六返回单元,用于当接收模块401接收到上位机发送的获取人机接口设备描述符命令时,给上位机返回人机接口设备描述符;
第七返回单元,用于当接收模块401接收到上位机发送的获取报告描述符命令时,给上位机返回报告描述符;报告描述符包括多个特征,每个特征包括报告标识和对应的报告长度;
设置单元,用于当接收模块401接收到上位机发送的设置配置命令时对设备进行配置。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (10)
1.一种USB通讯的实现方法,其特征在于,包括:
步骤S1:当设备接收到上位机发送的命令时,判断命令的类型,如为枚举命令则执行步骤S2,如为设置报告命令则执行步骤S3,如为获取报告命令则执行步骤S4;
步骤S2:所述设备向所述上位机返回枚举设备总体信息,返回步骤S1;所述设备总体信息包括报告描述符,所述报告描述符包括多个特征,每个特征包括报告标识和对应的报告长度;
步骤S3:所述设备根据所述设置报告命令获取响应数据并保存,返回步骤S1;
步骤S4:所述设备根据当前响应数据的长度选择相应的报告长度,获取与所述报告长度对应第二报告标识,根据获取的所述第二报告标识和所述当前响应数据生成返回数据并发送给所述上位机,返回步骤S1;
所述步骤S3具体为:所述设备根据所述设置报告命令中的第一报告标识查找对应的报告长度,根据查找到的报告长度从所述设置报告命令中获取对应长度的数据,处理获取到数据并生成响应数据,保存所述响应数据,返回步骤S1;
所述步骤S4包括:所述设备根据当前响应数据的长度选择大于且最接近的报告长度,在报告描述符中获取包含所述报告长度的第二特征,获取所述第二特征中的第二报告标识,将获取的所述第二报告标识和所述响应数据顺序拼接生成返回数据并发送给所述上位机,返回步骤S1。
2.如权利要求1所述的方法,其特征在于,所述步骤S2包括:
当所述设备接收到所述上位机发送的获取状态请求时所述设备给所述上位机返回设备状态信息;
当所述设备接收到所述上位机发送的获取设备描述符命令时根据所述获取设备描述符命令中的获取数据长度返回相应的数据;所述返回相应的数据为当前信号通路支持的最大数据包长度的响应数据或完整的设备描述符;
当所述设备接收到所述上位机发送的设置地址请求时所述设备保存所述设置地址请求中的新地址并给所述上位机返回确认响应;
当所述设备接收到所述 上位机发送的获取设备配置描述符命令时所述设备将完整配置信息发送给所述上位机;
当所述设备接收到所述上位机发送的获取设备字符串描述符命令,所述设备将描述字符集发送给所述上位机;
当所述设备接收到所述上位机发送的获取人机接口设备描述符命令,所述设备给所述上位机返回人机接口设备描述符;
当所述设备接收到所述上位机发送的获取报告描述符命令时所述设备给所述上位机返回报告描述符;所述报告描述符包括多个特征,每个特征包括报告标识和对应的报告长度;
当所述设备接收到所述上位机发送的设置配置命令时对所述设备进行配置。
3.如权利要求2所述的方法,其特征在于,所述当所述设备接收到所述上位机发送的获取设备配置描述符命令时所述设备将完整配置信息发送给所述上位机,包括:所述设备每次接收到获取设备配置描述符命令后,将对应的配置信息发送给所述上位机。
4.如权利要求1所述的方法,其特征在于,所述步骤S1包括:当设备接收到上位机发送的命令时,根据命令头判断命令的类型,如命令头为第三数据则命令的类型为枚举命令,执行步骤S2,如命令头为第一数据则命令的类型为设置报告命令,执行步骤S3,如命令头为第二数据则命令的类型为获取报告命令,执行步骤S4。
5.如权利要求1所述的方法,其特征在于,所述步骤S3之前还包括:所述设备获取所述设置报告命令中数据域的第一字节数据得到所述第一报告标识。
6.一种USB通讯的实现装置,其特征在于,包括:
接收模块,用于接收上位机发送的命令;
第一判断模块,用于判断所述接收模块接收到的命令的类型,如为枚举命令则触发第一发送模块,如为设置报告命令则触发获取保存模块,如为获取报告命令则触发选择获取模块;
所述第一发送模块,用于向所述上位机返回枚举设备总体信息,触发所述接收模块;所述设备总体信息包括报告描述符,所述报告描述符包括多个特征,每个特征包括报告标识和对应的报告长度;
所述获取保存模块,用于根据所述设置报告命令获取响应数据并保存,触发所述接收模块;
所述选择获取模块,用于根据当前响应数据的长度选择相应的报告长度,获取与所述报告长度对应第二报告标识,根据获取的所述第二报告标识和所述当前响应数据生成返回数据;
第二发送模块,用于将所述选择获取模块生成的返回数据发送给所述上位机,触发所述接收模块;
所述获取保存模块具体用于根据所述设置报告命令中的第一报告标识查找对应的报告长度,根据查找到的报告长度从所述设置报告命令中获取对应长度的数据,处理获取到数据并生成响应数据,保存所述响应数据,触发所述接收模块;
所述选择获取模块具体用于根据当前响应数据的长度选择大于且最接近的报告长度,在报告描述符中获取包含所述报告长度的第二特征,获取所述第二特征中的第二报告标识,将获取的所述第二报告标识和所述响应数据顺序拼接生成返回数据。
7.如权利要求6所述的装置,其特征在于,所述第一发送模块包括:
第一返回单元,用于当所述接收模块接收到所述上位机发送的获取状态请求时,给所述上位机返回设备状态信息;
第二返回单元,用于当所述接收模块接收到所述上位机发送的获取设备描述符命令时,根据所述获取设备描述符命令中的获取数据长度返回相应的数据;所述返回相应的数据为当前信号通路支持的最大数据包长度的响应数据或完整的设备描述符;
第三返回单元,用于当所述接收模块接收到所述上位机发送的设置地址请求时,保存所述设置地址请求中的新地址并给所述上位机返回确认响应;
第四返回单元,用于当所述接收模块接收到所述 上位机发送的获取设备配置描述符命令时,将完整配置信息发送给所述上位机;
第五返回单元,用于当所述接收模块接收到所述上位机发送的获取设备字符串描述符命令时,将描述字符集发送给所述上位机;
第六返回单元,用于当所述接收模块接收到所述上位机发送的获取人机接口设备描述符命令时,给所述上位机返回人机接口设备描述符;
第七返回单元,用于当所述接收模块接收到所述上位机发送的获取报告描述符命令时,给所述上位机返回报告描述符;所述报告描述符包括多个特征,每个特征包括报告标识和对应的报告长度;
设置单元,用于当所述接收模块接收到所述上位机发送的设置配置命令时对所述设备进行配置。
8.如权利要求7所述的装置,其特征在于,所述第四返回单元具体用于当所述接收模块每次接收到获取设备配置描述符命令后,将对应的配置信息发送给所述上位机。
9.如权利要求6所述的装置,其特征在于,所述第一判断模块具体用于当所述接收模块接收到上位机发送的命令时,根据命令头判断命令的类型,如命令头为第三数据则命令的类型为枚举命令,触发第一发送模块,如命令头为第一数据则命令的类型为设置报告命令,触发获取保存模块,如命令头为第二数据则命令的类型为获取报告命令,触发选择获取模块。
10.如权利要求6所述的装置,其特征在于,所述装置还包括:
获取模块,用于获取所述设置报告命令中数据域的第一字节数据得到所述第一报告标识,触发所述获取保存模块。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911092405.1A CN110830168B (zh) | 2019-11-11 | 2019-11-11 | 一种usb通讯的实现方法及装置 |
PCT/CN2020/127870 WO2021093734A1 (zh) | 2019-11-11 | 2020-11-10 | 一种usb通讯的实现方法及装置 |
US17/478,829 US11663155B2 (en) | 2019-11-11 | 2021-09-17 | Method and apparatus for realizing USB communication |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911092405.1A CN110830168B (zh) | 2019-11-11 | 2019-11-11 | 一种usb通讯的实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110830168A CN110830168A (zh) | 2020-02-21 |
CN110830168B true CN110830168B (zh) | 2021-11-02 |
Family
ID=69553656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911092405.1A Active CN110830168B (zh) | 2019-11-11 | 2019-11-11 | 一种usb通讯的实现方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11663155B2 (zh) |
CN (1) | CN110830168B (zh) |
WO (1) | WO2021093734A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110830168B (zh) * | 2019-11-11 | 2021-11-02 | 飞天诚信科技股份有限公司 | 一种usb通讯的实现方法及装置 |
CN112000374B (zh) * | 2020-07-13 | 2024-01-02 | 深圳市智微智能软件开发有限公司 | 应用于安卓系统的usb触摸屏更换方法、装置、设备及介质 |
CN115442083B (zh) * | 2022-08-08 | 2023-08-25 | 黄建邦 | 设备接入方法、数据交换方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012886A (zh) * | 2010-10-14 | 2011-04-13 | 深圳市文鼎创数据科技有限公司 | 基于hid协议的通讯方法、装置及系统 |
CN102638397A (zh) * | 2012-03-21 | 2012-08-15 | 华为终端有限公司 | 一种usb设备通信传输方法、设备及系统 |
CN106406967A (zh) * | 2016-11-15 | 2017-02-15 | 恒鸿达信息技术有限公司 | 一种基于stm32的usb在线升级方法及系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7660611B1 (en) * | 2004-03-25 | 2010-02-09 | Cypress Semiconductor Corporation | Wireless human interface device packet compression system and method for reducing power consumption |
CN100409150C (zh) * | 2006-09-07 | 2008-08-06 | 北京飞天诚信科技有限公司 | 一种提高hid设备通讯速度的方法 |
TW200943188A (en) * | 2008-04-01 | 2009-10-16 | Sunplus Innovation Technology Inc | A method for automatically detecting an operating system on a USB device |
US7873764B2 (en) * | 2008-08-15 | 2011-01-18 | Video Products, Inc. | Switch with enhanced human interface device support |
CN102331943B (zh) * | 2011-09-08 | 2014-09-17 | 威盛电子股份有限公司 | 在线更新存储器系统与方法 |
CN105184566B (zh) * | 2015-06-16 | 2018-07-17 | 飞天诚信科技股份有限公司 | 一种智能密钥设备的工作方法 |
US10516738B2 (en) * | 2015-09-25 | 2019-12-24 | Intel Corporation | Sensor lifecycle management system |
CN110830168B (zh) * | 2019-11-11 | 2021-11-02 | 飞天诚信科技股份有限公司 | 一种usb通讯的实现方法及装置 |
-
2019
- 2019-11-11 CN CN201911092405.1A patent/CN110830168B/zh active Active
-
2020
- 2020-11-10 WO PCT/CN2020/127870 patent/WO2021093734A1/zh active Application Filing
-
2021
- 2021-09-17 US US17/478,829 patent/US11663155B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012886A (zh) * | 2010-10-14 | 2011-04-13 | 深圳市文鼎创数据科技有限公司 | 基于hid协议的通讯方法、装置及系统 |
CN102638397A (zh) * | 2012-03-21 | 2012-08-15 | 华为终端有限公司 | 一种usb设备通信传输方法、设备及系统 |
CN106406967A (zh) * | 2016-11-15 | 2017-02-15 | 恒鸿达信息技术有限公司 | 一种基于stm32的usb在线升级方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US20220004519A1 (en) | 2022-01-06 |
WO2021093734A1 (zh) | 2021-05-20 |
US11663155B2 (en) | 2023-05-30 |
CN110830168A (zh) | 2020-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110830168B (zh) | 一种usb通讯的实现方法及装置 | |
US9832285B2 (en) | Automating user's operations | |
US20120303373A1 (en) | Electronic apparatus and method for controlling the electronic apparatus using voice | |
JP5129770B2 (ja) | ネットワーク装置 | |
EP4130953A1 (en) | Device state identification method and apparatus, and smart terminal | |
CN110069288B (zh) | Usb设备共享方法、装置及系统 | |
JP5242558B2 (ja) | Usb割込みエンドポイントの共有 | |
CN107391106A (zh) | 相机参数的初始化方法及终端 | |
US20090019192A1 (en) | Usb transmission system and related method for accessing data in a first usb specification with a speed of a second usb specification | |
CN101316203B (zh) | 嵌入式ip终端网络连接状态监测方法 | |
CN111443847B (zh) | 一种推送消息处理方法及电子设备 | |
CN110768332A (zh) | 充电盒及其充电控制方法、可读存储介质 | |
CN112835839A (zh) | PCIe接口的设备枚举方法、装置、设备及存储介质 | |
CN113852564A (zh) | 一种服务器控制方法、装置、介质 | |
TWI361380B (en) | Electronic devices and methods for managing mass storage devices | |
CN112316417A (zh) | 控制设备连接方法、装置、设备及计算机可读存储介质 | |
CN110881224A (zh) | 一种网络长连接方法、装置、设备及存储介质 | |
US20160077986A1 (en) | Electronic apparatus providing real-time switching and sharing of usb electronic devices among hosts | |
CN111770043A (zh) | 游戏数据通信方法、装置、存储介质及电子设备 | |
CN104570967B (zh) | 基于Android系统的远程控制方法及系统 | |
CN107153456A (zh) | Otg连接控制方法、otg连接控制装置及电子设备 | |
CN111181218A (zh) | 充电提示方法、电子设备及介质 | |
CN114268935A (zh) | 设备连接方法、终端及存储介质 | |
CN110704219B (zh) | 一种硬件故障上报方法、装置和计算机存储介质 | |
CN103902395B (zh) | 信息输入的控制方法及电子终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |