前言
本博客介绍二维码扫描枪对接,本博客仅仅写写实现过程,仅仅是给学习者作为一个了解,二维码扫描枪需要相关硬件厂家做好一些dll动态链接库,当然也有一些不需要dll动态链接库,动态链接库的需要厂家提供,各有不同,所以本博客仅仅是作为学习参考。

DLL动态链接库和ActiveX的相关概念

DLL是Dynamic Link Library的缩写,意为动态链接库。DLL是一个包含可由多个程序同时使用的代码和数据的库。

ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。

二维码生成
现在要实现的功能是这样的,网站打开按钮,就启动扫描枪,扫描二维码之后,网站自动跳转一个页面
页面上,我们可以用jquery一些插件生成一个二维码,二维码里可以放一个查询的id就好。

定义一个div,来放二维码

<div name="tQrcode" id="tQrcode" style="margin-left: 100px;"></div>

引入jquery生成二维码的插件jquery.qrcode.js,脚本实现

<script language="javascript">$(function(){$("div[name='tQrcode']").each(function(index,element){createtQrcode(element);})});//生成办件二维码function createtQrcode(obj){var qrcode = $(obj).qrcode({text: '${t.seq}',//加上统一查询码width: 100,height: 100,colorDark : '#000000',colorLight : '#ffffff',correctLevel:3});var canvas = $(obj).children("canvas");var img = canvas[0].toDataURL("image/png")$(obj).html("<img src='" + img + "'>")}
</script>

驱动安装和dll注册
1.先确认电脑是否有安装过VC库
若没有,需安装

2、安装udp_and_vcom_drv_x86x64V2.0.1.msi

3、注册COM组件
根据电脑多少位将【扫描枪Dll注册.zip】的所有dll复制到
32位:C:\WINDOWS\system32或者64位:C:\ WINDOWS\SysWOW64
在CMD下运行下面命令注册COM组件 regsvr32 NLcpfw_Com.dll

regsvr32 NLcpfw_Com.dll或者regsvr32 C:\Windows\SysWOW64\NLcpfw_Com.dll

4、安装驱动【USB-COM-Driver-x32.msi 适用于32位操作系统】/【USB-COM-x64.msi 适用于64位操作系统】

5、把【approveUnit.txt】放C盘根目录下,然后修改如下图的三个位置的数字,改为设备管理器里的端口号。端口号在设备管理器里能看到,右键“我的电脑”–管理–设备管理器,

6、测试
若发现串口号是com4的话,则需继续修改C盘目录下的approveUnit文件
最后测试是否可以正确读取二维码信息,若可以正确读取,则在下面空白框中自动显示所读取数据

注意问题:
硬件对接的必须用ie浏览器,先设为受信任站点,在进去自定义级别设置支持ActiveX控件

扫描枪对接
页面加上这些代码

<div style="display:none"><!-- 扫描抢 --><object id="idtPort" classid="CLSID:xxx" codebase="com.cab#version=1,0,0,1"></object></div>

触发函数,扫描枪扫二维码后,获取的数据dataStr

<script language="javascript" event="ReadDataEvent(lParam)" for="idtPort"> var len = idtPort.get_data_len();var arr = idtPort.get_data(len);    var vbarray = new VBArray(arr);var jsarray = vbarray.toArray();for(var i=0;i<jsarray.length;i++){jsarray[i]=String.fromCharCode(jsarray[i]);}var dataStr = jsarray.join("");//扫描二维码后直接跳到相应的办件页面toApprovePageHZ(dataStr);</script>

扫描枪的一些脚本


