BS結(jié)構(gòu)程序由于維護(hù)起來(lái)比CS結(jié)構(gòu)程序簡(jiǎn)單,現(xiàn)在越來(lái)越多的需求使用BS結(jié)構(gòu)來(lái)實(shí)現(xiàn)。那么如何在BS結(jié)構(gòu)中的網(wǎng)頁(yè)程序中使用IC卡讀卡器呢?
友我科技為此提供了現(xiàn)成的解決方案,采用Js+ocx方式,將IC卡讀卡器的驅(qū)動(dòng)部分封裝在ocx中,在網(wǎng)頁(yè)端使用js腳本調(diào)用ocx的接口,不僅實(shí)現(xiàn)IC卡的讀卡,還可以對(duì)IC卡進(jìn)行寫卡操作。
友我科技的大部分IC卡讀卡器都支持BS結(jié)構(gòu)網(wǎng)頁(yè)工作模式,包括IC卡讀卡器YW-605HA,YW-608HA,YW-607,SDT-HA等等,這些讀卡器可以支持:ISO14443 TypeA(包含M1,S50,S70,FM08和CPU卡),ISO14443 TypeB和ISO15693協(xié)議卡片;支持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技術(shù),分為32位版本和64位版本,軟件工程師可以根據(jù)需求自己選擇合適版本,或者選擇自動(dòng)安裝由安裝程序自動(dòng)選擇適合當(dāng)前瀏覽器的版本。
在js腳本中,可以動(dòng)態(tài)加載ocx控件,也可以選擇靜態(tài)加載ocx控件。
動(dòng)態(tài)加載方法:
var obj = new ActiveXObject("YW60X.yw60xCtrl.1");
靜態(tài)加載方法:
<object id="ReaderTest"
classid="clsid:167E1838-7388-4A24-86DE-985B91F0FFBF">
</object>
js腳本控制IC卡讀卡器
1.打開(kāi)IC卡讀卡器
function OpenReader()
{
if(document.ReaderTest.YW_USBHIDInitial()<=0)
{
document.getElementById("CardNo").value = "沒(méi)有讀卡器";
return false;
}
return true;
}
2.關(guān)閉IC卡讀卡器
function CloseReader()
{
return document.ReaderTest.YW_USBHIDFree();
}
3.尋卡,并獲得卡號(hào),卡號(hào)可以根據(jù)yw60x.ocx控件提供的各種方法做轉(zhuǎn)換,以滿足自己的顯示需求。
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 ="密鑰認(rèn)證錯(cuò)誤";
return;
}
i = document.ReaderTest.YW_ReadaBlock(1,BlockID,16);
if(i<0)
{
document.getElementById("DataRead").value ="讀塊錯(cuò)誤";
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("密鑰認(rèn)證錯(cuò)誤");
return;
}
Data =document.ReaderTest.GetVariantFromHexStr(document.getElementById("DataWrite").value);
i = document.ReaderTest.YW_WriteaBlock(1,BlockID,16,Data);
if(i<0)
{
alert("寫塊錯(cuò)誤");
return;
}
document.ReaderTest.YW_Buzzer(1,5,5,1);
alert("寫塊成功");
CloseReader();
}
在讀卡和寫卡中,可以將各個(gè)數(shù)據(jù)利用yw60x.ocx提供的des和3des函數(shù)進(jìn)行加密和解密,使得數(shù)據(jù)更安全,至此一個(gè)簡(jiǎn)單的網(wǎng)頁(yè)端調(diào)用IC卡讀卡器程序就好了。
軸瓦振動(dòng)速度傳感器廠家
軸承振動(dòng)探頭接線
磁電轉(zhuǎn)速探頭使用方法
江蘇震動(dòng)探頭廠家
智能振動(dòng)變送器廠家