首页> 中国专利> 在动态链接库中实现USB设备插拔识别的方法

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

摘要

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

著录项

  • 公开/公告号CN104156329A

    专利类型发明专利

  • 公开/公告日2014-11-19

    原文格式PDF

  • 申请/专利权人 无锡中微爱芯电子有限公司;

    申请/专利号CN201410378040.X

  • 发明设计人 吴志玲;俞小平;黄坚;丁蔚;

    申请日2014-08-01

  • 分类号G06F13/10(20060101);

  • 代理机构无锡市大为专利商标事务所(普通合伙);

  • 代理人曹祖良;韩凤

  • 地址 214028 江苏省无锡市新区长江路21-1号创源大厦206-2室

  • 入库时间 2023-12-17 03:09:47

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-02-15

    授权

    授权

  • 2014-12-17

    实质审查的生效 IPC(主分类):G06F13/10 申请日:20140801

    实质审查的生效

  • 2014-11-19

    公开

    公开

说明书

技术领域

本发明涉及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向应用程序发送设备已移除的提示信息。

由本发明与传统的实现设备插拔方法对比可知,所涉及的实现过程是自主识别设备是否已连至主机,而非等待系统消息,所以可以在不包含窗体的动态链接库中实现这一功能。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号