//关闭扫描枪端口
function ClosePort()
{
var ret = idtPort.close();
if(ret == 0){                 //alert("关闭扫描枪成功");}else {//alert("关闭扫描枪失败");}
}
//打开扫描枪端口
function OpenPort()
{var PorNum = initByFile();var PortType = "com";if(PorNum==null || PorNum==""){PorNum = "1";}//var newfilepath = PorNum+";baud=115200";var newfilepath = "com="+PorNum+";baud=000";var ret = idtPort.open(PortType,newfilepath);if(ret == 0){                         alert("打开扫描枪成功");}else{alert("二维码扫描枪接口打开失败,错误码"+ret);}
}
//把十进制数换成相应的16进制
function d2x(x)
{
var temp = 0;
var ftable = new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
x = x.split(",");
for (var i = 0; i < x.length; i++)
{temp = parseInt(x[i]);x[i] = ftable[Math.floor(temp / 16)] + ftable[temp % 16];
}
return x.join("");
}
//读C盘下的COM口配置文件
function initByFile(){
var filePath = "c:\\approveUnit.txt";
var sRet = "3";
try { var fso=new ActiveXObject("Scripting.FileSystemObject"); var reading=1; var f=fso.OpenTextFile(filePath,reading); f.ReadLine();f.ReadLine();f.ReadLine();sRet = f.ReadLine();f.close();
} catch(err) {sRet = "3";//alert("文件:"+filePath+"(第4行二维描描枪号)不存在或读取出错了!"+err);
}
return sRet;
}

二维码扫描枪对接手册相关推荐

  1. 二维码扫描自定义规则思路

    二维码扫描自定义规则思路 二维码内容 二维码内容是一串字符串,主要凭借拆分字符串实现宿主属性的读取.可用于商品产品原材料入库.出库等操作. 使用在线的二维码生成之后,就是这样,其中可以使用特殊符号进行 ...

  2. js 二维码扫描盒/枪对接

    二维码扫描盒/枪对接 前言 二维码应用非常广泛,使用场景有:手机上网.个人名片.凭证类.溯源类.数据防伪等等,如下图: 使用也非常简单,外接USB接口, 如下图,以下就是我对接的盒子 原理 ​ 拿到二 ...

  3. GM65条形码二维码扫描识别模块与STM32学习

    目录 模块介绍: 简介: 原理介绍: 工作流程: 技术参数: 修改配置: 代码介绍: 串口函数: 主函数: 模块介绍: 简介: GM65 条形码二维码扫描识别模块是一种基于激光扫描头的识别设备 原理介 ...

  4. 如何使用二维码扫描模组改造通道闸机,实现手机开闸

    随着物联网的发展,自动识别技术的应用使得很多产品适应于移动互联网时代,其中二维码扫描模组在通道检票闸机中的发展尤为迅速,在通过检票闸机口时,使用手机生成的二维码即可验证开闸,因此二维码扫描模组也逐渐被 ...

  5. 短短60行代码搞定鸿蒙“二维码扫描”功能!

    开发者(KaiFaX) 面向全栈工程师的开发者专注于前端.Java/Python/Go/PHP的技术社区 可以实现的效果就是打开摄像头扫描一张二维码图片然后显示二维码里面的内容,看个视频一睹为快吧(界 ...

  6. 基于SpringBoot+Gradle+Zxing+JQuery(原生JS)开发条形码/二维码扫描工具,且采用原生JS调用浏览器摄像头

    零. 近日在做课设的时候,碰到一个比较有趣的玩意.就是在应用上添加扫描二维码/条形码的技术. 下面,介绍一下本文采用的一些框架: SpringBoot+Gradle+JPA为框架的后端系统 JavaS ...

  7. 一维条码和二维码扫描有什么区别?

    条形码有两大类:一维条码(1D 或线性)和二维条码(2D).它们用于不同类型的应用程序,并且在某些情况下使用不同类型的技术进行扫描.一维条码和二维码扫描之间的区别取决于可以存储在其中的数据的布局和数量 ...

  8. 如何给iOS应用添加原生的二维码扫描功能

    之前总觉得二维码扫描很高大上,其实apple工程师早就为我们提供了便捷的方法.二维码扫描第三方的库也挺多的,不过效率高的当属系统提供的扫描方法. 二维码扫描主要用到了以下几个类: AVCaptureD ...

  9. 如何用MediaCapture解决二维码扫描问题

    二维码扫描的实现,简单的来说可以分三步走:"成像"."截图"与"识别". UWP开发中,最常用的媒体工具非MediaCapture莫属了,下 ...

  10. 聊一聊二维码扫描登录原理

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:2 个月的面试亲身经历告诉大家,如何进入大厂? 扫二维码登录现在比较常见,比如微信.支付宝等 PC 端登录,并且 ...

最新文章

  1. NAR:UNITE真菌鉴定ITS数据库——处理未分类和并行分类(数据库文章阅读模板)
  2. docker学习实践之路[第一站]环境安装
  3. 虚拟机生命周期八招巧管理
  4. 植入“电商基因” 传统产业搭上网络快车[图]
  5. sql server高级查询,看这篇文章就够了
  6. 学习C ,常见的误解
  7. 加油站都需要什么手续_农村买房过户都需要什么手续?
  8. 远程服务器返回错误: (405) 不允许的方法_四指炸鸡总部远程协助选址,5大加盟优势,0基础即可开店...
  9. php使用redis存储
  10. 你是否已经忘了Serlvet是什么?
  11. c语言程序设计 实验十一,C语言实验十一 结构体程序设计(二)
  12. jQuery - Ajax解决跨域问题
  13. 556. 下一个更大元素 III
  14. yansongda/pay 支付遇到的坑
  15. 服务器硬件维护指南和解决方案
  16. 编程日记——第一次写博客
  17. (Modern Family S01E03) Part 1  PhilClaire  Phil看球赛 Dylan等Haley Clarie说Phil现在依然和Jay呆在一起很不自在
  18. android studio 图表,[期末系列]手把手教你在Android Studio中实现图表-Go语言中文社区...
  19. R for LC+cohort
  20. Halide学习笔记----Halide tutorial源码阅读5

热门文章

  1. mysql right函数
  2. python语言实现读取菜谱_通过Python语言实现美团美食商家数据抓取
  3. 安卓实现仿系统设置界面
  4. phpunit问题与解决
  5. 微信 朋友圈 缩略图 php,Wordpress分享微信朋友圈缩略图设置 | 听可科技|TMC
  6. docker安装后,并没有ln到/etc/systemd/system/multi-user.target.wants
  7. 菜鸟的数学建模之路(三):线性与非线性拟合
  8. 【实践】人体红外传感器
  9. 时间刻度线css,纯CSS时间轴列表
  10. 架构师之殇:一个反对“平台团队”的案例