• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 22
    • 下载费用:30 金币  

    奇妙重庆时时彩教程: 串口读卡器的识别方法和装置.pdf

    摘要
    申请专利号:

    重庆时时彩单双窍门 www.4mum.com.cn CN200910242449.8

    申请日:

    2009.12.11

    公开号:

    CN101719212A

    公开日:

    2010.06.02

    当前法律状态:

    授权

    有效性:

    有权

    法律详情: 授权|||实质审查的生效IPC(主分类):G06K 7/00申请日:20091211|||公开
    IPC分类号: G06K7/00 主分类号: G06K7/00
    申请人: 北京飞天诚信科技有限公司
    发明人: 陆舟; 于华章
    地址: 100191 北京市海淀区学院路40号研7A楼5层
    优先权:
    专利代理机构: 北京三高永信知识产权代理有限责任公司 11138 代理人: 何文彬
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN200910242449.8

    授权公告号:

    101719212B||||||

    法律状态公告日:

    2011.10.05|||2010.07.21|||2010.06.02

    法律状态类型:

    授权|||实质审查的生效|||公开

    摘要

    本发明公开了一种串口读卡器的识别方法和装置,涉及IC卡读卡器领域。方法包括:操作系统加载串口总线驱动;串口总线驱动向所述串口发送询问指令,并接收所述串口返回的应答信息;所述串口总线驱动根据所述应答信息,为所述串口连接的读卡器的卡座创建对应的物理设备对象,所述操作系统为每个物理设备对象安装相应类型的功能驱动及在智能卡服务中添加新的设备记录;所述串口总线驱动向与所述串口连接的读卡器发送查询卡座状态指令,并接收返回的卡座状态信息;所述串口总线驱动将所述卡座状态信息发送给所述功能驱动。

    权利要求书

    1: 一种串口读卡器的识别方法,其特征在于,所述方法包括: 操作系统加载串口总线驱动,所述操作系统通过所述串口总线驱动与串口进行通信; 所述串口总线驱动向所述串口发送询问指令,并接收所述串口返回的应答信息,所述询问指令用于询问与所述串口连接的读卡器中卡座的设备类型,所述应答信息中携带与所述串口连接的读卡器中卡座的设备类型和数目; 所述串口总线驱动根据所述应答信息,为所述串口连接的读卡器的卡座创建对应的物理设备对象,所述操作系统为每个物理设备对象安装相应类型的功能驱动及在智能卡服务中添加新的设备记录; 所述串口总线驱动向与所述串口连接的读卡器发送查询卡座状态指令,并接收返回的卡座状态信息; 所述串口总线驱动将所述卡座状态信息发送给所述功能驱动。
    2: 如权利要求1所述的串口读卡器的识别方法,其特征在于,所述操作系统加载串口总线驱动,通过所述串口总线驱动与串口通信,具体包括: 操作系统加载串口总线驱动; 所述串口总线驱动注册串口类设备的即插即用回调通知; 串口驱动发现串口,并创建串口驱动实例设备对象,通过即插即用管理器将所述串口驱动实例设备对象返回给所述串口总线驱动; 所述串口总线驱动判断所述串口驱动实例设备对象是否正确; 如果正确,则所述串口总线驱动创建串口对象,与所述串口进行通信; 如果不正确,则不进行操作。
    3: 如权利要求1所述的串口读卡器的识别方法,其特征在于,所述串口总线驱动中保存设备状态标识信息,用于标识是否有设备与串口相连接。
    4: 如权利要求3所述的串口读卡器的识别方法,其特征在于,所述接收所述串口返回的应答信息的同时,所述方法还包括: 所述串口总线驱动判断是否在规定时间内接收到所述串口返回的应答信息; 如果是,则继续执行所述串口总线驱动根据所述应答信息,为所述串口连接的读卡器的卡座创建对应的物理设备对象的步骤; 如果否,判断是否发生设备拔出动作; 当发生设备拔出动作时,修改所述设备状态标识信息为无设备连接状态; 当未发生设备拔出动作时,结束操作。
    5: 如权利要求3所述的串口读卡器的识别方法,其特征在于,所述接收所述串口返回的应答信息之后,所述方法还包括: 所述串口总线驱动判断与所述串口连接的读卡器是否为新设备; 如果是,则修改所述设备状态标识信息为有设备连接状态,执行所述操作系统所述串口总线驱动根据所述应答信息,为所述串口连接的读卡器的卡座创建对应的物理设备对象的步骤; 如果否,则执行所述向与所述串口连接的读卡器发送查询卡座状态指令的步骤。
    6: 如权利要求1所述的串口读卡器的识别方法,其特征在于,所述串口总线驱动中保存卡座状态标识符,所述卡座状态标识符用于标识与所述串口对象相连接的读卡器的卡座 状态,所述卡座状态包括:有卡已上电、有卡未上电和无卡。
    7: 如权利要求6所述的串口读卡器的识别方法,其特征在于,所述串口总线驱动接收到所述卡座状态信息之后,所述方法还包括: 判断所述卡座状态信息是否发生改变; 如果发生改变,则修改所述串口驱动总线中保存的卡座状态标识符后,执行将所述卡座状态信息发送给所述功能驱动的步骤; 如果未发生改变,则结束操作。
    8: 如权利要求1所述的串口读卡器的识别方法,其特征在于,所述串口总线驱动将所述卡座状态信息发送给所述功能驱动之后,所述方法还包括:当所述卡座状态信息为有卡已上电或者有卡未上电时,所述功能驱动生成卡片操作指令; 所述功能驱动判断所述串口总线驱动与所述读卡器之间的通信信道是否被占用; 如果是,则所述串口总线驱动将所述卡片操作指令挂起,等待通信信道不被占用; 如果否,则所述串口总线驱动将所述卡片操作指令发送给所述读卡器,并接收所述读卡器返回的操作指令执行结果,返回给所述功能驱动。
    9: 如权利要求8所述的串口读卡器的识别方法,其特征在于,所述功能驱动生成卡片操作指令,具体包括: 所述功能驱动将所述操作系统的上层应用传入的卡片操作请求进行封装,封装成符合CCID协议报文格式的卡片操作指令。
    10: 如权利要求8所述的串口读卡器的识别方法,其特征在于,所述功能驱动判断所述串口总线驱动与所述读卡器之间的通信信道是否被占用,具体包括: 所述功能驱动向所述操作系统申请独占通信信道的互斥量; 如果申请成功,则所述通信信道未被占用; 如果申请失败,则所述通信信道已被占用。
    11: 如权利要求8所述的串口读卡器的识别方法,其特征在于,所述串口总线驱动将所述卡片操作指令发送给所述读卡器,并接收所述读卡器返回的操作指令执行结果,返回给所述功能驱动,具体包括: 所述串口总线驱动接收所述卡片操作指令,并按照串口传输协议报文格式的规定对所述卡片操作指令进行封装,然后通过相应的串口发送给所述读卡器; 所述读卡器对接收到的操作指令进行解析后,根据所述操作指令对卡片进行相应的操作; 所述读卡器将所述操作指令的执行结果进行封装,发送给所述串口总线驱动; 所述串口总线驱动将所述执行结果解析后发送给所述功能驱动。
    12: 一种串口读卡器的识别装置,其特征在于,所述装置包括: 加载???,用于加载串口总线驱动,操作系统通过所述串口总线驱动与串口进行通信; 第一收发???,用于向所述串口发送询问指令,并接收所述串口返回的应答信息,所述询问指令用于询问与所述串口连接的读卡器中卡座的设备类型,所述应答信息中携带与所述串口连接的读卡器中卡座的设备类型和数目; 创建???,用于根据所述第一收发??榻邮盏降挠Υ鹦畔?,为所述串口连接的读卡器 的卡座创建对应的物理设备对象,所述操作系统为每个物理设备对象安装相应类型的功能驱动及在智能卡服务中添加新的设备记录; 第二收发???,用于向与所述串口连接的读卡器发送查询卡座状态指令,并接收返回的卡座状态信息; 第三收发???,用于将所述卡座状态信息发送给所述功能驱动。
    13: 如权利要求12所述的串口读卡器的识别装置,其特征在于,所述加载???,具体包括: 加载单元,用于加载串口总线驱动; 注册单元,用于串口类设备的即插即用回调通知; 创建单元,用于发现串口,并创建串口驱动实例设备对象,通过即插即用管理器将所述串口驱动实例设备对象返回给所述串口总线驱动; 判断单元,用于判断所述串口驱动实例设备对象是否正确; 如果正确,则所述串口总线驱动创建串口对象,与所述串口进行通信; 如果不正确,则不进行操作。
    14: 如权利要求12所述的串口读卡器的识别装置,其特征在于,所述装置还包括:第一保存???,用于保存设备状态标识信息,用于标识是否有设备与串口相连接。
    15: 如权利要求14所述的串口读卡器的识别装置,其特征在于,所述装置还包括: 应答消息判断???,用于判断是否在规定时间内接收到所述串口返回的应答信息; 如果是,则所述创建??橹葱懈菟龅谝皇辗⒛?榻邮盏降挠Υ鹦畔?,为所述串口连接的读卡器的卡座创建对应的物理设备对象的步骤; 如果否,判断是否发生设备拔出动作; 当发生设备拔出动作时,所述第一保存??樾薷乃錾璞缸刺晔缎畔⑽奚璞噶幼刺?; 当未发生设备拔出动作时,结束操作。
    16: 如权利要求14所述的串口读卡器的识别装置,其特征在于,所述装置还包括: 新设备判断???,用于判断与所述串口连接的读卡器是否为新设备; 如果是,则第一保存??樾薷乃錾璞缸刺晔缎畔⑽猩璞噶幼刺?,所述创建??橹葱兴霾僮飨低乘龃谧芟咔菟鲇Υ鹦畔?,为所述串口连接的读卡器的卡座创建对应的物理设备对象的步骤; 如果否,则第二收发??橹葱兴鱿蛴胨龃诹拥亩量ㄆ鞣⑺筒檠ㄗ刺噶畹牟街?。
    17: 如权利要求12所述的串口读卡器的识别装置,其特征在于,所述装置还包括:第二保存???,用于保存卡座状态标识符,所述卡座状态标识符用于标识与所述串口对象相连接的读卡器的卡座状态,所述卡座状态包括:有卡已上电、有卡未上电和无卡。
    18: 如权利要求17所述的串口读卡器的识别装置,其特征在于,所述装置还包括: 卡座状态判断???,用于判断所述卡座状态信息是否发生改变; 如果发生改变,则所述第二保存??樾薷乃龃谇芟咧斜4娴目ㄗ刺晔斗?,所述第三收发??榻隹ㄗ刺畔⒎⑺透龉δ芮牟街?; 如果未发生改变,则结束操作。
    19: 如权利要求12所述的串口读卡器的识别装置,其特征在于,所述装置还包括: 生成指令???,用于当所述卡座状态信息为有卡已上电或者有卡未上电时,所述功能驱动生成卡片操作指令; 通信通道判断???,用于判断所述串口总线驱动与所述读卡器之间的通信信道是否被占用; 执行???,用于如果所述通信通道判断??榈呐卸辖峁?,则将所述卡片操作指令挂起,等待通信信道不被占用;如果所述通信通道判断??榈呐卸辖峁?,则将所述卡片操作指令发送给所述读卡器,并接收所述读卡器返回的操作指令执行结果,返回给所述功能驱动。
    20: 如权利要求19所述的串口读卡器的识别装置,其特征在于,所述生成指令???,具体用于: 将所述操作系统的上层应用传入的卡片操作请求进行封装,封装成符合CCID协议报文格式的卡片操作指令。
    21: 如权利要求19所述的串口读卡器的识别装置,其特征在于,所述通信通道判断???,具体用于:向所述操作系统申请独占通信信道的互斥量; 如果申请成功,则所述通信信道未被占用; 如果申请失败,则所述通信信道已被占用。

    说明书


    串口读卡器的识别方法和装置

        【技术领域】

        本发明IC卡读卡器领域,特别涉及一种串口读卡器的识别方法和装置。

        背景技术

        IC(Integrated?Circuit,集成电路)卡是继磁卡之后出现的又一种新型信息工具。它是将一个微电子芯片嵌入符合ISO?7816标准的卡基中,做成卡片形式。目前,IC卡已经被广泛地应用到金融、交通、社保等很多领域,例如,我们经常使用的公交车卡就是IC卡的一种。

        IC卡读写器(简称读卡器)是IC卡与应用系统间的桥梁,在ISO国际标准中称之为IFD(Interface?Device,接口设备)。一般常见的IC卡采用射频技术与IFD进行通讯,即IFD内的CPU通过一个接口电路与IC卡相连并进行通信。其中,IC卡接口电路是IC卡读写器中至关重要的部分,根据实际应用系统的不同,可选择并行通信、半双工串行通信和I2C通信等不同的IC卡读写芯片。

        在实现本发明的过程中,发明人发现现有技术至少存在以下缺点:

        IC卡读写器可以通过串行通信接口(又称串口)与计算机的应用系统建立连接,但在建立连接的过程中,由于串口本身的特性,无法实现串口读卡器的即插即用功能。

        【发明内容】

        为了实现串口读卡器的即插即用功能,本发明提供了一种识别串口读卡器的方法和装置。所述技术方案如下:

        一种串口读卡器的识别方法,所述方法包括:

        操作系统加载串口总线驱动,所述操作系统通过所述串口总线驱动与串口进行通信;

        所述串口总线驱动向所述串口发送询问指令,并接收所述串口返回的应答信息,所述询问指令用于询问与所述串口连接的读卡器中卡座的设备类型,所述应答信息中携带与所述串口连接的读卡器中卡座的设备类型和数目;

        所述串口总线驱动根据所述应答信息,为所述串口连接的读卡器的卡座创建对应的物理设备对象,所述操作系统为每个物理设备对象安装相应类型的功能驱动及在智能卡服务中添加新的设备记录;

        所述串口总线驱动向与所述串口连接的读卡器发送查询卡座状态指令,并接收返回的卡座状态信息;

        所述串口总线驱动将所述卡座状态信息发送给所述功能驱动。

        所述操作系统加载串口总线驱动,通过所述串口总线驱动与串口通信,具体包括:

        操作系统加载串口总线驱动;

        所述串口总线驱动注册串口类设备的即插即用回调通知;

        串口驱动发现串口,并创建串口驱动实例设备对象,通过即插即用管理器将所述串口驱动实例设备对象返回给所述串口总线驱动;

        所述串口总线驱动判断所述串口驱动实例设备对象是否正确;

        如果正确,则所述串口总线驱动创建串口对象,与所述串口进行通信;

        如果不正确,则不进行操作。

        所述串口总线驱动中保存设备状态标识信息,用于标识是否有设备与串口相连接。

        所述接收所述串口返回的应答信息之后,所述方法还包括:

        所述串口总线驱动判断是否在规定时间内接收到所述串口返回的应答信息;

        如果是,则继续执行所述串口总线驱动根据所述应答信息,为所述串口连接的读卡器的卡座创建对应的物理设备对象的步骤;

        如果否,判断是否发生设备拔出动作;

        当发生设备拔出动作时,修改所述设备状态标识信息为无设备连接状态;

        当未发生设备拔出动作时,结束操作。

        所述接收所述串口返回的应答信息之后,所述方法还包括:

        所述串口总线驱动判断与所述串口连接的读卡器是否为新设备;

        如果是,则修改所述设备状态标识信息为有设备连接状态,执行所述操作系统所述串口总线驱动根据所述应答信息,为所述串口连接的读卡器的卡座创建对应的物理设备对象的步骤;

        如果否,则执行所述向与所述串口连接的读卡器发送查询卡座状态指令的步骤。

        所述串口总线驱动中保存卡座状态标识符,所述卡座状态标识符用于标识与所述串口对象相连接的读卡器的卡座状态,所述卡座状态包括:有卡已上电、有卡未上电和无卡。

        所述串口总线驱动接收到所述卡座状态信息之后,所述方法还包括:

        判断所述卡座状态信息是否发生改变;

        如果发生改变,则修改所述串口驱动总线中保存的卡座状态标识符后,执行将所述卡座状态信息发送给所述功能驱动的步骤;

        如果未发生改变,则结束操作。

        所述串口总线驱动将所述卡座状态信息发送给所述功能驱动之后,所述方法还包括:当所述卡座状态信息为有卡已上电或者有卡未上电时,所述功能驱动生成卡片操作指令;

        所述功能驱动判断所述串口总线驱动与所述读卡器之间的通信信道是否被占用;

        如果是,则所述串口总线驱动将所述卡片操作指令挂起,等待通信信道不被占用;

        如果否,则所述串口总线驱动将所述卡片操作指令发送给所述读卡器,并接收所述读卡器返回的操作指令执行结果,返回给所述功能驱动。

        所述功能驱动生成卡片操作指令,具体包括:

        所述功能驱动将所述操作系统的上层应用传入的卡片操作请求进行封装,封装成符合CCID协议报文格式的卡片操作指令。

        所述功能驱动判断所述串口总线驱动与所述读卡器之间的通信信道是否被占用,具体包括:

        所述功能驱动向所述操作系统申请独占通信信道的互斥量;

        如果申请成功,则所述通信信道未被占用;

        如果申请失败,则所述通信信道已被占用。

        所述串口总线驱动将所述卡片操作指令发送给所述读卡器,并接收所述读卡器返回的操作指令执行结果,返回给所述功能驱动,具体包括:

        所述串口总线驱动接收所述卡片操作指令,并按照串口传输协议报文格式的规定对所述卡片操作指令进行封装,然后通过相应的串口发送给所述读卡器;

        所述读卡器对接收到的操作指令进行解析后,根据所述操作指令对卡片进行相应的操作;

        所述读卡器将所述操作指令的执行结果进行封装,发送给所述串口总线驱动;

        所述串口总线驱动将所述执行结果解析后发送给所述功能驱动。

        一种串口读卡器的识别装置,所述装置包括:

        加载???,用于加载串口总线驱动,操作系统通过所述串口总线驱动与串口进行通信;

        第一收发???,用于向所述串口发送询问指令,并接收所述串口返回的应答信息,所述询问指令用于询问与所述串口连接地读卡器中卡座的设备类型,所述应答信息中携带与所述串口连接的读卡器中卡座的设备类型和数目;

        创建???,用于根据所述第一收发??榻邮盏降挠Υ鹦畔?,为所述串口连接的读卡器的卡座创建对应的物理设备对象,所述操作系统为每个物理设备对象安装相应类型的功能驱动及在智能卡服务中添加新的设备记录;

        第二收发???,用于向与所述串口连接的读卡器发送查询卡座状态指令,并接收返回的卡座状态信息;

        第三收发???,用于将所述卡座状态信息发送给所述功能驱动。

        所述加载???,具体包括:

        加载单元,用于加载串口总线驱动;

        注册单元,用于串口类设备的即插即用回调通知;

        创建单元,用于发现串口,并创建串口驱动实例设备对象,通过即插即用管理器将所述串口驱动实例设备对象返回给所述串口总线驱动;

        判断单元,用于判断所述串口驱动实例设备对象是否正确;

        如果正确,则所述串口总线驱动创建串口对象,与所述串口进行通信;

        如果不正确,则不进行操作。

        所述装置还包括:第一保存???,用于保存设备状态标识信息,用于标识是否有设备与串口相连接。

        所述装置还包括:

        应答消息判断???,用于判断是否在规定时间内接收到所述串口返回的应答信息;

        如果是,则所述创建??橹葱懈菟龅谝皇辗⒛?榻邮盏降挠Υ鹦畔?,为所述串口连接的读卡器的卡座创建对应的物理设备对象的步骤;

        如果否,判断是否发生设备拔出动作;

        当发生设备拔出动作时,所述第一保存??樾薷乃錾璞缸刺晔缎畔⑽奚璞噶幼刺?;

        当未发生设备拔出动作时,结束操作。

        所述装置还包括:

        新设备判断???,用于判断与所述串口连接的读卡器是否为新设备;

        如果是,则所述第一保存??樾薷乃錾璞缸刺晔缎畔⑽猩璞噶幼刺?,所述创建??橹葱兴霾僮飨低乘龃谧芟咔菟鲇Υ鹦畔?,为所述串口连接的读卡器的卡座创建对应的物理设备对象的步骤;

        如果否,则第二收发??橹葱兴鱿蛴胨龃诹拥亩量ㄆ鞣⑺筒檠ㄗ刺噶畹牟街?。

        所述装置还包括:第二保存???,用于保存卡座状态标识符,所述卡座状态标识符用于标识与所述串口对象相连接的读卡器的卡座状态,所述卡座状态包括:有卡已上电、有卡未上电和无卡。

        所述装置还包括:

        卡座状态判断???,用于判断所述卡座状态信息是否发生改变;

        如果发生改变,则所述第二保存??樾薷乃龃谇芟咧斜4娴目ㄗ刺晔斗?,所述第三收发??榻隹ㄗ刺畔⒎⑺透龉δ芮牟街?;

        如果未发生改变,则结束操作。

        所述装置还包括:

        生成指令???,用于当所述卡座状态信息为有卡已上电或者有卡未上电时,所述功能驱动生成卡片操作指令;

        通信通道判断???,用于判断所述串口总线驱动与所述读卡器之间的通信信道是否被占用;

        执行???,用于如果所述通信通道判断??榈呐卸辖峁?,则将所述卡片操作指令挂起,等待通信信道不被占用;如果所述通信通道判断??榈呐卸辖峁?,则将所述卡片操作指令发送给所述读卡器,并接收所述读卡器返回的操作指令执行结果,返回给所述功能驱动。

        所述生成指令???,具体用于:

        将所述操作系统的上层应用传入的卡片操作请求进行封装,封装成符合CCID协议报文格式的卡片操作指令。

        所述通信通道判断???,具体用于:向所述操作系统申请独占通信信道的互斥量;

        如果申请成功,则所述通信信道未被占用;

        如果申请失败,则所述通信信道已被占用。

        本发明实施例提供的技术方案带来的有益效果是:

        通过提供一种识别串口读卡器的方法和装置,可以使串口读卡器在主机的串口上实现即插即用,既继承了串口的优点又具备了即插即用的便利特点,实现过程中不需要对现有的串口读卡器进行任何的修改,还可以支持串口多卡座读卡器。

        【附图说明】

        图1是本发明实施例1中提供的一种串口读卡器的识别方法中的准备工作流程图;

        图2是本发明实施例1中提供的一种串口总线驱动的功能结构示意图;

        图3是本发明实施例1中提供的一种串口读卡器的识别方法流程图;

        图4是本发明实施例1中提供的一种串口读卡器的识别方法中通讯方法流程图;

        图5是本发明实施例2中提供的一种串口读卡器的识别装置的结构示意图。

        【具体实施方式】

        为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

        实施例1

        本发明实施例1提供了一种识别串口读卡器的方法,在本方法中,以计算机为执行主体,并设定该计算机中预先安装了读卡器设备的串口总线驱动,参见图1,该方法包括:

        步骤101:操作系统加载串口总线驱动;

        需要说明的是,步骤101中加载的串口总线驱动可以如图2所示,其中,串口总线驱动的主要用途在于:1、对读卡器进行轮询、创建设备及向功能驱动上报设备状态变化;2、对功能驱动生成的卡片操作指令按照串口传输协议报文格式的规定进行封装;3、操作指令以及轮询指令之间的互斥收发;4、支持多卡槽读卡器。

        步骤102:串口总线驱动向即插即用管理器注册串口类设备的即插即用回调通知;

        具体地,当即插即用管理器接收到该串口类型设备的即插即用回调通知后,操作系统检查是否存在串口。

        步骤103:操作系统发现串口后加载串口驱动;

        步骤104:串口驱动为每个发现的串口创建串口驱动实例设备对象,并通过即插即用管理器将串口驱动创建的串口驱动实例设备对象返回给串口总线驱动;

        其中,如果操作系统的串口驱动发现了多个串口,则创建多个相对应的串口驱动实例设备对象,并通过即插即用管理器将多个串口驱动实例对象逐个返回给串口总线驱动;

        当主机中存在多个串口时,可以分别使用COM1、COM2等进行区分。其中,COM即COMmunication,通信的简称。

        步骤105:串口总线驱动接收回调的参数;

        其中,回调的参数具体为串口驱动创建的串口驱动实例设备对象。

        步骤106:串口总线驱动判断回调的参数是否正确;

        如果正确,则执行步骤107;

        如果不正确,则不进行操作。

        其中,判断回调的参数是否正确具体可以为:串口总线驱动判断接收到的串口驱动实例设备对象与操作系统指定的串口是否匹配,如果匹配,则回调的参数正确;如果不匹配,则回调的参数不正确;

        串口总线驱动根据回调的次数判断出是COM1还是COM2(第一次是COM1,第二次则是COM2),然后综合注册表信息判断是否使用当前串口;判断注册表中指定使用的是COM1还是COM2。

        步骤107:串口总线驱动创建串口对象。

        其中,串口总线驱动创建的串口对象与串口驱动创建的串口驱动实例设备对象相对应。

        完成步骤107之后,即已完成识别串口读卡器的方法的准备工作。准备工作完成后,串口总线驱动以轮询的方式,每隔固定的一段时间向串口对象发送询问指令,该询问指令用于检查是否有串口读卡器设备的插入或拔出。由于串口对象与串口驱动实例设备对象之间的对应关系,串口驱动可以将该询问指令下发给相应的串口。参见图3,串口总线驱动的轮询具体为:

        步骤301:串口总线驱动向串口发送询问指令;

        其中,具体的询问指令可以为:0x1b?01?00?77?78?00;

        需要说明的是,串口总线驱动向串口发送的询问指令需要遵循串口通信协议的规定,指令的第一个字节0x1b是串口通信协议规定的下行指令头,表示该指令为下行指令,即由串口总线驱动下发给串口的指令;指令中的第2个字节和第3个字节表示该指令中封装的数据的长度,其中第2个字节表示数据长度的低字节,第3个字节表示数据长度的高字节;指令中封装的数据是从第4个字节开始到倒数第3个字节;指令的倒数第1个字节和倒数第2个字节是指令的校验和,由指令第2个字节数据至倒数第3个字节数据相加得到,其中,倒数第一个字节是表示指令校验和的高字节,倒数第2个字节表示指令校验和的低字节。

        其中,该询问指令的第4字节0x77表示询问读卡器中卡座设备类型。

        步骤302:串口总线驱动判断是否在规定时间内接收到串口返回的信息;

        如果是,则执行步骤303;

        如果否,则执行步骤311。

        其中,如果当前串口上连接着读卡器设备,则当读卡器接收到串口总线驱动发送的询问指令后,校验该指令是否正确,并向串口总线驱动返回校验结果,校验结果中的数据可以表示本次询问指令执行的结果是成功或者失败。例如:

        0xb1?01?00?00?01?00表示成功

        0xb1?01?00?01?02?00表示校验和错误

        0xb1?01?00?02?03?00表示数据长度超过271

        0xb1?01?00?03?04?00表示命令头不正确

        其中,如果读卡器校验询问指令正确,返回校验结果正确的同时,读卡器还要向串口总线驱动返回指令的执行结果(即应答信息)。具体的,应答信息可以为:0xb1?01?00?43?44?00。在该应答信息中,包含了卡座的类型标识,其中,0xb1是串口通信协议规定的上行指令头,0x43表示该读卡器卡座类型是C型。

        如果该读卡器是多卡座读卡器,则应答消息可以为:0xb1?03?00?43?43?53?dc?00,表示该读卡器的三个卡座的卡座类型分别为C型、C型和S型。

        步骤303:串口总线驱动判断是否收到应答消息;

        若是,则执行步骤304;

        若不是,则执行步骤311。

        步骤304:串口总线驱动判断当前连接到串口的设备是否是新设备;

        如果是,执行步骤305;

        如果不是,执行步骤306。

        具体的,在串口总线驱动中,存在一个用于表示当前串口是否连接设备的设备状态标识信息,串口总线驱动每次轮询后更新该设备状态标识信息。

        串口总线驱动根据该设备状态标识信息判断当前连接到串口的设备是否是新设备;如果设备状态标识信息为无设备连接状态,则可以判断出当前连接到串口的设备是新设备,并在轮询结束后修改设备状态标识为已有设备连接状态。

        步骤305:串口总线驱动分析读卡器返回的应答消息,并在主机中创建智能卡设备;

        其中,串口总线驱动分析读卡器返回的询问指令的应答信息,根据应答信息中的卡座类型和数目,在主机中创建智能卡设备,具体过程可以为:

        (1)串口总线驱动为读卡器的卡座创建对应的物理设备对象;

        这里需要说明的是,串口总线驱动根据读卡器的卡座类型和卡座个数,为创建相应的物理设备对象。

        (2)操作系统为每个物理设备对象安装相应类型的功能驱动;

        这里需要说明的是,主机的操作系统为已创建的物理设备对象安装并加载功能驱动,每个功能驱动注册一个标准的智能卡驱动库。其中,操作系统为每个物理设备对象所对应的卡座安装相应类型的智能卡设备的功能驱动(简称功能驱动),每个功能驱动注册一个标准的智能卡驱动库。这里,智能卡驱动库用于提供一个标准的框架使功能驱动与智能卡服务的服务控制器进行交互。

        还需要说明的是,智能卡服务可以包括服务控制器、资源管理器和数据库。其中,服务控制器用于管理智能卡服务、接收来自功能驱动的请求、管理资源管理器等;资源管理器用于在数据库中添加新的智能卡设备记录、或者删除已有的智能卡设备记录等。

        (3)在主机的智能卡服务中添加新的设备记录。

        其中,智能卡服务根据加载的功能驱动和注册的智能卡驱动库,在智能卡服务的资源管理器中创建新的智能卡设备记录。

        步骤306:串口总线驱动向读卡器发送查询卡座状态指令;

        其中,查询卡座状态指令具体可以为:0x?b1?0a?00?65?00?00?00?00?00?77?00?00?00?e6?00;

        如果串口总线驱动通过应答信息判断该读卡器为多卡座读卡器,则串口总线驱动生成与卡座数目相同的查询卡座状态的指令发送给读卡器。以读卡器有3个卡座为例,串口总线驱动向读卡器发送的三条查询卡座状态的指令分别可以为:

        0x?b1?0a?00?65?00?00?00?00?00?77?00?00?00?e6?00表示查询1号卡座状态

        0x?b1?0a?00?65?00?00?00?00?01?78?00?00?00?e8?00表示查询2号卡座状态

        0x?b1?0a?00?65?00?00?00?00?02?79?00?00?00?ea?00表示查询3号卡座状态

        其中,查询卡座状态的指令第9个字节表示卡座编号,00代表1号卡座、01代表2号卡座,并以此类推。

        需要说明的是,在串口总线驱动中,保存有一个卡座状态标识符,用于保存读卡器中卡座的状态,每次轮询后更新该卡座状态标识符;如果读卡器是多卡座读卡器,则串口总线驱动中会保存多个卡座状态标识符,与读卡器中的卡座一一对应??ㄗ刺晔斗梢园ㄈ鲋?,分别与读卡器中卡座的三个状态相对应,分别为:有卡未上电、有卡已上电、无卡。

        步骤307:串口总线驱动接收读卡器返回的卡座状态信息;

        返回的卡座状态信息可以为指令:0xb1?0a?00?81?00?00?00?00?00?a1?00?00?00?2c?01;

        其中,指令的第11个字节表示卡座的状态,其中,0x00表示有卡已上电、0x01标识有卡未上电、0x02表示无卡。因此,在上述具体的指令中,卡座状态为有卡已上电。

        步骤308:串口总线驱动根据卡座状态信息判断相应的卡座状态是否发生了改变;

        如果改变,执行步骤309;

        如果未改变,执行步骤310;

        其中,使用卡座状态信息中携带的卡座状态与串口总线驱动保存的卡座状态标识符进行比较,如果不同,则卡座状态发生了改变;如果相同,则卡座状态未改变。

        步骤309:串口总线驱动更新相应的卡座状态标识符,并向功能驱动报告相应卡座状态的变化;

        步骤310:串口总线驱动对读卡器的一次轮询结束;

        步骤311:串口总线驱动判断串口设备是否断开连接;

        如果是,则执行步骤312;

        如果否,则执行步骤310。

        其中,串口总线驱动根据其内部存储的设备状态标识信息判断串口设备是否断开连接;如果设备状态标识信息为已有设备连接状态,则可以判断出串口设备已经断开连接,即串口连接的设备已拔出。

        步骤312:串口总线驱动向操作系统报告串口设备断开连接,并更新设备状态标识信息后执行步骤310;

        其中,串口总线驱动修改设备状态标识信息为无设备连接状态,并向操作系统报告串口设备已断开连接,操作系统卸载功能驱动、删除系统中相应的设备记录。

        串口总线驱动通过轮询发现串口读卡器并与之建立连接后,串口总线驱动接收功能驱动发送的卡片操作指令,并对卡片操作指令进行封装后发送给读卡器、接收读卡器返回的指令执行结果并解析后传递给功能驱动;或者,根据时间计数器的设定,向读卡器定期发送询问指令、执行轮询。

        当主机通过串口总线驱动的轮询发现有读卡器通过串口与其连接时,在轮询结束后,可以执行以下操作,参见图4:

        步骤401:主机的上层应用发送卡片操作请求给功能驱动;

        具体地,主机的上层应用根据PCSC(Personal?Computer/Smart?Card)协议标准调用智能卡服务,并向功能驱动发送操作请求。

        步骤402:功能驱动生成卡片操作指令;

        具体的,功能驱动将主机上层应用发送的卡片操作请求进行封装,封装成符合CCID(USBChip/Smart?Card?Interface?Devices-USB,芯片智能卡接口设备)协议报文格式的卡片操作指令。如果读卡器是多卡座读卡器,则相应地按照CCID协议的报文格式使用第6个字节表示该功能驱动所对应的读卡器卡座的编号,0x00表示1号卡座、0x01表示2号卡座,并以此类推。

        例如,功能驱动接收到上层应用产生的取随机数请求0x00?84?00?00?08,功能驱动使用CCID协议报文格式规定的指令头(0x6f?05?00?00?00?00?10?00?00?00)对接收到的取随机数请求进行封装,得到取随机数的卡片操作指令为0x6f?05?00?00?00?00?10?00?00?00?00?84?00?00?08。

        步骤403:功能驱动判断串口总线驱动与读卡器之间的通信信道是否被占用;

        如果是,则执行步骤404;

        如果否,则执行步骤405。

        在本发明实施例中,由于串口总线驱动不断对串口进行轮询,因此,在主机与读卡器通信过程中需要使轮询指令与卡片操作指令互斥地、有序地收发,这一过程可以由串口总线驱动进行控制。即功能驱动生成卡片指令操作后,向操作系统申请标志该功能驱动能够独占通信信道的互斥量,使得功能驱动通过串口总线驱动向读卡器下发卡片操作指令,与读卡器进行数据的交互、指令的收发等,并在完成后释放互斥量;

        或者,串口总线驱动生成询问指令后,向操作系统申请标志轮询过程中通信信道为专用的互斥量,一次轮询结束后释放互斥量。

        由此,判断通信信道是否被占用的方法可以为:判断功能驱动是否能够成功获得互斥量;

        如果功能驱动能够成功获得互斥量,则说明通信信道没有被占用或者处于空闲状态;

        如果功能驱动获得互斥量失败,则说明通信信道已经被占用。

        步骤404:串口总线驱动将该功能驱动的指令挂起,等待互斥量被释放后,该功能驱动获取互斥量;

        如果获取成功,则执行步骤405;

        如果获取不成功,则继续等待互斥量被释放。

        例如,当前读卡器中的卡座状态为卡片已上电,功能驱动封装一条符合CCID协议报文格式的取随机数指令0x6f?05?00?00?00?00?10?00?00?00?00?84?00?00?08;但是在当前时刻,串口总线驱动正在对读卡器进行轮询,由于互斥量被占用,功能驱动获取互斥量失败,则将该取随机数指令挂起,等待串口总线驱动轮询结束后释放互斥量,再重新获取互斥量,获取成功后,执行步骤405。

        步骤405:串口总线驱动接收功能驱动生成的卡片操作指令,并保存互斥量;

        功能驱动获取互斥量成功后,向串口总线驱动发送生成的卡片操作指令,并且,将互斥量保存到串口总线驱动,当串口总线驱动接收到该指令的执行结果后释放互斥量。

        步骤406:串口总线驱动对接收到的功能驱动生成的卡片操作指令进行封装后发送给读卡器;

        其中,串口总线驱动对接收到的功能驱动生成的符合CCID协议报文格式的卡片操作指令按照串口传输协议报文格式的规定进行封装,然后通过串口发送给读卡器。

        例如,串口总线驱动对取随机数指令进行封装,即在该指令前加3个字节的数据,依次是串口传输协议报文格式规定的下行指令头0x1b、指令长度的低字节和指令长度的高字节,并在该指令之后加2个字节的数据,分别是校验和的低字节和校验和的高字节,封装后的取随机数指令可以为:0x6f?05?00?00?00?00?10?00?00?00?00?84?00?00?08

        步骤407:读卡器对接收到的操作指令进行解析;

        在本发明实施例中,读卡器对接收到的指令进行解析,去掉该指令中串口传输协议报文格式规定的部分,得到CCID协议报文格式的指令,如果该指令不是上、下电指令,则进一步将CCID协议报文格式规定的前10个字节的指令头去掉,得到功能APDU(ApplicationProtocol?Data?Unit应用协议数据单元)。

        例如,读卡器解析取随机数指令0x6f?05?00?00?00?00?10?00?00?00?00?84?00?00?08,得到CCID协议报文格式的指令:0x6f?05?00?00?00?00?10?00?00?00?00?84?00?00?08,由于该指令不是上电指令或者下电指令,则读卡器进一步解析得到功能APDU:0x00?84?00?00?08。

        步骤408:读卡器根据解析出的指令对卡片进行相应的操作,或将解析后的指令下发给卡片;

        其中,读卡器解析得到CCID协议报文格式的指令后,如果该指令是上电指令、或者下电指令,则读卡器对相应的卡片进行上电操作或者下电操作;或者将功能APDU发送给读卡器中的相应卡片。

        例如,如果主机解析出的操作指令为0x62?08?00?00?00?00?00?00?00?00,根据CCID协议报文格式规定可知该指令是卡片上电指令,于是,读卡器根据该指令对指定的卡片进行上电操作。

        步骤409:读卡器将指令的执行结果进行封装,发送给串口总线驱动;

        例如,读卡器中的卡片执行完成取随机数指令后,返回给读卡器的指令执行结果为:0x2111?ca?2b?2e?bb?20?05?90?00;读卡器按照CCID协议报文格式的规定对卡片返回的指令执行结果进行第一次封装,得到:0x21?11?ca?2b?2e?bb?20?05?90?00;然后,读卡器按照串口传输协议报文格式的规定添加上行指令头0xb1以及指令长度、校验和,得到封装后的指令执行结果为:0xb1?14?00?80?0a?00?00?00?00?10?00?00?00?2111ca2b2ebb20059000?73?03。

        步骤410:串口总线驱动将读卡器返回的指令执行结果解析后发给功能驱动。

        串口总线驱动将读卡器返回的指令执行结果按照串口传输协议进行解析,将解析得到的结果传递给功能驱动。

        本发明实施例提供了一种识别串口读卡器的方法,可以使串口读卡器在主机的串口上实现即插即用,既继承了串口的优点又具备了即插即用的便利特点,实现过程中不需要对现有的串口读卡器进行任何的修改,另外还可以支持串口多卡座读卡器。

        实施例2

        本发明实施例2提供了一种识别串口读卡器的装置,参见图5,该装置包括:

        加载???01,用于加载串口总线驱动,操作系统通过串口总线驱动与串口进行通信;

        第一收发???02,用于向串口发送询问指令,并接收串口返回的应答信息,询问指令用于询问与串口连接的读卡器中卡座的设备类型,应答信息中携带与串口连接的读卡器中卡座的设备类型和数目;

        创建???03,用于根据第一收发??榻邮盏降挠Υ鹦畔?,为串口连接的读卡器的卡座创建对应的物理设备对象,操作系统为每个物理设备对象安装相应类型的功能驱动及在智能卡服务中添加新的设备记录;

        第二收发???04,用于向与串口连接的读卡器发送查询卡座状态指令,并接收返回的卡座状态信息;

        第三收发???05,用于将卡座状态信息发送给功能驱动。

        其中,加载???01具体包括:

        加载单元,用于加载串口总线驱动;

        注册单元,用于串口类设备的即插即用回调通知;

        创建单元,用于发现串口,并创建串口驱动实例设备对象,通过即插即用管理器将串口驱动实例设备对象返回给串口总线驱动;

        判断单元,用于判断串口驱动实例设备对象是否正确;

        如果正确,则串口总线驱动创建串口对象,与串口进行通信;

        如果不正确,则不进行操作。

        进一步的,该装置还包括:

        第一保存???,用于保存设备状态标识信息,用于标识是否有设备与串口相连接。

        进一步的,该装置还包括:

        应答消息判断???,用于判断在规定时间内是否接收到串口返回的应答信息;

        如果是,则第一收发???02执行接收串口返回的应答信息的步骤;

        如果否,判断是否发生设备拔出动作;

        当发生设备拔出动作时,第一保存??樾薷纳璞缸刺晔缎畔⑽奚璞噶幼刺?;

        当未发生设备拔出动作时,结束操作。

        进一步的,该装置还包括:

        新设备判断???,用于判断与串口连接的读卡器是否为新设备;

        如果是,则第一保存??樾薷纳璞缸刺晔缎畔⑽猩璞噶幼刺?,创建???03执行操作系统串口总线驱动根据应答信息,为串口连接的读卡器的卡座创建对应的物理设备对象的步骤;

        如果否,则第二收发???04执行向与串口连接的读卡器发送查询卡座状态指令的步骤。

        进一步的,该装置还包括:

        第二保存???,用于保存卡座状态标识符,卡座状态标识符用于标识与串口对象相连接的读卡器的卡座状态,卡座状态包括:有卡已上电、有卡未上电和无卡。

        进一步的,该装置还包括:

        卡座状态判断???,用于判断卡座状态信息是否发生改变;

        如果发生改变,则第二保存??樾薷拇谇芟咧斜4娴目ㄗ刺晔斗?,第三收发??榻ㄗ刺畔⒎⑺透δ芮牟街?;

        如果未发生改变,则结束操作。

        进一步的,该装置还包括:

        生成指令???,用于当卡座状态信息为有卡已上电或者有卡未上电时,功能驱动生成卡片操作指令;

        通信通道判断???,用于判断串口总线驱动与读卡器之间的通信信道是否被占用;

        执行???,用于如果通信通道判断??榈呐卸辖峁?,则将卡片操作指令挂起,等待通信信道不被占用;如果通信通道判断??榈呐卸辖峁?,则将卡片操作指令发送给读卡器,并接收读卡器返回的操作指令执行结果,返回给功能驱动。

        其中,生成指令??榫咛逵糜冢?br>
        将操作系统的上层应用传入的卡片操作请求进行封装,封装成符合CCID协议报文格式的卡片操作指令。

        其中,通信通道判断??榫咛逵糜冢合虿僮飨低成昵攵勒纪ㄐ判诺赖幕コ饬?;

        如果申请成功,则通信信道未被占用;

        如果申请失败,则通信信道已被占用。

        本发明实施例提供了一种识别串口读卡器的装置,可以使串口读卡器在主机的串口上实现即插即用,既继承了串口的优点又具备了即插即用的便利特点,实现过程中不需要对现有的串口读卡器进行任何的修改,另外还可以支持串口多卡座读卡器。

        以上仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的?;し段е?。

    关 键 词:
    串口 读卡器 识别 方法 装置
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:串口读卡器的识别方法和装置.pdf
    链接地址://www.4mum.com.cn/p-5781703.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03