CN102890662B - 通过对usb hid设备进行二次枚举以识别主机操作系统的方法 - Google Patents

通过对usb hid设备进行二次枚举以识别主机操作系统的方法 Download PDF

Info

Publication number
CN102890662B
CN102890662B CN201210402673.0A CN201210402673A CN102890662B CN 102890662 B CN102890662 B CN 102890662B CN 201210402673 A CN201210402673 A CN 201210402673A CN 102890662 B CN102890662 B CN 102890662B
Authority
CN
China
Prior art keywords
usb hid
hid device
operating system
host operating
main frame
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
Application number
CN201210402673.0A
Other languages
English (en)
Other versions
CN102890662A (zh
Inventor
张晓东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
JIANGSU LEMOTE INFORMATION TECHNOLOGY CO.,LTD.
Original Assignee
WUXI HINORA TECHNOLOGY Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by WUXI HINORA TECHNOLOGY Co Ltd filed Critical WUXI HINORA TECHNOLOGY Co Ltd
Priority to CN201210402673.0A priority Critical patent/CN102890662B/zh
Publication of CN102890662A publication Critical patent/CN102890662A/zh
Application granted granted Critical
Publication of CN102890662B publication Critical patent/CN102890662B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Power Sources (AREA)

Abstract

本发明提供一种通过对USB HID设备进行二次枚举以识别主机操作系统的方法,涉及计算机移动技术领域,以解决现有识别方法只能区别Windows系统,并且在主机不断电的情况下,如果切换了操作系统则需要重新插拔USB HID设备才能识别出当前系统类型的问题,该方法包括以下步骤:USB HID设备上电,并进行初始化;对USB HID设备进行第一次枚举以确定主机操作系统的类型;在USB HID设备与主机操作系统之间依次完成软掉电与再次连接处理后进行第二次枚举,以保证USB HID设备能够正常工作;USB HID设备在接收到主机发送的重启标志后,则重新执行整个流程来判断主机重启后的操作系统。本发明可准确的识别当前系统的类型,在不断电的情况下发生操作系统切换时不必重新插拔USB HID设备。

Description

通过对USB HID设备进行二次枚举以识别主机操作系统的方法
技术领域
本发明涉及计算机移动技术领域,尤其是一种通过对USB HID设备进行二次枚举以识别主机操作系统的方法。
背景技术
由于USB设备具有可热拔插、标准统一、可连接多个设备等优点,使用USB接口的设备与日俱增,例如数码相机、扫描仪、游戏杆、磁带和软驱、图像设备、打印机、键盘、鼠标等等。然而有些USB设备功能的实现方法随着操作系统的不同有很大的区别。这就要求设备能通过某种方法检测到主机的操作系统类型,从而实现其应有的功能。
图1为现有USB设备以识别主机操作系统的流程图,采用图1中的方法是在枚举过程中判断设备类型和是否接收到预设指令来决定当前操作系统类型。然而,此种方法存在着缺陷如下:
1、只能区分WINDOWS操作系统的不同版本,不能区分LINUX操作系统与MAC操作系统;
2、若设备为HID设备,则不能判断操作系统类型,在主机不断电的情况下如果切换了操作系统则需要重新插拔USB HID设备才能识别出当前系统类型;
3、上述方法的操作流程比较复杂。
发明内容
针对上述技术的不足之处,本发明提供一种可准确的识类当前系统的类型,在不断电的情况下发生操作系统切换时不必重新插拔USB HID设备的通过对USB HID设备进行二次枚举以识别主机操作系统的方法。
为实现上述目的,本发明提供一种通过对USB HID设备进行二次枚举以识别主机操作系统的方法,包括以下步骤:
S1、USB HID设备上电,并进行初始化;
S2、对USB HID设备进行第一次枚举以确定主机操作系统的类型;
S3、在USB HID设备与主机操作系统之间依次完成软掉电与再次连接处理后进行第二次枚举,以保证USB HID设备能够正常工作;
S4、USB HID设备在接收到主机发送的重启标志后,则重新执行整个流程来判断主机重启后的操作系统。
在步骤S1中,USB HID设备通过USB总线连接到主机,并从主机的电源电压或工作电压处获取其工作电压。
在步骤S1中,USB HID设备将自身存储的上电标识、操作系统标识初始化为默认标识。
在步骤S2包括以下步骤:
200、USB HID设备接收主机操作系统发送的系统标志性数据;
201、USB HID设备逐一对主机操作系统发送的系统标志性数据做出响应;
202、USB HID设备主机操作系统发送的相关标志性数据存储起来,并根据相关标志性数据判断当前操作系统的类型。
在步骤200与步骤201中,系统标志性数据包括取设备描述符、设置设备地址、取配置描述符、取端点描述符、取字符串描述符、取端点描述符与选择配置。
在步骤S3中包括以下步骤:
300、对USB HID设备与主机操作系统进行软掉电处理后再次连接;
301、根据当前操作系统类型选取相应的配置描述符对USB HID设备进行第二次枚举。
在步骤300中,USB HID设备在预定时间内,使其内部的上拉电阻断开与主机电源电压或工作电压的连接,在超过预定时间后,USB HID设备中的上拉电阻再次与主机的电源电压或工作电压连接,使USB HID设备再次处于上电状态。
在步骤S4中,判断USB HID设备是否收到主机发送的重启标志,若确认收到,则返回步骤S2重新执行;若确认没有收到,则返回步骤S3,检测主机是否发送了重启标志。
与现有技术相比,本发明具有以下优点:
1、本发明具有流程简洁的优点,通过在枚举过程中不同操作系统发送的数据之间的区别、以及主机重启过程中发送给USB HID设备的某些标志性数据来判别出当前正在使用的操作系统类型,与现有USB HID设 备识别主机操作系统的方法相比,不仅可识别出Windows系统的不同版本,如XP、WIN7等,还可识别出Linux操作系统和Mac操作系统;
2、在主机不断电的情况下,如果切换了操作系统,不需要重新插拔USB HID设备就能识别出当前系统类型。
附图说明
图1为现有USB设备以识别主机操作系统的流程图;
图2为本发明的流程图;
图3为图2中步骤S2中的流程图;
图4为图3中步骤S3中的流程图;
图5为本发明的实施例的流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步详细说明。
如图2至图5所示,本发明提供一种通过对USB HID设备进行二次枚举以识别主机操作系统的方法,包括以下步骤:
S1、USB HID设备上电,并进行初始化。
USB HID设备上电后先执行初始化操作;具体地,USB HID设备通过USB总线连接到主机,并从主机Vcc(电源电压或工作电压)处获取工作电压;初始化操作具体包括:USB HID设备将自身存储的上电标识、操作系统标识初始化为默认标识。
S2、对USB HID设备进行第一次枚举以确定主机操作系统的类型。
具体地,在步骤S2包括以下步骤:
200、USB HID设备接收主机操作系统发送的系统标志性数据;
201、USB HID设备逐一对主机操作系统发送的系统标志性数据做出响应;
202、USB HID设备主机操作系统发送的相关标志性数据存储起来,并根据相关标志性数据判断当前操作系统的类型。
在步骤200与步骤201中,系统标志性数据包括取设备描述符、设置设备地址、取配置描述符、取端点描述符、取字符串描述符、取端点描述符与选择配置。
主机操作系统时刻监测USB总线上是否有设备插入,具体是通过检测Vcc上拉电阻的变化来确定的,并在检测到USB设备插入时,加载设备总线驱动,开始对USB设备进行枚举操作,然后USB设备接收主机下发的一系列setup包,包括“取设备描述符”、“设置设备地址”、“取配置描述符”、“取端点描述符”、“取字符串描述符”、“取端点描述符”、“选择配置”等命令,USB HID设备逐一对其做出响应,完成枚举过程。
在枚举过程中将主机发送的某些标志性数据存储起来。如Mac操作系统和Windows7操作系统的区别在于,Mac操作系统不会对USB HID设备发送Set Idle命令,而Windows7操作系统则发送;Mac操作系统和Linux操作系统的区别在于,Linux操作系统不会对设备发送Get InPutReport命令。枚举完成后根据这些标志来判断出当前操作系统类型。
S3、在USB HID设备与主机操作系统之间依次完成软掉电与再次连接处理后进行第二次枚举,以保证USB HID设备能够正常工作。
具体地,在步骤S3中包括以下步骤:
300、对USB HID设备与主机操作系统进行软掉电处理后再次连接;
301、根据当前操作系统类型选取相应的配置描述符等数据对USBHID设备进行第二次枚举。
在步骤300中,USB HID设备在预定时间内,使其内部的上拉电阻断开与主机电源电压或工作电压的连接,在超过预定时间后,USB HID设备中的上拉电阻再次与主机的电源电压或工作电压连接,使USB HID设备再次处于上电状态。
根据当前操作系统类型选取相应的方法重新枚举USB设备。重新枚举即先将设备软掉电,然后选取对应的描述符等信息进行第二次USB枚举。USB HID设备是通过改变主机Vcc(电源电压或工作电压)的上拉电阻状态来告知主机自身的插拔状态,USB HID设备内部集成有上拉电阻,默认状态下是不与Vcc相连的,当USB HID设备与主机建立连接时,USB设备内部的上拉电阻连接到Vcc上,这样主机便可以通过检测Vcc上的上拉电阻的变化来确定是否有USB HID设备连入了;软掉电处理具体是指:USB HID设备断开内部上拉电阻与Vcc的连接,这样,主机操作系统将会监控到USB HID设备是拔出状态,但USB HID设备是与Vcc相连的,依然可以从Vcc处获取电源,USB HID设备依然是处于上 电状态的,断开预定时间后(极短的时间),USB HID设备内部上拉电阻将再次连到Vcc,主机操作系统将再次监控到USB HID设备的插入,重新开始进行枚举操作。
S4、USB HID设备在接收到主机发送的重启标志后,则重新执行整个流程来判断主机重启后的操作系统。
具体地,在步骤S4中,判断USB HID设备是否收到主机发送的重启标志,若确认收到,则返回步骤S2重新执行;若确认没有收到,则返回步骤S3,检测主机是否发送了重启标志。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (3)

1.一种通过对USB HID设备进行二次枚举以识别主机操作系统的方法,其特征在于,包括以下步骤:
S1、USB HID设备上电,并进行初始化;USB HID设备通过USB总线连接到主机,并从主机的电源电压或工作电压处获取其工作电压,USB HID设备将自身存储的上电标识、操作系统标识初始化为默认标识;
S2、对USB HID设备进行第一次枚举以确定主机操作系统的类型;
在步骤S2包括以下步骤:
200、USB HID设备接收主机操作系统发送的系统标志性数据;
201、USB HID设备逐一对主机操作系统发送的系统标志性数据做出响应;
202、USB HID设备主机操作系统发送的相关标志性数据存储起来,并根据相关标志性数据判断当前操作系统的类型;
S3、在USB HID设备与主机操作系统之间依次完成软掉电与再次连接处理后进行第二次枚举,以保证USB HID设备能够正常工作;
在步骤S3中包括以下步骤:
300、对USB HID设备与主机操作系统进行软掉电处理后再次连接;
301、根据当前操作系统类型选取相应的配置描述符对USB HID设备进行第二次枚举;
S4、USB HID设备在接收到主机发送的重启标志后,则重新执行整个流程来判断主机重启后的操作系统;判断USB HID设备是否收到主机发送的重启标志,若确认收到,则返回步骤S2重新执行;若确认没有收到,则返回步骤S3;以检测主机是否发送了重启标志。
2.根据权利要求1所述的通过对USB HID设备进行二次枚举以识别主机操作系统的方法,其特征在于,在步骤200与步骤201中,系统标志性数据包括取设备描述符、设置设备地址、取配置描述符、取端点描述符、取字符串描述符、取端点描述符与选择配置。
3.根据权利要求1所述的通过对USB HID设备进行二次枚举以识别主机操作系统的方法,其特征在于,在步骤300中,USB HID设备在预定时间内,使其内部的上拉电阻断开与主机电源电压或工作电压的连接,在超过预定时间后,USB HID设备中的上拉电阻再次与主机的电源电压或工作电压连接,使USB HID设备再次处于上电状态。
CN201210402673.0A 2012-10-19 2012-10-19 通过对usb hid设备进行二次枚举以识别主机操作系统的方法 Active CN102890662B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210402673.0A CN102890662B (zh) 2012-10-19 2012-10-19 通过对usb hid设备进行二次枚举以识别主机操作系统的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210402673.0A CN102890662B (zh) 2012-10-19 2012-10-19 通过对usb hid设备进行二次枚举以识别主机操作系统的方法

Publications (2)

Publication Number Publication Date
CN102890662A CN102890662A (zh) 2013-01-23
CN102890662B true CN102890662B (zh) 2016-10-05

Family

ID=47534169

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210402673.0A Active CN102890662B (zh) 2012-10-19 2012-10-19 通过对usb hid设备进行二次枚举以识别主机操作系统的方法

Country Status (1)

Country Link
CN (1) CN102890662B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104156328B (zh) * 2013-05-15 2019-02-05 中兴通讯股份有限公司 一种识别操作系统类型的方法及usb设备
CN104182374B (zh) * 2013-05-28 2018-09-28 南京中兴软件有限责任公司 Usb设备及其自动识别微软窗口化操作系统版本的方法
CN104516842A (zh) * 2013-09-29 2015-04-15 中兴通讯股份有限公司 一种usb设备快速适配操作系统的方法及usb设备
CN105573939A (zh) * 2014-10-10 2016-05-11 深圳市中兴微电子技术有限公司 一种基于通用串行总线进行数据传输的方法及终端
CN106126446B (zh) * 2016-06-22 2019-01-04 飞天诚信科技股份有限公司 一种USB设备及其识别MacOS系统的方法
CN109901960B (zh) * 2019-02-27 2023-02-28 广州启辰电子科技有限公司 一种usb从设备驱动加载完整性检测方法
CN114546899A (zh) * 2020-11-24 2022-05-27 博泰车联网科技(上海)股份有限公司 Usb设备连接方法、系统及计算机可读存储介质
CN113064651B (zh) * 2021-03-30 2023-01-24 重庆中科云从科技有限公司 应用于多级接口串联设备的初始化控制装置、方法和设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN2783391Y (zh) * 2004-02-09 2006-05-24 联想(北京)有限公司 免插拔的多状态的usb装置
CN2935383Y (zh) * 2006-06-30 2007-08-15 北京飞天诚信科技有限公司 可自动运行的带有海量存储器和指纹锁的复合usb设备
CN101957807A (zh) * 2010-09-16 2011-01-26 北京飞天诚信科技有限公司 USB设备识别主机Windows操作系统版本类型的方法
CN102043751A (zh) * 2010-06-29 2011-05-04 北京飞天诚信科技有限公司 Usb设备识别主机操作系统的方法
CN102375786A (zh) * 2011-10-18 2012-03-14 中兴通讯股份有限公司 Usb设备自动识别操作系统的方法及系统
CN102713843A (zh) * 2010-08-24 2012-10-03 联发科技股份有限公司 包含检测usb主机操作系统类型的usb装置枚举方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN2783391Y (zh) * 2004-02-09 2006-05-24 联想(北京)有限公司 免插拔的多状态的usb装置
CN2935383Y (zh) * 2006-06-30 2007-08-15 北京飞天诚信科技有限公司 可自动运行的带有海量存储器和指纹锁的复合usb设备
CN102043751A (zh) * 2010-06-29 2011-05-04 北京飞天诚信科技有限公司 Usb设备识别主机操作系统的方法
CN102713843A (zh) * 2010-08-24 2012-10-03 联发科技股份有限公司 包含检测usb主机操作系统类型的usb装置枚举方法
CN101957807A (zh) * 2010-09-16 2011-01-26 北京飞天诚信科技有限公司 USB设备识别主机Windows操作系统版本类型的方法
CN102375786A (zh) * 2011-10-18 2012-03-14 中兴通讯股份有限公司 Usb设备自动识别操作系统的方法及系统

Also Published As

Publication number Publication date
CN102890662A (zh) 2013-01-23

Similar Documents

Publication Publication Date Title
CN102890662B (zh) 通过对usb hid设备进行二次枚举以识别主机操作系统的方法
CN101957807B (zh) USB设备识别主机Windows操作系统版本类型的方法
US8650332B2 (en) Method for switching working mode, USB device, and host device
CN103842968B (zh) 一种内存数据的迁移方法、计算机和装置
US9086867B2 (en) Power control for an external device based on device identification information
CN101930383B (zh) 信息处理设备及其控制方法
CN103019991A (zh) 接口系统及切换方法、USB key及UART终端
US7072989B1 (en) USB peripheral device storing an indication of an operating power mode when a host went into hibernate and restarting at the power mode accordingly
CN102043751A (zh) Usb设备识别主机操作系统的方法
CN106547653B (zh) 计算机系统故障状态检测方法、装置及系统
CN103955414A (zh) USB Host故障自恢复的方法及装置
JP2011008402A (ja) 情報処理装置、情報処理装置の制御方法、及びプログラム
US20140195697A1 (en) Apparatus and method for detecting functions of video card
US8549337B2 (en) Memory card control device and method for controlling the same
US20130283028A1 (en) Adapter identification system and method for computer
EP1978720A1 (en) A mobile computing system and the method for receiving data packagea
CN103761129A (zh) 一种在Bootloader层实现SDIO接口驱动的方法
WO2023065601A1 (zh) 服务器组件自检异常恢复方法、装置、系统及介质
CN102236591A (zh) 接收自存储网络环境的scsi目标的scsi错误响应的定制系统和方法
CN101515236B (zh) 基本输入输出系统的恢复方法及其更新模组与电脑系统
CN101923521B (zh) 具保护其通用串行总线端口功能的电子装置及方法
US20140115378A1 (en) System and method for restoring network configuration parameters
CN213368158U (zh) 一种基于nfc的设备配置及固件升级设备
US20120303992A1 (en) Display and power management method thereof
US7243220B2 (en) Networking apparatus and method capable of wake-on-LAN after improper shutdown

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
TR01 Transfer of patent right

Effective date of registration: 20210519

Address after: 215500 5th floor, building 4, 68 Lianfeng Road, Changfu street, Changshu City, Suzhou City, Jiangsu Province

Patentee after: Changshu intellectual property operation center Co.,Ltd.

Address before: 214192 No. 99 Furong Zhongsan Road, Xishan Economic Development Zone, Wuxi City, Jiangsu Province

Patentee before: WUXI HINORA TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220119

Address after: 215500 No.8, Menglan Road, Changshu City, Suzhou City, Jiangsu Province

Patentee after: JIANGSU LEMOTE INFORMATION TECHNOLOGY CO.,LTD.

Address before: 215500 5th floor, building 4, 68 Lianfeng Road, Changfu street, Changshu City, Suzhou City, Jiangsu Province

Patentee before: Changshu intellectual property operation center Co.,Ltd.