接到個模塊,要在已有的web工程里集成身份證讀卡器,高拍儀等硬件。一時摸不着頭腦,網上搜了下,發現都寫的高端到看不懂。后來找了個已成功集成的web工程研究了下,發現弱爆了。這種硬件設備都已經做好了對web支持的控件(如activeX),瀏覽器只需對activeX放行。然后在工程中加入廠家提供的web開發包,在需要集成硬件的web頁面中引入硬件設備對應的classId,邊完成了集成。
例如在頁面中集成身份證讀卡器:
在頁面中添加讀卡插件對應的<object>
<object id="CardReader1" codebase="FirstActivex.cab#version=1,3,2,1" classid="CLSID:F225795B-A882-4FBA-934C-805E1B2FBD1B"
width="102" height="126">
<param name="_Version" value="65536"/>
<param name="_ExtentX" value="2646"/>
<param name="_ExtentY" value="1323"/>
<param name="_StockProps" value="0"/>
</object>
在js中,根據id便可以取得讀卡信息的對象,就可以取得具體的讀卡信息了:
obj.nameL()便是身份證姓名,然后將值賦給對應的標簽。
function cardMatch(){ var obj = byId("CardReader1"); if(false==isInit) { obj.setPortNum(0); isInit=true; } obj.Flag=0; //obj.BaudRate=115200; //設置照片保存路徑,照片文件名:(身份證號).bmp。默認路徑為系統臨時目錄,照片文件名:image.bmp //obj.PhotoPath=form1.photoPath.value; var rst = obj.ReadCard(); //獲取各項信息 if(0x90==rst) { if(isExist("nameMatch")){ byName("nameMatch").value=obj.NameL(); } } }
想把硬件設備讀到的圖片提交到服務器,可以提交圖片的base64碼(一般設備的web開發包都已經幫我們轉好了)。
后來見到了設備廠商,他們直接給了個web的demo,然后發現他們早都把web所有東西,都做好 了,我們只用粘貼進自己項目即可,早知道早聯系他們了。不過因為一般web開發包都是以html為模版的,所以有時候我們把html改成用jsp集成設備,常常會出現activeX控件無法加載,造成設備用不了問題,但是用html則完全正常,這個還在想辦法解決。