IC卡讀卡器WEB讀寫IC卡數(shù)據(jù)
采用友我科技IC卡讀卡器web插件可以對普通IC卡進行讀和寫操作,根據(jù)實際業(yè)務(wù)需求,可以手動點擊讀寫和在web網(wǎng)頁內(nèi)自動讀寫.
在web網(wǎng)頁內(nèi)讀IC卡數(shù)據(jù)的API有如下:
1.M1卡讀塊,支持將讀取的數(shù)據(jù)進行DES或者3DES加或者解密后送回
M1ReadBlock(blockIndex, FormatID)
如果DesDir=0則直接讀塊,如果DesDir=1(YW-607)或者DesDir=2(YW-607),同時指定DES的密鑰,則將數(shù)據(jù)加解密后返回
參數(shù):blockIndex,塊號,絕對地址,從0開始
FormatID,格式,0:16進制字符串返回,1:普通字符串返回。
2.M1卡讀扇區(qū),支持將讀取的數(shù)據(jù)進行DES或者3DES加或者解密后送回
M1ReadSector(sectorindex, FormatID)
如果DesDir=0則直接讀扇區(qū),如果DesDir=1(YW-607)或者DesDir=2(YW-607),同時指定DES的密鑰,則將數(shù)據(jù)加解密后返回
參數(shù):blockIndex,塊號,絕對地址,從0開始
FormatID,格式,0:16進制字符串返回,1:普通字符串返回。
讀塊API和讀扇區(qū)API都可以讀出卡內(nèi)數(shù)據(jù), 對于1K字節(jié)的M1卡, 一個扇區(qū)包含4個數(shù)據(jù)塊.
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);
}
讀卡器在回調(diào)中返回數(shù)據(jù):
rfidreader.onResult(function(resultdata)
{
switch(resultdata.FunctionID)
{
case 5:
if(resultdata.Result>0)
{
CarNo = resultdata.CardNo;
BlockData = resultdata.strData;
}
else
{
Alert("讀失敗");
}
break;
}
}
);
讀一次數(shù)據(jù)就結(jié)束了,其實是很簡單的.
IC卡網(wǎng)頁自動讀數(shù)據(jù)
對于自動讀數(shù)據(jù),與單詞讀數(shù)據(jù)的API接口是一樣的, 不同的是我們通過友我科技IC卡讀卡器web插件的屬性repeat來控制, 當(dāng)repeat=0表明單次讀取, 當(dāng)repeat=1表明是自動連續(xù)讀取, 當(dāng)讀取到接過了,通過回調(diào)函數(shù)返回數(shù)據(jù), 如果沒有讀到數(shù)據(jù)或者錯誤,則不返回任何數(shù)據(jù).
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頁面寫數(shù)據(jù)通過如下api接口實現(xiàn):
1.M1卡寫塊,支持DES或者3DES加密后寫塊
M1WriteBlock(blockindex,blockdata,FormatID)
如果DesDir=0則直接將數(shù)據(jù)寫塊,如果DesDir=1(YW-607)或者DesDir=2(YW-607),同時指定DES的密鑰,則將數(shù)據(jù)加解密后寫塊
參數(shù):blockIndex,塊號,絕對地址,從0開始
blockdata:要寫入的字符串,由于M1卡的每塊為16字節(jié),故blockdata最終轉(zhuǎn)換的16進制不夠16字節(jié)長度,后面將補0x00,如果超過16字節(jié),將去掉多余的字節(jié)。
FormatID,格式,0:16進制字符串返回,1:普通字符串返回。
2.M1卡寫扇區(qū),支持DES或者3DES加密后寫扇區(qū)
M1WriteSector(blockindex,blockdata,FormatID)
如果DesDir=0則直接將數(shù)據(jù)寫扇區(qū),如果DesDir=1(YW-607)或者DesDir=2(YW-607),同時指定DES的密鑰,則將數(shù)據(jù)加解密后寫扇區(qū)
參數(shù):blockIndex,塊號,絕對地址,從0開始
blockdata:要寫入的字符串,由于M1卡的扇區(qū)有4塊和16塊,可用字節(jié)為48字節(jié)和240字節(jié)
故blockdata最終轉(zhuǎn)換的16進制不夠字節(jié)長度,后面將補0x00,如果超過字節(jié)長度,將去掉多余的字節(jié)。
FormatID,格式,0:16進制字符串返回,1:普通字符串返回
寫數(shù)據(jù)的結(jié)果也是通過回調(diào)函數(shù)返回.
以寫數(shù)據(jù)塊為例:
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)寫完成或者寫失敗后, 系統(tǒng)在回調(diào)函數(shù)中返回結(jié)果:
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;
}
}
);
