背景:最近项目是关于卡表bs系统,营业厅需要用读卡器读取卡信息,同事用c封装了dll文件。
一.首先想直接调用dll文件,用jna方式
public interface Dll extends StdCallLibrary {
Dll INSTANCE = (Dll) Native.loadLibrary("d:/123/SnICD", Dll.class);//加载动态库文件
//动态库中调用的方法,用数组格式接受读卡返回的数据
public int readCard(byte[] cardNo);
}再写一个类执行接口的方法,获取读卡后信息
byte[] cardNo = new byte[8]; int result = Dll .INSTANCE.readCard(cardNo);每个客户端电脑访问服务器都需要下载dll到本地,然后系统需要根据客户端电脑dll读卡写卡,这样根本不行啊。查询到用ActiveX插件。接下来是调用方式和注意事项。
二.在html页面上直接写
<OBJECT id="MWReaderCtl" codeBase=MwReader.cab#version=1,0,0,2(作用:说明版本号,可自动更新)
data=data:application/x-oleobject;base64,VPpLUhUXNkSyudxeJIvBwwADAADYEwAA2BMAAA==
classid=CLSID:8E06D862-4D98-11D7-A40B-5254AB51CC00></OBJECT>在本系统中放入cab包,打开ie浏览器(注意有32位和64位区别),进行配置
1)添加信任站点
2)高级中允许运行或安装,即使签名无效
3)Internet自定义级别,有关ActiveX的设置为启用
这个时候插件自动下载安装成功。
本文探讨了在卡表BS系统中实现读卡功能的两种方法:通过JNA调用本地DLL文件和使用ActiveX插件。前者适用于特定客户端环境,而后者则提供了更广泛的跨平台支持。

被折叠的 条评论
为什么被折叠?



