項目名稱:吸入式身份證掃描儀(身份證屬於非標準wosa)架構
功能:讀取身份證信息(姓名 性別 民族 出生日期 住址 身份證號碼 簽發機關 有效期限 正面掃描圖 背面掃描圖)異步
開發環境及語言:vs2013 MFC win8函數
項目總體架構:post
應用層 API層 SPI層 服務提供層sp線程
服務提供層sp:提供dll 直接驅動硬件設備。日誌
SPI層:對硬件sp的一次封裝,主要基於wosa協議導出11個函數(嚴格基於協議)。blog
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層。
(不想寫了,閒了再說)