基于瀏覽器的非接觸式CPU卡IC卡,M1讀寫調試樣例
時間:2019-07-09 09:17來源:未知 作者:admin
huitai1014
B/S(Brower/Server,瀏覽器/服務器)模式又稱B/S結構,是Web興起后的一種網絡結構模式。Web瀏覽器是客戶端最主要的應用軟件。這種模 式統一了客戶端,將系統功能實現的核心部分集中到服務器上,簡化了系統的開發、維護和使用;
現在越來越多的B/S架構的應用,然而在針對嵌入式開發過程中,特別是對 非接觸式IC卡,CPU卡的讀寫等一系列的嵌入式開發,基于瀏覽器的B/S架構就顯得有些“ 力不從心 ”了。
為了在 B/S(Brower/Server,瀏覽器/服務器)模式中使用 IC卡讀寫器進行對 非接觸式CPU卡的讀寫,我們在這里以Actice X控件為例,提供基于 Actice X通過瀏覽器對非接觸式CPU卡的讀寫范例,供大家參考。由于 Actice X控件只能在IE瀏覽器或基于IE內核的瀏覽器上才能使用。因此, Actice X控件的使用也是有局限性的,這也是基于B/B架構環境下嵌入式開發的一個軟肋。
CPU卡dx
這里以諾塔斯L3-U 非接觸式CPU卡讀寫器在 在IE瀏覽器或者基于IE內核的瀏覽器環境下,利用Active X控件實現對非接觸式CPU卡的讀寫操作,詳細步驟如下:
第一、系統中注冊OCX控件,在開發包中我們提供了LotusCardActiveX.ocx這個文件,需要對它進行注冊(這里不再贅述如何注冊ocx控件),可以在開發包中執行RegOcx.bat這個批處理文件即可。注意, LotusCardActiveX.ocx所在的文件路徑不要有中文路徑,否則有可能提示控件注冊失敗。
第二、在頁面中引用正確的CLASSID,我們設備的CLASSID=CLSID:BD1874A5-3810-4639-8B70-3DDD607BAADB,在頁面中完整應用如下:
<OBJECT ID=LotusCardDriver Visible=false WIDTH=0 HEIGHT=0 CLASSID="CLSID:BD1874A5-3810-4639-8B70-3DDD607BAADB"> </OBJECT>
第三、在IE瀏覽器或者基于IE內核的瀏覽器環境下,利用Active X控件實現對非接觸式CPU卡的讀寫操作,范例代碼如下:
function OnTest(){ var nHandle = 0; //設備句柄 var bResult = 0; var strTextInfo = ""; var strMac = ""; nHandle = LotusCardDriver.OpenDevice("",0,0,0);//讀寫器設備初始化,如果采用USB免驅動 IC卡讀寫器,第一個參數為空;
如果采用RS232串口免驅的IC卡讀寫器,第一個參數為對應的端口號;如果采用TCP/IP通信的IC卡讀寫器,第一個參數為當前設備的IP地址。 if(nHandle <=0 ) { alert("打開設備失??!"); return; } LotusCardDriver.Beep(nHandle,10);//設置IC卡讀寫器的蜂鳴器,對讀寫器操作過程中的提示音。 bResult = LotusCardDriver.SetCardType(nHandle, 'A'); if(bResult!=1) { alert("設置卡類型失??!"); LotusCardDriver.CloseDevice(nHandle); return; } LotusCardDriver.CardPassWord="FFFFFFFFFFFF";//卡片出廠的默認密碼12個F bResult=LotusCardDriver.ResetCpuCard(nHandle); if(bResult!=1) { alert("復位CPU卡失??!"); LotusCardDriver.CloseDevice(nHandle); return; } alert("ATS:" +LotusCardDriver.ReadWriteBuffer); LotusCardDriver.ReadWriteBuffer="0084000004";//CPU卡開放指令,在針對CPU卡讀寫過程中,實際指令請參考非接觸式CPU卡的COS指令手冊進行。 bResult=LotusCardDriver.SendCOSCommand(nHandle); if(bResult!=1) { alert("執行APDU失??!"); LotusCardDriver.CloseDevice(nHandle); return; } alert("APDU返回值:" +LotusCardDriver.ReadWriteBuffer); strMac = LotusCardDriver.CalcMac("BDEA1D6B7DCE4066", "84D401FF1CD080DBC77396518189B07B35A1B3F47E2370A96AC8F57ED4", "00000000000000000000000000000000"); alert("MAC:"+strMac); LotusCardDriver.CloseDevice(nHandle);}</script><!-- Insert HTML here --><INPUT id=test type=button value="讀卡器測試" onclick=OnTest()></BODY>
范例中僅僅采用了
0084000004
這條指令對非接觸式CPU卡的一個讀寫驗證,用戶可以根據廠商提供的非接觸式CPU卡配套的指令進行二次開發,我們將提供技術支持,讓客戶實現快速開發,從而縮短產品開發周期。