CN104156329B - 在动态链接库中实现usb设备插拔识别的方法 - Google Patents
在动态链接库中实现usb设备插拔识别的方法 Download PDFInfo
- Publication number
- CN104156329B CN104156329B CN201410378040.XA CN201410378040A CN104156329B CN 104156329 B CN104156329 B CN 104156329B CN 201410378040 A CN201410378040 A CN 201410378040A CN 104156329 B CN104156329 B CN 104156329B
- Authority
- CN
- China
- Prior art keywords
- equipment
- dynamic link
- link library
- usb
- vid
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种在动态链接库中实现USB设备插拔识别的方法,在对动态链接库的初始化中包含后序设备识别所需验证的VID、PID的设定。初始化操作完成后,调用能够实现USB设备插拔识别功能的库函数,对USB‑HID类设备进行扫描;步骤C、检测到有设备插入时,判断该设备的供应商识别码VID、产品识别码PID是否与所需设备的相匹配,若匹配且是在检测到有设备连接时首次匹配,则提示用户设备已成功连接;若不匹配且是在检测到有设备连接时首次不匹配,则提示设备已移除。本发明的优点是:所述方法在有VID、PID均匹配的USB‑HID设备插入或拔出时会做出相应的用户界面提示,且该功能的实现是在不包含窗体的动态链接库中完成的。
Description
技术领域
本发明涉及USB设备的识别与检测技术,具体是一种在动态链接库中实现USB设备插拔识别的方法。
背景技术
动态链接库(Dynamic Linkable Library,DLL)随Windows操作系统而诞生。作为Windows操作系统的核心和基础,DLL中不仅可以包含代码和数据,还可以包含如位图、图标和对话框等多种资源。DLL的功能主要是为其他DLL或应用程序提供资源支撑,以使其他DLL或应用程序功能更强大、资源更丰富。
动态链接库有诸多优点。首先,它使得应用程序的可扩展性增强,如果用户需要对应用程序的功能进行更改或扩展,只需更换相应的动态链接库便可,而不需要对应用程序进行丝毫改动;其次,DLL可以起到节省内存的作用,若多个应用程序调用同一个动态链接库,其内容在内存中只被加载一次,即可实现多次调用;第三,促进资源共享,因DLL中包含丰富的资源,可以调用该DLL的应用程序均可共享这一资源。正是由于DLL的上述诸多优点,许多应用程序都包含自己的DLL,在其内放入一些功能函数的实现。
USB-HID(Universal Serial Bus-Human Interface Device)是一种即插即用的USB设备,常见的如键盘、鼠标都属于该类设备。本方法所涉及的设备是一种基于USB协议进行数据通信的仿真器。动态链接库根据其内是否包含窗体可分为包含窗体的DLL与不包含窗体的DLL。本方法所涉及的DLL属于不包含窗体的DLL。
目前USB设备插拔识别主要是在包含窗体界面的上位机中实现,该方法是通过窗体接收来自Windows系统的消息WM_DEVICECHANGE,通过对该消息处理函数OnDeviceChange的参数进行判断得知触发该消息的是何种事件,以进行不同的处理。若该参数为DBT_DEVICEARRIVAL,则表明设备已连接;若该参数为DBT_DEVICEREMOVECOMPLETE,则表明该设备已移除。
因本方法中的DLL不包含窗体,无法接收到系统消息WM_DEVICECHANGE,故不能采用传统的方法识别USB设备的插拔。
发明内容
本发明的目的是克服现有技术中存在的不足,提供一种实现USB设备插拔识别的方法,在不包含窗体的动态链接库中实现对USB-HID类设备的插拔识别。
按照本发明提供的技术方案,所述的在动态链接库中实现USB设备插拔识别的方法包括:
步骤A、启动调用动态链接库的应用程序,在应用程序中初始化各功能模块及待调用的动态链接库;所述的动态链接库是指不包含窗体的动态链接库;
步骤B、动态链接库初始化操作完成后,调用能够实现USB设备插拔识别功能的库函数,对USB-HID类设备进行扫描;
步骤C、检测到有设备插入时,进入步骤D;若无设备插入时,继续进行设备扫描;
步骤D、判断该设备的供应商识别码VID、产品识别码PID是否与所需设备的相匹配,若匹配且是在检测到有设备连接时首次匹配,则提示用户设备已成功连接;若不匹配且是在检测到有设备连接时首次不匹配,则提示设备已移除。
其中,步骤A所述动态链接库的初始化中包含后序设备识别所需验证的VID、PID的设定。
步骤B中所述的对设备进行的扫描是指在动态链接库中定时检测是否有与所设定的VID、PID相匹配的USB-HID类设备连接到主机上。
步骤B至步骤D的整个过程所持续时间在定时器的安全时间内,所述安全时间是指步骤B至步骤D的过程所需的时间小于定时器的定时时间。
本发明的优点是:所述方法在有VID、PID均匹配的USB-HID设备插入或拔出时会做出相应的用户界面提示,且该功能的实现是在不包含窗体的动态链接库中完成的。动态链接库中的代码对于应用程序是透明的,本方法不仅实现了设备插拔识别的功能,而且还集成了动态链接库资源共享和减少内存开销的优点。
附图说明
图1为本发明方法的实现过程示意图。
图2为传统的利用系统消息WM_DEVICECHANGE识别USB设备插拔的示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。
本发明通过在不包含窗体的动态链接库中定时对设备连接状态扫描,实现了非传统模式的USB-HID类设备的插拔识别,并在该动态链接库被调用后可根据设备状态的改变做出实时提示。
如图1所示,根据本发明的方法,动态链接库中设备识别的过程如下:
101 启动调用动态链接库的应用程序。
102 在应用程序中对其包含的各个功能模块及动态链接库进行初始化,以完成最初的各项配置。
103 动态链接库中设置一个定时器,用以确定每次启动设备扫描的时间,步骤102中动态链接库的初始化完成后,该定时器便被启动开始计时,即第一次设备扫描启动。
104 程序进入设备扫描阶段,此时动态链接库中设备连接子函数代码被调用。
105 通过执行所述设备连接子函数可实现对是否有USB-HID类设备连接至主机进行判断;若有,则进入步骤106,进行下一步的判断;若无,则返回至步骤103等待定时器开启下一次的设备扫描。
106 判断所检测到设备的VID、PID是否与所需设备的相匹配,若匹配且是在检测到有设备连接时其VID、PID经验证首次匹配,则进入步骤107;若不匹配且是在检测到有设备连接时其VID、PID经验证首次不匹配,则进入步骤108。
107 返回给应用程序该设备已连接的提示信息。
108 返回给应用程序该设备已移除的提示信息。
其中,步骤104至步骤107/108的整个过程所持续时间在定时器的安全时间内。
所述安全时间是指该一系列判断过程所需的时间小于定时器的定时时间,即不会发生两个及以上的定时时间触发一次设备识别的现象。
本发明所述方法在有USB-HID类设备插入时,会自动检测到该设备,并对其供应商ID(VID)、产品ID(PID)进行识别以确认是否为所需设备;若设备在应用过程中,由于某种原因导致其与主机的连接断开,该方法可以使用户实时得知这一状态改变;该方法亦可实现设备意外断开又再次成功连接这一状态的实时通知。
传统的通过接收系统消息识别设备插拔的方法如图2所示,在消息WM_DEVICECHANGE触发该消息的处理函数时,需对该消息返回的设备状态进行相应的处理,详细过程如下:
201 有USB-HID类设备插入主机或从主机拔出。
202 Windows系统识别到步骤201中的事件已发生,并产生系统消息WM_DEVICECHANGE,该消息由程序中包含窗体的函数捕获。通过对该消息处理函数OnDeviceChange的参数进行判断得知触发该消息的是何种事件,以进行不同的处理。若该参数为DBT_DEVICEARRIVAL,则进入步骤203;若该参数为DBT_DEVICEREMOVECOMPLETE,则进入步骤204。
203 OnDeviceChange的参数为DBT_DEVICEARRIVAL,表明是设备连接到主机这一事件触发了系统消息WM_DEVICECHANGE,随后进入步骤205。
204 OnDeviceChange的参数为DBT_DEVICEREMOVECOMPLETE,表明是设备从主机上拔出这一事件触发了系统消息WM_DEVICECHANGE,随后进入步骤206。
205 向应用程序发送设备已连接的提示信息。
206向应用程序发送设备已移除的提示信息。
由本发明与传统的实现设备插拔方法对比可知,所涉及的实现过程是自主识别设备是否已连至主机,而非等待系统消息,所以可以在不包含窗体的动态链接库中实现这一功能。
Claims (4)
1.在动态链接库中实现USB设备插拔识别的方法,其特征在于,所述方法包括:
步骤A、启动调用动态链接库的应用程序,在应用程序中初始化各功能模块及待调用的动态链接库;所述的动态链接库是指不包含窗体的动态链接库;
步骤B、动态链接库初始化操作完成后,调用能够实现USB设备插拔识别功能的库函数,对USB-HID类设备进行扫描;
步骤C、检测到有设备插入时,进入步骤D;若无设备插入时,继续进行设备扫描;
步骤D、判断该设备的供应商识别码VID、产品识别码PID是否与所需设备的相匹配,若匹配且是在检测到有设备连接时首次匹配,则提示用户设备已成功连接;若不匹配且是在检测到有设备连接时首次不匹配,则提示设备已移除。
2.根据权利要求1所述在动态链接库中实现USB设备插拔识别的方法,其特征在于,步骤A所述动态链接库的初始化中包含后序设备识别所需验证的VID、PID的设定。
3.根据权利要求1所述在动态链接库中实现USB设备插拔识别的方法,其特征在于,步骤B中所述对USB-HID类设备进行的扫描是指在动态链接库中定时检测是否有与所设定的VID、PID相匹配的USB-HID类设备连接到主机上。
4.根据权利要求1所述在动态链接库中实现USB设备插拔识别的方法,其特征在于,步骤B至步骤D的整个过程所持续时间在定时器的安全时间内,所述安全时间是指步骤B至步骤D的过程所需的时间小于定时器的定时时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410378040.XA CN104156329B (zh) | 2014-08-01 | 2014-08-01 | 在动态链接库中实现usb设备插拔识别的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410378040.XA CN104156329B (zh) | 2014-08-01 | 2014-08-01 | 在动态链接库中实现usb设备插拔识别的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104156329A CN104156329A (zh) | 2014-11-19 |
CN104156329B true CN104156329B (zh) | 2017-02-15 |
Family
ID=51881834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410378040.XA Active CN104156329B (zh) | 2014-08-01 | 2014-08-01 | 在动态链接库中实现usb设备插拔识别的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104156329B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108563462A (zh) * | 2018-04-25 | 2018-09-21 | 珠海全志科技股份有限公司 | 数据处理方法、装置、计算机设备和计算机存储介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107608739A (zh) * | 2017-09-18 | 2018-01-19 | 广州视源电子科技股份有限公司 | 一种自动运行hid设备上程序的方法、装置及设备 |
CN109063481B (zh) * | 2018-07-27 | 2023-04-07 | 平安科技(深圳)有限公司 | 一种风险检测方法和装置 |
CN116049043B (zh) * | 2023-02-13 | 2023-08-08 | 合肥巨阙电子有限公司 | 一种人机接口设备识别及多设备读写的通讯方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002163225A (ja) * | 2000-11-24 | 2002-06-07 | Matsushita Electric Ind Co Ltd | Usb接続制御方法およびusbシステム |
CN1716225A (zh) * | 2004-04-29 | 2006-01-04 | 微软公司 | 普通usb驱动器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4929808B2 (ja) * | 2006-04-13 | 2012-05-09 | 富士通株式会社 | ネットワーク機器接続装置およびネットワーク機器接続方法 |
-
2014
- 2014-08-01 CN CN201410378040.XA patent/CN104156329B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002163225A (ja) * | 2000-11-24 | 2002-06-07 | Matsushita Electric Ind Co Ltd | Usb接続制御方法およびusbシステム |
CN1716225A (zh) * | 2004-04-29 | 2006-01-04 | 微软公司 | 普通usb驱动器 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108563462A (zh) * | 2018-04-25 | 2018-09-21 | 珠海全志科技股份有限公司 | 数据处理方法、装置、计算机设备和计算机存储介质 |
CN108563462B (zh) * | 2018-04-25 | 2021-12-14 | 珠海全志科技股份有限公司 | 数据处理方法、装置、计算机设备和计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104156329A (zh) | 2014-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104156329B (zh) | 在动态链接库中实现usb设备插拔识别的方法 | |
US10275586B2 (en) | Method for power management using fingerprint identification in mobile terminal and mobile terminal | |
US11256539B2 (en) | Task processing method, apparatus, and system based on distributed system | |
US7987389B2 (en) | System and method for testing sleep and wake functions of computer | |
CN103761185B (zh) | 一种自动化测试系统及方法 | |
CN103699509A (zh) | 基于定时器录波的串口通讯方法 | |
CN109194689B (zh) | 异常行为识别方法、装置、服务器及存储介质 | |
CN109062842B (zh) | 一种遥控器与移动终端的通信方法、装置和遥控器 | |
CN102073602B (zh) | 计算机系统、连接控制装置及连接与断开方法 | |
CN104820655B (zh) | 一种基于fpga的cpu热插拔实现方法及系统 | |
CN104239211B (zh) | 一种移动终端快速进入测试模式的方法及其装置 | |
CN202736280U (zh) | 一种遥控器快速配对装置 | |
CN104460406A (zh) | 单线通信的方法及基于单线通信的单片机固件升级方法 | |
CN104270740A (zh) | 一种共卡槽t卡和sim卡的检测方法 | |
KR101357342B1 (ko) | 하드웨어 프로토콜 스택 | |
CN107968717B (zh) | 一种接口控制命令的处理方法及调制解调器Modem设备 | |
CN106028308B (zh) | 热插拔多卡数据控制方法与系统 | |
CN106598793B (zh) | 一种基于BIOS串口log数据的测试系统及测试方法 | |
US7958405B1 (en) | Automatic testing system and method for judging whether universal serial bus device is configured to computer | |
CN105302689B (zh) | 一种计算机系统的智能管理方法及装置 | |
CN106095400A (zh) | 一种应用程序下载方法及终端、通信设备 | |
CN103207850B (zh) | 异质设备的传输系统 | |
CN107656842A (zh) | 一种sim卡热插拔性能检测方法、存储设备及移动终端 | |
CN108132901B (zh) | 一种信息传输设备及方法 | |
TWI530797B (zh) | 電子裝置及偵測方法 |
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 |