随着H5技术的不断发展与推广,H5技术被广泛用于移动设备,PC终端等众多领域。同时,越来越多的应用都基于B/S(浏览器/服务器)模式,降低开发难度的同时还能更好的普及和应用,突破了硬件设备的兼容性问题。然而,嵌入式开发的设备并没有跟上H5技术的脚步,现在很多嵌入式设备并不支持或者不能友好的支持浏览器应用。举个例子,如何在web浏览器页面使用IC卡读卡器并且兼容所有浏览器?针对这个问题,有人肯定会说利用active X控件就可以了啊!确实如果是基于IE或者IE内核的浏览器使用active X是没有任何问题,但是现在除了使用IE浏览器还有大部分使用Chrome和Firefox等多种内核和版本的浏览器,为了让嵌入式设备更好的兼容所有浏览器,我们提供了一套基于在嵌入式设备中内置WebSocket组件的方案,希望能帮助大家在解决使用浏览器集成嵌入式设备中遇到的难题,一下仅以我司智能卡读写器做详细介绍。

传统的ActiveX组件,通过javascript页面与设备进行信息交互。

function getNowFormatDate() {

var date = new Date();

var seperator1 = "-";

var seperator2 = ":";

var month = date.getMonth() + 1;

var strDate = date.getDate();

var socket = null;

var nCommandIndex = 0;

var strIp = "";

var strPort = "";

var wsUrl = "";

if (month >= 1 && month <= 9) {

month = "0" + month;

}

if (strDate >= 0 && strDate <= 9) {

strDate = "0" + strDate;

}

var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate

+ " " + date.getHours() + seperator2 + date.getMinutes()

+ seperator2 + date.getSeconds()

+ seperator2 + date.getMilliseconds();

return currentdate;

}

function ConnectServer(){

try {

nCommandIndex = 0;

strIp = document.getElementById('strLotusCardDeviceIp').value;

strPort = document.getElementById('strLotusCardDevicePort').value;

wsUrl = 'ws://'+ strIp +':'+  strPort;

socket = new WebSocket(wsUrl);

} catch (evt) {

document.getElementById('log').innerHTML = '

'+getNowFormatDate()+'#new WebSocket error:'+ evt.data+'<>' + document.getElementById('log').innerHTML;

socket = null;

if (typeof(connCb) != "undefined" && connCb != null)

connCb("-1", "connect error!");

return;

}

socket.onopen = function ()

{

document.getElementById('log').innerHTML = '

'+getNowFormatDate()+'#连接服务器成功<>' + document.getElementById('log').innerHTML;

document.getElementById('status').innerHTML = 'Socket Open';

document.getElementById('status').className = 'online';

};

socket.onclose =  function(event)

{

document.getElementById('log').innerHTML = '

'+getNowFormatDate()+'#断开连接:' + event.wasClean + '<>' + document.getElementById('log').innerHTML;

document.getElementById('status').innerHTML = 'Socket Closed';

document.getElementById('status').className = 'offline';

};

socket.onmessage = function(event)

{

var arrString;

strLastResult = event.data;

document.getElementById('log').innerHTML = '

'+getNowFormatDate()+'#收到数据:' + event.data + '<>' + document.getElementById('log').innerHTML;

//    arrString = strLastResult.split(',');

//    if(COMMAND_OPEN_DEVICE == arrString[0])

//    {

//      if(arrString.length>2) m_nHandle = arrString[2];

//      document.getElementById('log').innerHTML = '

#获取设备句柄:' + m_nHandle + '<>' + document.getElementById('log').innerHTML;

//    }

//document.getElementById('log').innerHTML = '

#received:' + arrString[0] + '<>' + document.getElementById('log').innerHTML;

//document.getElementById('log').innerHTML = '

#received:' + arrString.length + '<>' + document.getElementById('log').innerHTML;

};

socket.onerror = function(event)

{

document.getElementById('log').innerHTML = '

#disconnected:' + event.message + '<>' + document.getElementById('log').innerHTML;

document.getElementById('status').innerHTML = 'Socket Error';

document.getElementById('status').className = 'error';

};

}

function ExecStringCommand(strCommand) {

strLastResult = '';

nCommandIndex++;

if (socket.readyState == WebSocket.OPEN) {

socket.send(strCommand+','+nCommandIndex);

} else {

document.getElementById('log').innerHTML = '

#send failed. websocket not open. please check.<>' + document.getElementById('log').innerHTML;

}

}

function  GetSocketStatus() {

if(null == socket) return "socket is null";

switch (socket.readyState) {

case socket.CONNECTING:

return "connecting";

break;

case socket.OPEN:

return "open";

break;

case socket.CLOSING:

return "closing";

break;

case socket.CLOSED:

return "closed";

break;

default:

return "undefined";

break

}

};

LotusCard WEB Socket 演示页面读卡器IP:

读卡器PORT:

状态

通信函数:1、连接服务器 2、执行字符串函数并解析结果 3、断开连接

连接服务器:

关闭连接:

获取连接状态:

获取MCU序列号:

蜂鸣:

获取M1卡号:

装载密码:

验证密码:

读数据扇区0块1:

写数据扇区0块1:

中止M1卡片:

