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 开发前端知识,不定期更新. ...
随机推荐
- samba服务搭建
文件传输 smb主配置文件 /etc/samba/smb.conf? yum install samba samba-client 要启动smb和nmb服务 修改安全级别 security = sha ...
- CSS下拉菜单
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- [hdu2156]分数矩阵
Problem Description 我们定义如下矩阵:1/1 1/2 1/31/2 1/1 1/21/3 1/2 1/1矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增.请求出这个矩阵 ...
- 模拟Struts2框架Action的实现
1.具体项目结构如下:
- UI 自定义视图 ,视图管理器
一>自定义label - textField 视图 自定义视图:系统标准UI之外,自己组合而出的新的视图 iOS 提供了很多UI组件 ,借助它们,我们可以做各种程序 尽管如此,实际开发中,我们还 ...
- .NET客户端实现Redis中的管道(PipeLine)与事物(Transactions)
序言 Redis中的管道(PipeLine)特性:简述一下就是,Redis如何从客户端一次发送多个命令,服务端到客户端如何一次性响应多个命令. Redis使用的是客户端-服务器模型和请求/响应协议的T ...
- 在 sublime text 上添加 Package Control
https://packagecontrol.io/installation 打开 View > Show Consolemenu 粘贴如下文本,回车 import urllib.request ...
- javascript 随机显示指定内容
今天碰到一个需求,一个页面显示赞助厂商的信息,但是厂商要求排序要随机排,因为是个静态页面不是读取数据库的,所以打算用js来控制 var arr = new Array('张三', '李四', '王五' ...
- 用javascript实现base64编码器
前面的话 base-64作为常见的编码函数,在基本认证.摘要认证以及一些HTTP扩展中得到了大量应用.在前端领域,也常常把图片转换为base-64编码在网络中传输.本文将详细介绍base64的原理及用 ...
- Android时光轴
时间轴,顾名思义就是将一些事件或者事物等按照时间顺序罗列起来,给用户带来一种更加直观的体验.京东和淘宝等的物流顺序就是一个时间轴 前言:Android中使用RecyclerView实现时光轴,代码简 ...