web开发与IC卡读卡器
前段时间有个项目在客户端web下使用IC卡读卡器,试了很多种方案都觉得麻烦,最后在网上找了个现成的方案,采用了YW-605HA读卡器,厂家就不说了,免得说做广告。开发起来也挺简单。
他们将IC卡读卡器接口封装成ocx文件,分为32位版本和64位版本,自动安装时自动判断32位还是64位,这个比较方便,要不然按照版本部署客户端,那可得累死了。他们的说明如下:
控件文件名称:yw60x.ocx
32位控件:x86\yw60x.ocx
64位控件:x64\yw60x.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等等
web开发与IC卡读卡器的更多相关文章
- 跨web浏览器的IC卡读卡器解决方案
BS结构的程序,如果要与IC卡读卡器通信本身就是件不容易解决的事情.微软的activex ocx技术将这种应用限制在IE浏览器上了,不兼容其它的浏览器.而Chrome使用插件也不兼容IE和其他的浏览器 ...
- IC卡读卡器web开发,支持IE,Chrome,Firefox,Safari,Opera等主流浏览 器
IC卡读卡器在web端的应用越来越多,但是早期发布的ocx技术只支持IE浏览器,使用受到了很多的限制.IC卡读卡器云服务的推 出,彻底解决了以上的局限,使得IC卡读卡器不仅可以应用在IE浏览器上,还可 ...
- IC卡读卡器在安卓(android)下的开发
友我科技推出IC卡读卡器的Android开发包,软件工程师只需要导入jar类库文件,就可以在App中操作IC卡读卡器了. 目前IC卡读卡器的Android开发包开放操作的卡类型有:M1, S50, U ...
- 射频IC卡和IC卡读卡器的成本分析
当今射频IC卡和IC卡读卡器的种类繁多,很多人问IC卡读卡器多少钱,那么如何在满足我们需求的情况下最大的节省成本呢.下面就各种射频IC卡和IC卡读卡器来分析下各自的成本. ...
- BS结构中,web如何将数据进行DES加密并写道IC卡中
在IC卡应用系统中,一般都要对IC卡数据进行DES加密,以保证数据的安全.友我科技RFID读写器云服务2.0充分考虑了这个需求,只需要软件工程师简单的配置即可实现数据的加解密并且写到数据块中.如下图所 ...
- 智能IC卡与终端(读卡器)之间的传输协议
1.有两种协议 T=0,异步半双工字符传输协议 T=1,异步半双工块传输协议 终端一般都支持这两种协议,IC卡可以选择支持其中的一种.(因为终端可能需要面对各种类型的卡片,所以必须两种协议都支持,而卡 ...
- IC卡
本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . IC卡 (Integrated Circuit Card,集成电路卡),也称智能卡(Smart card).智慧卡(Intelligent ...
- Arduino + RFID 读取 IC 卡 Arduino uno中获得RFID的UID 并通过串口转发RFID卡号
RFID简介:射频识别即RFID(Radio Frequency IDentification)技术,又称无线射频识别,是一种通信技术,可通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定 ...
- 移动端 Web 开发前端知识整理
文章来源: http://www.restran.net/2015/05/14/mobile-web-front-end-collections/ 最近整理的移动端 Web 开发前端知识,不定期更新. ...
随机推荐
- MINA、Netty、Twisted一起学(十二):HTTPS
由于HTTPS协议是由HTTP协议加上SSL/TLS协议组合而成,在阅读本文前可以先阅读一下HTTP服务器和SSL/TLS两篇博文,本文中的代码也是由这两篇博文中的代码组合而成. HTTPS介绍 上一 ...
- 【转】Netty系列之Netty并发编程分析
http://www.infoq.com/cn/articles/netty-concurrent-programming-analysis
- abp zero sample
测试运行地址:http://ghy.demo.aspnetzero.com 账号:admin 密码:123456 需要源码,请加QQ:858-048-581 一.用户管理 二.日志记录 1.先编译成 ...
- WCF小试
1.创建WCF 右键解决方案-新建项目-WCF服务应用程序. 创建后会生成一些文件,其中IService.cs是服务的接口,只有在接口中定义的方法才能被外部调用,Service.svc是我们的服务名称 ...
- 10条建议让你创建更好的jQuery插件
在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就可以 copy & paste 大部分的代码结构,只要专注最主要的逻辑代码就行了.使 ...
- Maven与Eclipse使用中遇到的问题解决之道
在使用Maven以及Eclipse的Maven插件时,我和同事遇到了一下几个问题,本着知其然知其所以然的学习精神,总结如下: Unrecognised tag 问题 由于我使用本地代理仓库,所以set ...
- sonarqube代码检测
1.安装java环境 略 2.下载sonarqube包 sonarqube与sonar-runner的下载地址:http://www.sonarqube.org/downloads/ 将下载好的软件包 ...
- Vuex 模块化实现待办事项的状态管理
前言 在vue里,组件之间的作用域是独立的,父组件跟子组件之间的通讯可以通过prop属性来传参,但是在兄弟组件之间通讯就比较麻烦了.比如A组件要告诉一件事给B组件,那么A就要先告诉他们的爸组件,然后爸 ...
- Java数据类型及其转换&&经常用到的快捷键
数据类型 基本数据类型分类 (8种) byte .short. int. long. char. float. double .boolean 1个字节占8位 整数型byte 1字节 -128~1 ...
- 手动的写一个structs
为了更好的学习框架的运行机制,这里开始学习框架之前,介绍一个简单的自定义的框架. 需求: 登录:id:aaa,pwd:888登录成功之后,跳转到,index.jsp页面并显示,欢迎你,aaa 注册,页 ...