採用友我科技IC卡讀卡器web插件可以對普通IC卡進行讀和寫操作,根據實際業務需求,可以手動點擊讀寫和在web網頁内自動讀寫.
在web網頁内讀IC卡數據的API有如下:
1.M1卡讀塊,支持将讀取的數據進行DES或者3DES加或者解密後送回
M1ReadBlock(blockIndex, FormatID)
如果DesDir=0則直接讀塊,如果DesDir=1(YW-607)或者DesDir=2(YW-607),同時指定DES的密鑰,則将數據加解密後返回
參數:blockIndex,塊号,絕對地址,從0開始
FormatID,格式,0:16進制字符串返回,1:普通字符串返回。
2.M1卡讀扇區,支持将讀取的數據進行DES或者3DES加或者解密後送回
M1ReadSector(sectorindex, FormatID)
如果DesDir=0則直接讀扇區,如果DesDir=1(YW-607)或者DesDir=2(YW-607),同時指定DES的密鑰,則将數據加解密後返回
參數:blockIndex,塊号,絕對地址,從0開始
FormatID,格式,0:16進(jìn)制字符串返回,1:普通字符串返回。
讀(dú)塊API和讀(dú)扇區API都可以讀(dú)出卡内數據, 對於(yú)1K字節的M1卡, 一個扇區包含4個數據塊.
function
ReadBlock()
{
var BlockID;
var Key; BlockID =
4;
Key ="FFFFFFFFFFFF"; rfidreader.KeyMode=0; rfidreader.KeyStringMode=0; rfidreader.KeyString=Key; rfidreader.Repeat=0; rfidreader.M1ReadBlock(BlockID,
0);
}
rfidreader.onResult(function(resultdata)
{
switch(resultdata.FunctionID)
{
case
5:
if(resultdata.Result>0)
{ CarNo = resultdata.CardNo; BlockData = resultdata.strData;
}
else
{
Alert("讀失敗");
}
break;
}
}
);
讀一次數據就結束瞭(le),其實是很簡單(dān)的.
對於(yú)自動讀數據,與單詞讀數據的API接口是一樣的, 不同的是我們通過友我科技IC卡讀卡器web插件的屬性repeat來控制, 當repeat=0表明單次讀取, 當repeat=1表明是自動連續讀取, 當讀取到接過瞭(le),通過回調函數返回數據, 如果沒有讀到數據或者錯誤,則不返回任何數據.
function
ReadBlock()
{
var BlockID;
var Key; BlockID =
4;
Key ="FFFFFFFFFFFF"; rfidreader.KeyMode=0; rfidreader.KeyStringMode=0; rfidreader.KeyString=Key; rfidreader.Repeat=1; rfidreader.M1ReadBlock(BlockID,
0);
}
IC卡web頁面寫數據通過如下api接口實現:
1.M1卡寫塊,支持DES或者3DES加密後寫塊
M1WriteBlock(blockindex,blockdata,FormatID)
如果DesDir=0則直接将數據寫塊,如果DesDir=1(YW-607)或者DesDir=2(YW-607),同時指定DES的密鑰,則将數據加解密後寫塊
參數:blockIndex,塊号,絕對地址,從0開始
blockdata:要寫入的字符串,由於(yú)M1卡的每塊爲16字節,故blockdata最終轉換的16進制不夠16字節長度,後面将補(bǔ)0x00,如果超過16字節,将去掉多餘的字節。
FormatID,格式,0:16進(jìn)制字符串返回,1:普通字符串返回。
2.M1卡寫扇區(qū),支持DES或者3DES加密後(hòu)寫扇區(qū)
M1WriteSector(blockindex,blockdata,FormatID)
如果DesDir=0則直接将數據寫扇區,如果DesDir=1(YW-607)或者DesDir=2(YW-607),同時指定DES的密鑰,則将數據加解密後寫扇區
參數:blockIndex,塊号,絕對地址,從0開始
blockdata:要寫入的字符串,由於(yú)M1卡的扇區有4塊和16塊,可用字節(jié)爲48字節(jié)和240字節(jié)
故blockdata最終轉換的16進制不夠字節長(zhǎng)度,後面将補(bǔ)0x00,如果超過字節長(zhǎng)度,将去掉多餘的字節。
FormatID,格式,0:16進(jìn)制字符串返回,1:普通字符串返回
寫數據的結果也是通過回調函數返回.
以寫數據塊爲例:
function
WriteBlock()
{
var BlockID;
var Key;
var Data; BlockID =
4;
Key ="FFFFFFFFFFFF"; Data ="11223344556677889900AABBCCDDEEFF"; rfidreader.KeyMode=0; rfidreader.KeyStringMode=0; rfidreader.KeyString=Key; rfidreader.Repeat=0; rfidreader.M1WriteBlock(BlockID, Data,0);
}
當(dāng)寫完成或者寫失敗(bài)後, 系統在回調函數中返回結果:
rfidreader.onResult(function(resultdata)
{
switch(resultdata.FunctionID)
{
case
5: document.getElementById("CardNo").value = resultdata.CardNo;
if(resultdata.Result>0)
{
case
6:
if(resultdata.Result>0)
{ CardNo=resultdata.CardNo;
alert("寫入成功");
}
else
{
alert("寫入失敗,錯誤:")
}
break;
}
}
);
