zoukankan      html  css  js  c++  java
  • BS结构RFID读写器web插件开发之四----读写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 = 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 ="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 = resultdata.CardNo;
    		if(resultdata.Result>0)
    		{
    
    		case 6:
    		if(resultdata.Result>0)
    		{
    			CardNo=resultdata.CardNo;//成功写入卡的卡号
    			alert("写入成功");
    		}
    		else
    		{
    			alert("写入失败,错误:")
    		}
    		break;
        }
    }
    );
    

    链接: IC卡读卡器web开发指南.

  • 相关阅读:
    Django MVC与MTV概念 Ajax、分页实现
    Django F查询Q查询Only与Defel
    Django ORM 操作
    已有数据的表添加自增主键
    java随机字符串+校验位
    mysql日志触发器
    dad
    jsp自定义标签
    php-pfm指定配置文件
    type
  • 原文地址:https://www.cnblogs.com/yoworfid/p/14780254.html
Copyright © 2011-2022 走看看