BS結構中網頁程序如何使用IC卡讀卡器
摘要
BS結構中網頁程序如何使用IC卡讀卡器
? ? BS結構程序由于維護起來比CS結構程序簡單,現在越來越多的需求使用BS結構來實現。那么如何在BS結構中的網頁程序中使用IC卡讀卡器呢?
? ? 友我科技為此提供了現成的解決方案,采用Js+ocx方式,將IC卡讀卡器的驅動部分封裝在ocx中,在網頁端使用js腳本調用ocx的接口,不僅實現IC卡的讀卡,還可以對IC卡進行寫卡操作。
? ? ?友我科技的大部分IC卡讀卡器都支持BS結構網頁工作模式,包括IC卡讀卡器YW-605HA,YW-608HA,YW-607,SDT-HA等等,這些讀卡器可以支持:ISO14443 TypeA(包含M1,S50,S70,FM08和CPU卡),ISO14443 TypeB和ISO15693協議卡片;支持NFC定義的Type1(ISO14443 TYPEA、TOPAZ),Type2(ISO14443 TYPEA、MIFARE Ultralight、 NTAG203/210/212/213/216等),Type3(Sony Felica), Type4(ISO14443 TYPEA/B、MIFARE DESFire等)。。
? ? ocx采用基于COM的activex技術,分為32位版本和64位版本,軟件工程師可以根據需求自己選擇合適版本,或者選擇自動安裝由安裝程序自動選擇適合當前瀏覽器的版本。
在js腳本中,可以動態加載ocx控件,也可以選擇靜態加載ocx控件。
動態加載方法:
var obj = new ActiveXObject("YW60X.yw60xCtrl.1");?
靜態加載方法:
? ? ??
js腳本控制IC卡讀卡器
1.打開IC卡讀卡器
function OpenReader()
{
? if(document.ReaderTest.YW_USBHIDInitial()<=0)
? {
? ? ? document.getElementById("CardNo").value = "沒有讀卡器";
? ? ? return false;
? ?}?
? return true;
}
2.關閉IC卡讀卡器
function CloseReader()
{
? ?return document.ReaderTest.YW_USBHIDFree();
}
3.尋卡,并獲得卡號,卡號可以根據yw60x.ocx控件提供的各種方法做轉換,以滿足自己的顯示需求。
function RequestCard()
{
? ?var i;
? ?var CardType;
? ?var vCardNo;
? ?var LenCardNo;
? ?
? ?if(OpenReader()==false)return;
? ?i = document.ReaderTest.YW_RequestCard(1,82);
? ?if(i<0)
? ?{
document.getElementById("CardNo").value ="尋卡失敗";
return;
? ?}
? ?i = document.ReaderTest.YW_AntiCollide(1);
? ?if(i<0)
? ?{
document.getElementById("CardNo").value ="尋卡失敗";
return;
? ?}
? ?
? ?LenCardNo = document.ReaderTest.OutData1Size;
? ?vCardNo ? ?= document.ReaderTest.OutData1;
? ?document.getElementById("CardNo").value = document.ReaderTest.ConvertCardNo(vCardNo, 0);
? ?i = document.ReaderTest.YW_CardSelect(1,LenCardNo,vCardNo);
? ?
? ?
}
4.讀卡
function ReadCard()
{
? ?var BlockID;
? ?var Key;
? ?RequestCard();
? ?BlockID = document.getElementById("BlockIDRead").value;?
? ?
? ?Key =document.ReaderTest.GetVariantFromHexStr(document.getElementById("KeyRead").value);
? ?i = document.ReaderTest.YW_KeyAuthorization(1,96,BlockID,Key);
? ?if(i<0)
? ?{
document.getElementById("DataRead").value ="密鑰認證錯誤";
return;
? ?}?
? ?
? ?i = document.ReaderTest.YW_ReadaBlock(1,BlockID,16);
? ?if(i<0)
? ?{
document.getElementById("DataRead").value ="讀塊錯誤";
return;
? ?} ?
? ?document.getElementById("DataRead").value = document.ReaderTest.GetHexStr(document.ReaderTest.OutData1);?
? ?document.ReaderTest.YW_Buzzer(1,5,5,1);
? ?CloseReader();
}
5.寫卡
function WriteCard()
{
? ?var BlockID;
? ?var Key;
? ?var Data;
? ?RequestCard();
? ?BlockID = document.getElementById("BlockIDWrite").value;?
? ?
? ?Key =document.ReaderTest.GetVariantFromHexStr(document.getElementById("KeyWrite").value);
? ?i = document.ReaderTest.YW_KeyAuthorization(1,96,BlockID,Key);
? ?if(i<0)
? ?{
alert("密鑰認證錯誤");
return;
? ?}
? ??
? ?Data =document.ReaderTest.GetVariantFromHexStr(document.getElementById("DataWrite").value);
? ?i = document.ReaderTest.YW_WriteaBlock(1,BlockID,16,Data);
? ?if(i<0)
? ?{
alert("寫塊錯誤");
return;
? ?} ?
? ?document.ReaderTest.YW_Buzzer(1,5,5,1);
? ?alert("寫塊成功");
? ?CloseReader();
}
在讀卡和寫卡中,可以將各個數據利用yw60x.ocx提供的des和3des函數進行加密和解密,使得數據更安全,至此一個簡單的網頁端調用IC卡讀卡器程序就好了。