• web开发与IC卡读卡器


    前段时间有个项目在客户端web下使用IC卡读卡器,试了很多种方案都觉得麻烦,最后在网上找了个现成的方案,采用了YW-605HA读卡器,厂家就不说了,免得说做广告。开发起来也挺简单。

     他们将IC卡读卡器接口封装成ocx文件,分为32位版本和64位版本,自动安装时自动判断32位还是64位,这个比较方便,要不然按照版本部署客户端,那可得累死了。他们的说明如下:

    控件文件名称:yw60x.ocx

    32位控件:x86yw60x.ocx

    64位控件:x64yw60x.ocx

    用户可以根据B/S客户端的环境配置相应的ocx文件,也可以采用安装包yw60xocxSetup.exe自动判断客户端的环境并且自动选择适合的ocx进行安装并注册

    web读卡器ocx有静态调用和动态调用两种方法,这个做web开发的估计都熟悉,直接copy代码就行了,说明如下:

    读写器控件yw60x.ocx类名:YW60X.yw60xCtrl.1

    读写器控件yw60x.ocx的classid:167E1838-7388-4A24-86DE-985B91F0FFBF

    在web中可以采用静态调用和动态调用的方法来初始化控件

    动态调用方法:

    var obj = new ActiveXObject("YW60X.yw60xCtrl.1");

    静态调用方法:

    <object id="yoworfidreader"

    classid="clsid:167E1838-7388-4A24-86DE-985B91F0FFBF">

    </object>

    下面说说在web下我们如何与web读卡器进行交互,为了输出相应的参数,他们设计了几个输出性质的属性,如下:

    属性名称

    类型

    含义

    备注

    LastResult

    Long

    最后一个函数执行后的返回值,与函数本身的返回值相同

    判断函数的返回值与判断LastResult值是一样的

    OutData1

    Variant

    一个Byte数组,函数执行要输出的首要内容

    Byte数组可以在js和vbs里面自由转换成数组使用,或者使用控件自带的转换函数进行转换

    OutData1Size

    Long

    OutData1数组的长度,字节数

     

    OutData2

    Variant

    一个Byte数组,函数执行要输出的首要内容

     

    OutData2Size

    Long

    OutData2数组的长度,字节数

     

    OutData3

    Variant

    一个Byte数组,函数执行要输出的首要内容

     

    OutData3Size

    Long

    OutData3数组的长度,字节数

    所有的数据类型都是varaint类型的,与javascript非常兼容,但是在web中处理16进制数组是个麻烦的事,为此他们还设计了很多的类型转换函数,如下:

      从数组获取所需格式的卡号字符串


    函数原形:BSTR ConvertCardNo(VARIANT vCardNo, LONG ConvertIndex)


      将数组转换成16进制的字符串


    函数原形:BSTR GetHexStr(VARIANT vData);


      将数组转换成ascii可见字符的字符串


    函数原形:BSTR GetAlphaStr(VARIANT vData);


       将16进制字符串转换成VARIANT类的数组


    函数原形:VARIANT GetVariantFromHexStr(BSTR sHexStr);
      将普通符串转换成VARIANT类的数组


    函数原形:VARIANT GetVariantFromAlphaStr(BSTR sAlphaStr);

    看到这了,大家应该知道了。各种数据转换都是很方便的,下面看看怎么读卡,直接给一段代码吧,也是很简单的

    function ReadCard()
      {
      var BlockID;
      var Key;
      RequestCard();
      BlockID = document.getElementById("BlockIDRead").value;
       
      Key =document.ReaderTest.GetVariantFromHexStr(document.getElementById("KeyRead").value);
      i = document.ReaderTest.YW_KeyAuthorization(1,96,BlockID,Key);
      if(i<0)
      {
      document.getElementById("DataRead").value ="密钥认证错误";
      return;
      }
       
      i = document.ReaderTest.YW_ReadaBlock(1,BlockID,16);
      if(i<0)
      {
      document.getElementById("DataRead").value ="读块错误";
      return;
      }
      document.getElementById("DataRead").value = document.ReaderTest.GetHexStr(document.ReaderTest.OutData1);
      document.ReaderTest.YW_Buzzer(1,5,5,1);
      CloseReader();
      }
       

    很简单的吧

      IC卡读卡器的web开发也可以采用友我科技RFID读写器云服务技术,将适应更多的web浏览器,如IE,Chrome,Firefox,safari,Opera等等

  • 相关阅读:
    设计模式_抽象工厂模式
    KMeans聚类算法Hadoop实现
    JDK核心JAVA源代码解析(1)
    pushlet单播与多播
    SQL 2008 R2数据库变为REPLICATION,日志不断增长并且不能截断和收缩的解决方式
    chrome插件的popup与跨域请求
    Ubuntu vim+ ctags(包括系统函数) + taglist 配置
    spring Valid @Pattern 常见的验证表达式
    spring boot 全局异常处理
    spring 事件使用
  • 原文地址:https://www.cnblogs.com/Oneofcoder/p/5283423.html
Copyright © 2020-2023  润新知