在动态链接库中实现usb设备插拔识别的方法

文档序号:6622306阅读:2142来源:国知局
在动态链接库中实现usb设备插拔识别的方法
【专利摘要】本发明公开了一种在动态链接库中实现USB设备插拔识别的方法,在对动态链接库的初始化中包含后序设备识别所需验证的VID、PID的设定。初始化操作完成后,调用能够实现USB设备插拔识别功能的库函数,对USB-HID类设备进行扫描;步骤C、检测到有设备插入时,判断该设备的供应商识别码VID、产品识别码PID是否与所需设备的相匹配,若匹配且是在检测到有设备连接时首次匹配,则提示用户设备已成功连接;若不匹配且是在检测到有设备连接时首次不匹配,则提示设备已移除。本发明的优点是:所述方法在有VID、PID均匹配的USB-HID设备插入或拔出时会做出相应的用户界面提示,且该功能的实现是在不包含窗体的动态链接库中完成的。
【专利说明】在动态链接库中实现USB设备插拔识别的方法

【技术领域】
[0001] 本发明涉及USB设备的识别与检测技术,具体是一种在动态链接库中实现USB设 备插拔识别的方法。

【背景技术】
[0002] 动态链接库(Dynamic Linkable Library, DLL)随Windows操作系统而诞生。作 为Windows操作系统的核心和基础,DLL中不仅可以包含代码和数据,还可以包含如位图、 图标和对话框等多种资源。DLL的功能主要是为其他DLL或应用程序提供资源支撑,以使其 他DLL或应用程序功能更强大、资源更丰富。
[0003] 动态链接库有诸多优点。首先,它使得应用程序的可扩展性增强,如果用户需要对 应用程序的功能进行更改或扩展,只需更换相应的动态链接库便可,而不需要对应用程序 进行丝毫改动;其次,DLL可以起到节省内存的作用,若多个应用程序调用同一个动态链接 库,其内容在内存中只被加载一次,即可实现多次调用;第三,促进资源共享,因 DLL中包含 丰富的资源,可以调用该DLL的应用程序均可共享这一资源。正是由于DLL的上述诸多优 点,许多应用程序都包含自己的DLL,在其内放入一些功能函数的实现。
[0004] USB-HID (Universal Serial Bus-Human Interface Device)是一种即插即用的 USB设备,常见的如键盘、鼠标都属于该类设备。本方法所涉及的设备是一种基于USB协议 进行数据通信的仿真器。动态链接库根据其内是否包含窗体可分为包含窗体的DLL与不包 含窗体的DLL。本方法所涉及的DLL属于不包含窗体的DLL。
[0005] 目前USB设备插拔识别主要是在包含窗体界面的上位机中实现,该方法是 通过窗体接收来自Windows系统的消息WM_DEVICECHANGE,通过对该消息处理函数 OnDeviceChange的参数进行判断得知触发该消息的是何种事件,以进行不同的处理。若该 参数为DBT_DEVICEARRIVAL,则表明设备已连接;若该参数为DBT_DEVICEREMOVECOMPLETE, 则表明该设备已移除。
[0006] 因本方法中的DLL不包含窗体,无法接收到系统消息WM_DEVICECHANGE,故不能采 用传统的方法识别USB设备的插拔。


【发明内容】

[0007] 本发明的目的是克服现有技术中存在的不足,提供一种实现USB设备插拔识别的 方法,在不包含窗体的动态链接库中实现对USB-HID类设备的插拔识别。
[0008] 按照本发明提供的技术方案,所述的在动态链接库中实现USB设备插拔识别的方 法包括: 步骤A、启动调用动态链接库的应用程序,在应用程序中初始化各功能模块及待调用的 动态链接库;所述的动态链接库是指不包含窗体的动态链接库; 步骤B、动态链接库初始化操作完成后,调用能够实现USB设备插拔识别功能的库函 数,对USB-HID类设备进行扫描; 步骤C、检测到有设备插入时,进入步骤D ;若无设备插入时,继续进行设备扫描; 步骤D、判断该设备的供应商识别码VID、产品识别码PID是否与所需设备的相匹配,若 匹配且是在检测到有设备连接时首次匹配,则提示用户设备已成功连接;若不匹配且是在 检测到有设备连接时首次不匹配,则提示设备已移除。
[0009] 其中,步骤A所述动态链接库的初始化中包含后序设备识别所需验证的VID、PID 的设定。
[0010] 步骤B中所述的对设备进行的扫描是指在动态链接库中定时检测是否有与所设 定的VID、PID相匹配的USB-HID类设备连接到主机上。
[0011] 步骤B至步骤D的整个过程所持续时间在定时器的安全时间内,所述安全时间是 指步骤B至步骤D的过程所需的时间小于定时器的定时时间。
[0012] 本发明的优点是:所述方法在有VID、PID均匹配的USB-HID设备插入或拔出时会 做出相应的用户界面提示,且该功能的实现是在不包含窗体的动态链接库中完成的。动态 链接库中的代码对于应用程序是透明的,本方法不仅实现了设备插拔识别的功能,而且还 集成了动态链接库资源共享和减少内存开销的优点。

【专利附图】

【附图说明】
[0013] 图1为本发明方法的实现过程示意图。
[0014] 图2为传统的利用系统消息WM_DEVICECHANGE识别USB设备插拔的示意图。

