IE瀏覽器接入IC卡讀寫(xiě)器實(shí)現(xiàn)M1卡的讀寫(xiě)功能
- 2019-05-28 17:32:00
- 諾塔斯智能科技 原創(chuàng)
- 5655
基于ActiveX技術(shù)的ocx控件是實(shí)現(xiàn)網(wǎng)頁(yè)上讀寫(xiě)IC卡的一個(gè)比較不錯(cuò)的方法,因?yàn)閛cx是com組件,通過(guò)其發(fā)布的接口,IE可以實(shí)現(xiàn)所有的功能。ActiveX不僅能適應(yīng)大部分編程語(yǔ)言,做到與編程語(yǔ)言無(wú)關(guān),還能將IC卡讀卡器集成到web中,使得在BS結(jié)構(gòu)中可以在web客戶(hù)端輕松的調(diào)用IC卡讀卡器,極大地改善了用戶(hù)體驗(yàn)。 只要為IC卡讀卡器或者NFC讀寫(xiě)器發(fā)布相應(yīng)的ActiveX控件就可以實(shí)現(xiàn)在WEB客戶(hù)端使用IC卡讀卡器了,但是這種技術(shù)方案的最大缺點(diǎn)就是只支持IE瀏覽器,不支持其他的瀏覽器。這里我們僅以L3-U、L3-S兩款非接觸式IC卡讀寫(xiě)器在IE瀏覽器和IE內(nèi)核的瀏覽器中實(shí)現(xiàn)對(duì)M1卡的讀寫(xiě)功能。
第一、系統(tǒng)中注冊(cè)O(shè)CX控件,在開(kāi)發(fā)包中我們提供了LotusCardActiveX.ocx這個(gè)文件,需要對(duì)它進(jìn)行注冊(cè)(這里不再贅述如何注冊(cè)ocx控件),可以在開(kāi)發(fā)包中執(zhí)行RegOcx.bat這個(gè)批處理文件即可。注意,LotusCardActiveX.ocx所在的文件路徑不要有中文路徑,否則有可能提示控件注冊(cè)失敗。
第二、在頁(yè)面中引用正確的CLASSID,我們?cè)O(shè)備的CLASSID=CLSID:BD1874A5-3810-4639-8B70-3DDD607BAADB,在頁(yè)面中完整應(yīng)用如下:
<OBJECT ID=LotusCardDriver Visible=false WIDTH=0 HEIGHT=0 CLASSID="CLSID:BD1874A5-3810-4639-8B70-3DDD607BAADB"> </OBJECT>
第三,實(shí)現(xiàn)對(duì)M1卡的讀寫(xiě)操作,這里僅僅介紹對(duì)M1卡的讀寫(xiě),對(duì)其它卡片的讀寫(xiě)請(qǐng)參考對(duì)應(yīng)的文檔進(jìn)行。
function OnTest()
{ var nHandle = 0; //設(shè)備句柄 var bResult = 0; var strTextInfo = ""; nHandle = LotusCardDriver.OpenDevice("",0,0,0);//對(duì)IC卡讀寫(xiě)器進(jìn)行設(shè)備初始化,如果IC卡讀寫(xiě)是USB接口的,第一個(gè)參數(shù)為空;如果是IC卡讀寫(xiě)器是RS232串口設(shè)備,請(qǐng)?jiān)诘谝粋€(gè)參數(shù)位置提供正確的端口號(hào)。 if(nHandle <=0 ) { alert("打開(kāi)設(shè)備失敗!"); return; } LotusCardDriver.Beep(nHandle,10);//讀卡器蜂鳴器 bResult = LotusCardDriver.GetCardNo(nHandle,38);
if(bResult!=1)
{
alert("尋卡失敗!");
LotusCardDriver.CloseDevice(nHandle);
return;
} alert("卡號(hào):"+LotusCardDriver.CardNo);//獲取IC卡UID的方法 LotusCardDriver.CardPassWord="FFFFFFFFFFFF";
bResult=LotusCardDriver.LoadKey(nHandle, 96, 0); if(bResult!=1)
{
alert("裝載密碼失敗!");
LotusCardDriver.CloseDevice(nHandle);
return; }
bResult=LotusCardDriver.Authentication(nHandle, 96, 0);
if(bResult!=1)
{
alert("密碼認(rèn)證失敗!");
LotusCardDriver.CloseDevice(nHandle);
return; }
bResult = LotusCardDriver.Read(nHandle, 2);
if(bResult!=1)
{
alert("讀2塊失敗!");
LotusCardDriver.CloseDevice(nHandle);
return; }
alert("2塊:"+LotusCardDriver.ReadWriteBuffer);
LotusCardDriver.ReadWriteBuffer="0123456789abcdef0123456789abcdef";
bResult = LotusCardDriver.Write(nHandle, 2);
if(bResult!=1)
{
alert("寫(xiě)2塊失敗!");
LotusCardDriver.CloseDevice(nHandle);
return; }
alert("寫(xiě)2塊OK");
LotusCardDriver.CardPassWord="FFFFFFFFFFFF";
bResult=LotusCardDriver.LoadKey(nHandle, 96, 1); if(bResult!=1)
{
alert("扇區(qū)1裝載密碼失敗!");
LotusCardDriver.CloseDevice(nHandle);
return; }
bResult=LotusCardDriver.Authentication(nHandle, 96, 1);
if(bResult!=1)
{
alert("扇區(qū)1密碼認(rèn)證失敗!");
LotusCardDriver.CloseDevice(nHandle);
return; }
bResult = LotusCardDriver.WriteText(nHandle, 1, "春眠不覺(jué)曉處處蚊子咬夜來(lái)風(fēng)雨聲疙瘩知多少");
if(bResult!=1)
{
alert("扇區(qū)1寫(xiě)文本失敗!");
LotusCardDriver.CloseDevice(nHandle);
return; }
strTextInfo = LotusCardDriver.ReadText(nHandle, 1);
alert("扇區(qū)1文本:"+strTextInfo); LotusCardDriver.CloseDevice(nHandle);
}
</script>
第四、在頁(yè)面控件中調(diào)用OnTest()函數(shù)。
<INPUT id=test type=button value="讀卡器測(cè)試" onclick=OnTest()>以上內(nèi)容是基于IE瀏覽器接入IC卡讀寫(xiě)器實(shí)現(xiàn)M1卡的讀寫(xiě)功能的開(kāi)發(fā)范例,用戶(hù)在使用我司產(chǎn)品進(jìn)行二次開(kāi)發(fā)過(guò)程中,可以作為范例進(jìn)行參考和快速開(kāi)發(fā)。如有疑問(wèn)和需要技術(shù)支持,請(qǐng)聯(lián)系我司在線技術(shù)支持。
| 聯(lián)系人: | 張經(jīng)理 |
|---|---|
| 電話: | 400-023-6659 |
| 傳真: | 023-68798110 |
| Email: | 843718693@qq.com |
| QQ: | 843718693 |
| 微信: | Lotus-Smart |
| 微博: | lotusreader |
| 旺旺: | 諾塔斯智能科技有限公司 |
| 地址: | 重慶市江北區(qū)宏帆路36號(hào)宏帆天地1棟6樓 |
-
在線客服

-
關(guān)注微信

-
網(wǎng)上商城