清除日志:

日志

html实现读取读卡器,如何在web浏览器页面使用IC卡读卡器并且兼容所有浏览器相关推荐

  1. web端 刷卡器_新品推荐:WEB端免开发IC卡读卡器

    新品推荐:WEB端免开发IC卡读卡器 为了解决IC卡读写器做WEB集成开发过程中的麻烦,建和诚达推出了一款网页版专业IC卡读卡器-WEB读卡器,可免除WEB开发使用IC卡读写器的麻烦,实现免驱动.免开 ...

  2. web端 刷卡器_在WEB浏览器使用IC卡读卡器的几种方案的对比

    随着现在BS结构的程序越来越多,在BS结构的web浏览器中使用IC卡读卡器也就变得更常见了.在web浏览器中集成IC卡读卡器目前有以下几种方案: 1.使用只读读卡器将IC卡的卡号输入到焦点处. 2.使 ...

  3. PLC与IC卡读卡器

    由于IC卡的便利性,IC卡的应用越来越广泛,在PLC上嵌入IC卡读卡器的案例越来越多.为了将PLC与IC卡读卡器 连接变得简单和稳定,友我科技推出了两款专门针对PLC的IC卡读卡器,使用Modbus- ...

  4. 跨web浏览器的IC卡读卡器解决方案

    BS结构的程序,如果要与IC卡读卡器通信本身就是件不容易解决的事情.微软的activex ocx技术将这种应用限制在IE浏览器上了,不兼容其它的浏览器.而Chrome使用插件也不兼容IE和其他的浏览器 ...

  5. 记录一下web端调用IC卡读卡器的大致流程

    总结一下web端IC卡读卡器的调用方法 公司项目中用到了IC卡,需要实现读写IC卡,并且与服务端交互.IC卡读卡器用的是德卡的D8型号,SDK可以在德卡官网找到,下载链接:德卡SDK下载. 官方提供了 ...

  6. IC卡读卡器web开发,支持IE,Chrome,Firefox,Safari,Opera等主流浏览 器

    IC卡读卡器在web端的应用越来越多,但是早期发布的ocx技术只支持IE浏览器,使用受到了很多的限制.IC卡读卡器云服务的推 出,彻底解决了以上的局限,使得IC卡读卡器不仅可以应用在IE浏览器上,还可 ...

  7. web端 刷卡器_web开发与IC卡读卡器

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

  8. web调用IC卡读卡器开发第四章--读写IC卡数据

    IC卡读卡器WEB读写IC卡数据 IC卡WEB读数据 IC卡网页自动读数据 IC卡网页写数据 采用友我科技IC卡读卡器web插件可以对普通IC卡进行读和写操作,根据实际业务需求,可以手动点击读写和在w ...

  9. web调用IC卡读卡器开发第三章--高频卡读卡号

    高频卡介绍 读取ISO14443A卡号 读取ISO14443B卡号 ISO15693标签的寻卡操作 目前的高频智能卡分为3种,分别为ISO14443A, ISO14443B和ISO15693协议的,这 ...

最新文章

  1. 京东首页302 Found报错 监控宝教你如何第一时间发现
  2. 深入理解WMS(一):Window的创建过程
  3. 内存对齐与sizeof
  4. 【C 语言】文件操作 ( 文件加密解密 | 加密文件 )
  5. UE if缩进问题(转)
  6. Java获取近七天的数据条数,及页面实现折线图(附前后端代码)
  7. 《构建之法》阅读第四章、第十七章收获
  8. prettier 配置参数说明
  9. 最会数据分析的护士!全世界最有名的白衣天使是如何走上可视化之路的?
  10. 编程算法 - 篱笆修理(Fence Repair) 代码(C)
  11. 计算机系统-电路设计11-内存的内部电路实现(输入与输出同线)
  12. SlickEdit完美解析Qt4
  13. unity可以直接转h5吗_瞎折腾:用Unity撸纯HTML5移动游戏/应用
  14. 文本分类——NaiveBayes
  15. 奇奇怪怪的three.js特效(一)
  16. PS CS6中文如何切换成英文版界面?
  17. CSS/HTML制作电影网站中的电影卡片
  18. TPLINK AC650双频高增益无线USB网卡 TL-WDN5200H免驱版 Ubuntu16.04 安装
  19. 长时间看电脑的朋友,怎么保护您的眼睛
  20. MySQL8.0 通过data文件和SQL语句恢复数据库

热门文章

  1. 云计算基础课堂001 Linux系统与CentOS7的安装部署(小白向—怎么在VMware虚拟机安装基于Linux操作系统的CentOS7)
  2. 云-阿里云-百科:阿里云
  3. 方便快捷,浏览器利器——Vimium(详解)
  4. 求助FC上的一个c++代码实现丧心病狂的走迷宫小游戏!
  5. 麒麟子Cocos Creator 3D研究笔记十:【qfw】开源的Extension Pack for Cocos Creator 3D
  6. 干货满满的 GopherChina2021 北京大会 PPT is coming
  7. 【速记】Android让View的显示超出父容器
  8. linux 16.04 安装与使用vscode试水
  9. 以太网网络变压器的作用
  10. 咸鱼Micropython—SPI