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