项目名称:吸入式身份证扫描仪(身份证属于非标准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层。
(不想写了,闲了再说)