典型的ISO14443A卡有M1卡,包括其兼容的卡如国产的F08卡都属于此类.
读取这类卡使用的API接口如下:
RequestTypeACardNo(FormatID, OrderID)
参数:FormatID,返回的卡号格式,0:16进制(8HEX),1:10进制(10DEC).
OrderID, 卡号的现实顺序,0:正常顺序,1:倒序.
返回值在第二章中介绍的回调函数中.
我们给一个完整的调用方法:
调用api:
function ReadCardNo() { var FormatID; var OrderID; FormatID = 1; //10进制(10DEC). OrderID = 0; //0:正常顺序 rfidreader.Repeat=1; //repeat=1为重复执行, rfidreader.HaltAfterSuccess=1;//卡未离开至读取一次 rfidreader.RequestTypeACardNo(FormatID, OrderID); }
如果在repeat=1的情况下,一旦读到IC卡,则会触发回调函数:
rfidreader.onResult(function(resultdata) { switch(resultdata.FunctionID) { case 0: if(resultdata.Result>0) { CardNo=resultdata.strData; } break; } } );
在回调函数中resultdata.strData就是所读取的卡号(10DEC格式),
至此,一个简单的循环读卡号的web程序就可以运行了,如果只要刷卡,对应的卡号就会传给web页面供处理.
ISO14443B最为代表的就是身份证,我们此处以读取身份证卡号为例:
api接口如下:
RequestChinaIDCardNo()
结果还是会显示在回调函数中., 完整的代码如下:
function ReadIDCard() { rfidreader.Repeat=0; rfidreader.HaltAfterSuccess=0; rfidreader.RequestChinaIDCardNo(); }
回调函数代码:
rfidreader.onResult(function(resultdata) { switch(resultdata.FunctionID) { case 3: if(resultdata.Result>0) { CardNo= resultdata.strData; } break; } } );
ISO15693标签有Icode系列和Tagit等,所有的ISO15693协议的标签寻卡api如下
Request15693CardUID()
没有任何参数, 调用即可获取ISO15693的卡号.
完整的代码如下:
api调用:
function ReadCard() { rfidreader.Repeat=1; rfidreader.HaltAfterSuccess=1; rfidreader.Request15693CardUID(); }
回调函数处理:
rfidreader.onResult(function(resultdata) { switch(resultdata.FunctionID) { case 14: document.getElementById("CloudReaderVer").value = resultdata.strData; break; case 2: if(resultdata.Result>0) { CardNo =resultdata.strData; } break; } } );
至此可以看出,对于高频卡的3种卡类型,处理方式都是一样的,在web中调用起来也非常简单,下一章我们将介绍如下读写卡内的数据.
参考资料:IC卡读卡器web开发指南