【具体实施方式】
[0015] 下面结合附图和实施例对本发明作进一步说明。
[0016] 本发明通过在不包含窗体的动态链接库中定时对设备连接状态扫描,实现了非传 统模式的USB-HID类设备的插拔识别,并在该动态链接库被调用后可根据设备状态的改变 做出实时提示。
[0017] 如图1所示,根据本发明的方法,动态链接库中设备识别的过程如下: 101启动调用动态链接库的应用程序。
[0018] 102在应用程序中对其包含的各个功能模块及动态链接库进行初始化,以完成最 初的各项配置。
[0019] 103动态链接库中设置一个定时器,用以确定每次启动设备扫描的时间,步骤102 中动态链接库的初始化完成后,该定时器便被启动开始计时,即第一次设备扫描启动。
[0020] 104程序进入设备扫描阶段,此时动态链接库中设备连接子函数代码被调用。
[0021] 105通过执行所述设备连接子函数可实现对是否有USB-HID类设备连接至主机 进行判断;若有,则进入步骤106,进行下一步的判断;若无,则返回至步骤103等待定时器 开启下一次的设备扫描。
[0022] 106判断所检测到设备的VID、PID是否与所需设备的相匹配,若匹配且是在检测 到有设备连接时其VID、PID经验证首次匹配,则进入步骤107 ;若不匹配且是在检测到有设 备连接时其VID、PID经验证首次不匹配,则进入步骤108。
[0023] 107返回给应用程序该设备已连接的提示信息。
[0024] 108返回给应用程序该设备已移除的提示信息。
[0025] 其中,步骤104至步骤107/108的整个过程所持续时间在定时器的安全时间内。
[0026] 所述安全时间是指该一系列判断过程所需的时间小于定时器的定时时间,即不会 发生两个及以上的定时时间触发一次设备识别的现象。
[0027] 本发明所述方法在有USB-HID类设备插入时,会自动检测到该设备,并对其供应 商ID(VID)、产品ID(PID)进行识别以确认是否为所需设备;若设备在应用过程中,由于某 种原因导致其与主机的连接断开,该方法可以使用户实时得知这一状态改变;该方法亦可 实现设备意外断开又再次成功连接这一状态的实时通知。
[0028] 传统的通过接收系统消息识别设备插拔的方法如图2所示,在消息WM_ DEVICECHANGE触发该消息的处理函数时,需对该消息返回的设备状态进行相应的处理,详 细过程如下: 201有USB-HID类设备插入主机或从主机拔出。
[0029] 202 Windows系统识别到步骤201中的事件已发生,并产生系统消息WM_ DEVICECHANGE,该消息由程序中包含窗体的函数捕获。通过对该消息处理函数 OnDeviceChange的参数进行判断得知触发该消息的是何种事件,以进行不同的处理。若该 参数为 DBT_DEVICEARRIVAL,则进入步骤 203 ;若该参数为 DBT_DEVICEREMOVECOMPLETE,则 进入步骤204。
[0030] 203 OnDeviceChange的参数为DBT_DEVICEARRIVAL,表明是设备连接到主机这一 事件触发了系统消息WM_DEVICECHANGE,随后进入步骤205。
[0031] 204 OnDeviceChange 的参数为 DBT_DEVICEREMOVECOMPLETE,表明是设备从主机上 拔出这一事件触发了系统消息WM_DEVICECHANGE,随后进入步骤206。
[0032] 205向应用程序发送设备已连接的提示信息。
[0033] 206向应用程序发送设备已移除的提示信息。
[0034] 由本发明与传统的实现设备插拔方法对比可知,所涉及的实现过程是自主识别设 备是否已连至主机,而非等待系统消息,所以可以在不包含窗体的动态链接库中实现这一 功能。
【权利要求】
1. 在动态链接库中实现USB设备插拔识别的方法,其特征在于,所述方法包括: 步骤A、启动调用动态链接库的应用程序,在应用程序中初始化各功能模块及待调用的 动态链接库;所述的动态链接库是指不包含窗体的动态链接库; 步骤B、动态链接库初始化操作完成后,调用能够实现USB设备插拔识别功能的库函 数,对USB-HID类设备进行扫描; 步骤C、检测到有设备插入时,进入步骤D ;若无设备插入时,继续进行设备扫描; 步骤D、判断该设备的供应商识别码VID、产品识别码PID是否与所需设备的相匹配,若 匹配且是在检测到有设备连接时首次匹配,则提示用户设备已成功连接;若不匹配且是在 检测到有设备连接时首次不匹配,则提示设备已移除。
2. 根据权利要求1所述在动态链接库中实现USB设备插拔识别的方法,其特征在于,步 骤A所述动态链接库的初始化中包含后序设备识别所需验证的VID、PID的设定。
3. 根据权利要求1所述在动态链接库中实现USB设备插拔识别的方法,其特征在于,步 骤B中所述的对设备进行的扫描是指在动态链接库中定时检测是否有与所设定的VID、PID 相匹配的USB-HID类设备连接到主机上。
4. 根据权利要求1所述在动态链接库中实现USB设备插拔识别的方法,其特征在于,步 骤B至步骤D的整个过程所持续时间在定时器的安全时间内,所述安全时间是指步骤B至 步骤D的过程所需的时间小于定时器的定时时间。
【文档编号】G06F13/10GK104156329SQ201410378040
【公开日】2014年11月19日 申请日期:2014年8月1日 优先权日:2014年8月1日
【发明者】吴志玲, 俞小平, 黄坚, 丁蔚 申请人:无锡中微爱芯电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1