zoukankan      html  css  js  c++  java
  • 一个(基于xfs协议)身份证扫描仪的理解

    项目名称:吸入式身份证扫描仪(身份证属于非标准wosa)

    功能:读取身份证信息(姓名 性别 民族 出生日期 住址 身份证号码 签发机关 有效期限 正面扫描图 背面扫描图)

    开发环境及语言:vs2013 MFC  win8

    项目整体架构:

      应用层   API层   SPI层   服务提供层sp

      

        服务提供层sp:提供dll 直接驱动硬件设备。

        SPI层:对硬件sp的一次封装,主要基于wosa协议导出11个函数(严格基于协议)。

        API层:对SPI层的封装,同时负责xfs管理器的加载,事件的注册,设备加锁等...

        应用层:通过调用简单的接口,从SPI层直接拿到硬件设备读取的信息。

      SPI的详细描述:

        执行流程: 

          1.API加载xfs管理器环境(实际就是3个dll弄到进程,open时给逻辑服务名-》找注册表-》加载SPI的dll,之后API和SPI就可以搞事情了)

        

        大体架构:

          硬件接口类 -> 硬件类        PxfsBase -> xxx_xfsBase     xfs管理器   日志打印类    辅助功能类

          API给命令,传递到xfs管理器中,xfs根据接口名称判断是同步还是异步消息。

          如果是同步xfs传递给SPI,SPI接到命令,压入命令队列,直接返回结果,XFS按照消息标志拦截该消息,返回结果,可以看出同步命令是没有办法接受消息的。

          如果是异步,xfs传递给SPI,SPI接到命令,压入命令队列,直接返回结果,XFS接到按兵不动,循环等待,pxfsbase类开启的任务线程从命令队列取出消息,

          执行对应的命令,得到数据封装好,postMessage给API层。

          (不想写了,闲了再说)

  • 相关阅读:
    C语言宏中"#"和"##"的用法
    Ubuntu 14.04 LTS 安装和配置Bochs
    C和C++中static的比较
    总线设备驱动模型
    驱动设计的思想:面向对象/分层/分离
    基于分层思想的驱动程序软件框架
    单元测试指南
    Apollo移植
    剑指offer python版 数组中出现次数超过一半的数字
    剑指offer python版 字符串的排列
  • 原文地址:https://www.cnblogs.com/jushuai/p/6585938.html
Copyright © 2011-2022 走看看