一个(基于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层。

      (不想写了,闲了再说)

 

posted @ 2017-03-20 09:40  鞠帅  阅读(513)  评论(0编辑  收藏  举报