web调用IC卡读卡器开发第四章--读写IC卡数据
(IC卡读卡器WEB读写IC卡数据)
采用友我科技IC卡读卡器web插件可以对普通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进制字符串返回,1:普通字符串返回。
读块API和读扇区API都可以读出卡内数据, 对于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);
//formatid=0为16进制返回数据
}
读卡器在回调中返回数据:
//友我科技读卡器web插件回调函数
rfidreader.onResult(function(resultdata)
{
switch(resultdata.FunctionID)
{
case 5:if(resultdata.Result>0)
{
CarNo = resultdata.CardNo;
//卡号
BlockData = https://www.it610.com/article/resultdata.strData;
//块数据
}
else
{
Alert("读失败");
}
break;
}
}
);
读一次数据就结束了,其实是很简单的.
IC卡网页自动读数据 对于自动读数据,与单词读数据的API接口是一样的, 不同的是我们通过友我科技IC卡读卡器web插件的属性repeat来控制, 当repeat=0表明单次读取, 当repeat=1表明是自动连续读取, 当读取到接过了,通过回调函数返回数据, 如果没有读到数据或者错误,则不返回任何数据.
function ReadBlock()
{
var BlockID;
var Key;
BlockID = 4;
//块号
Key ="FFFFFFFFFFFF";
//卡的密钥,此处可以使用明文密钥,也可以使用下载的密钥
rfidreader.KeyMode=0;
rfidreader.KeyStringMode=0;
rfidreader.KeyString=Key;
rfidreader.Repeat=1;
//此处修改成1,则表明自动连续读取
rfidreader.M1ReadBlock(BlockID, 0);
//formatid=0为16进制返回数据
}
IC卡网页写数据 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:要写入的字符串,由于M1卡的每块为16字节,故blockdata最终转换的16进制不够16字节长度,后面将补0x00,如果超过16字节,将去掉多余的字节。
FormatID,格式,0:16进制字符串返回,1:普通字符串返回。
2.M1卡写扇区,支持DES或者3DES加密后写扇区
M1WriteSector(blockindex,blockdata,FormatID)
如果DesDir=0则直接将数据写扇区,如果DesDir=1(YW-607)或者DesDir=2(YW-607),同时指定DES的密钥,则将数据加解密后写扇区
参数:blockIndex,块号,绝对地址,从0开始
blockdata:要写入的字符串,由于M1卡的扇区有4块和16块,可用字节为48字节和240字节
故blockdata最终转换的16进制不够字节长度,后面将补0x00,如果超过字节长度,将去掉多余的字节。
FormatID,格式,0:16进制字符串返回,1:普通字符串返回
写数据的结果也是通过回调函数返回.
以写数据块为例:
function WriteBlock()
{
var BlockID;
var Key;
var Data;
BlockID = 4;
//块号
Key ="FFFFFFFFFFFF";
//密钥
Data ="https://www.it610.com/article/11223344556677889900AABBCCDDEEFF";
//数据,16字节16进制数字
rfidreader.KeyMode=0;
rfidreader.KeyStringMode=0;
rfidreader.KeyString=Key;
rfidreader.Repeat=0;
rfidreader.M1WriteBlock(BlockID, Data,0);
}
当写完成或者写失败后, 系统在回调函数中返回结果:
rfidreader.onResult(function(resultdata)
{
switch(resultdata.FunctionID)
{case 5:
document.getElementById("CardNo").value = https://www.it610.com/article/resultdata.CardNo;
if(resultdata.Result>0)
{case 6:
if(resultdata.Result>0)
{
CardNo=resultdata.CardNo;
//成功写入卡的卡号
alert("写入成功");
}
else
{
alert("写入失败,错误:")
}
break;
}
}
);
【web调用IC卡读卡器开发第四章--读写IC卡数据】链接: IC卡读卡器web开发指南.
推荐阅读
- Ⅴ爱阅读,亲子互动——打卡第178天
- 2018-3-24
- 日志打卡
- 以读攻“毒”唤新活动曹彦斌打卡第二天
- SpringBoot调用公共模块的自定义注解失效的解决
- thinkphp|thinkphp 3.2 如何调用第三方类库
- 从我的第一张健身卡谈传统健身房
- 游乐园系统,助力游乐园管理
- 私有化轻量级持续集成部署方案--03-部署web服务(下)
- 阅读《维罗妮卡决定去死》之前的设想