我寻寻觅觅,寻寻觅觅一个可以二次开发的扫码枪。然而,店小二总是告诉我:“这个……额……额……俺也不知道呢……”。本文将一步一步实现在网页项目中集成扫码枪设备。

目录

  • 1.项目背景
  • 2.扫码枪工作原理
  • 3.扫码枪接入项目
  • 4.可能遇到的问题

1.项目背景

我们的项目是一个B/S架构的仓储管理系统,物品入库时生成唯一二维码并粘贴,用户在系统内扫描二维进行物品识别并选择操作。
项目前期对于二维码的识别方法是调用本地摄像头,使用 QRCode.js 进行二维码识别,在扫码成功回调中进行业务操作。随着实际地实施和应用,这种方法的弊端渐渐显现:

  • 摄像头设备要求高:成本昂贵(差点换成高拍仪)
  • 摄像头焦点问题:识别过程需要移动物品适应摄像头焦点,过程繁琐,耗费体力
  • 安全问题:如果应用场景有安全规定,那么摄像头设备显然是不可以存在的

基于出现的种种情况,要求我们必须对扫码方式做出改变,扫码枪是最合适的选择。
某宝上只花了46元就买到了支持条码+二维码的扫码枪。

2.扫码枪工作原理

扫码枪在本质上可以理解为一种 特殊键盘 ,通过光学元器件获取条码或二维码进行识别,然后将识别结果(文本)逐字转化为键盘输入信号发送。

3.扫码枪接入项目

在js中接入扫码枪,其实还是挺简单的,处理的流程图如下:

代码如下

<script>var qrResult = "";$(document).keydown(function(event){if( event.key=="Enter" ){readResult = qrResult;qrResult = "";if(readResult!=undefined || readResult!=""){// 业务流程}}else {qrResult = qrResult + event.key;}});
</script>

4.可能遇到的问题

  1. 窗口焦点问题
    当在当前页面加载完成后,如果用户并未在此页面有任何操作,由于当前焦点并不在此窗口,所以此时扫码枪的输入信号并不会被监听,业务流程也无法被正常执行。解决办法为:增加必要的提示和页面交互操作,比如在本页面做出提示,要求用户在本页面至少进行一次点击或其他交互后方能使用扫码枪。
  2. 输入法中文模式问题
    本文实现的处理流程并不是直接录入型的,当用户在页面有一个文本输入控件(如:input、textaera等)时,如果当前输入法处于中文输入模式时,扫码枪的回传信息将等同于键盘逐字点击操作。
    举个例子:
    识别结果为:id=1,当输入法为中文时,最终通过扫码枪输入到输入控件的结果很可能是如 “i的” 的输入法软件处理后的结果。下图展示了我本地的模拟结果。解决办法为:根据实际情况在开发中指定输入控件的输入类型和输入范围。

在网页项目中集成扫码枪设备,实现二维码扫码识别实战相关推荐

  1. vue项目中,将信息生成二维码图片保存为png格式并下载

    生成二维码: https://blog.csdn.net/weixin_37861326/article/details/80362591 保存为png格式并下载: https://blog.csdn ...

  2. maven mybatis mysql_Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问...

    标签: 本篇内容还是建立在上一篇Java Web学习系列--Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Ja ...

  3. uniapp android原生,在uni-app项目中集成Android原生工程

    [TOC] # 在uni-app项目中集成Android原生工程 按照官方的方案,我们如果进行本地打包的话,需要重新创建一个Android原生工程,于是就会导致我们管理多个项目,切来切去的也麻烦. 经 ...

  4. rn项目 假如cocoapods_在项目中集成 RN

    在项目中集成 RN 19 Jan 2017 前言 使用 RN 难道要把整个项目都重构一遍么?教程那么多,但是很少能够有把怎么与当前项目结合起来的文章.自己摸索了一遍,记录下来.之后的 RN 之路就由此 ...

  5. spring 项目中集成 Protocol Buffers 示例

    http://blog.csdn.net/fangzhangsc2006/article/details/8687388 本文适用于了解spring框架,同时想在spring项目中使用Protocol ...

  6. 如何在你的项目中集成 CAP【手把手视频教程】

    前言 之前录制过一期关于CAP的视频,但是由于当时是直播时录制的视频,背景音比较杂所以质量有点差.这次的视频没有直播,直接录制的,视频质量会好很多,第一遍录制完成之后发现播放到一半没有声音,所以又重新 ...

  7. 在Spring项目中集成使用MongoDB

    在Spring项目中集成使用MongoDB 这里使用的是maven工程,所以依赖jar包都是pom.xml配置型式. pom.xml引入依赖 <properties><spring. ...

  8. kind富文本编辑器_在项目中集成富文本编辑器

    前   言 现在学程序的都离不开 Markdown 语法了吧,Markdown 已经成为典型的转换为HTML的非正式规范和参考实现,现在市场上也出现了许多Markdown实现,在基本语法之上额外增加了 ...

  9. lerna 项目中集成 babel lint-staged husky eslint

    lerna 项目中集成 babel lint-staged husky eslint Monorepo 是针对单仓库.多 package 的流行解决方案, lerna 是它的一种实现. 说明 重要 p ...

最新文章

  1. 近世代数--群--怎么判断是不是群?
  2. python 字符串前加r和f
  3. currenthashmap扩容原理_ConcurrentHashMap实现原理和源码解读
  4. SQLite shell操作
  5. Javascript 链式运动框架——逐行分析代码,让你轻松了解运动的原理
  6. turtlebot rviz错误rviz error no transporm from base to map
  7. 矩池云安装gcc4.9和g++4.9简单教程
  8. HDU 2017 一系列统计数据
  9. GlobalMapper20提取点云LAS文件当中的投影信息
  10. 平行四边形的定义以及判定和性质
  11. SHELL脚本获取某天的上一周日期(星期一为第一天)
  12. python真的好学吗?
  13. 【雕爷学编程】Arduino动手做(57)---四档矩形波模块
  14. 橘子学java之java中的协程
  15. C++ std::string::find()函数(在字符串中查找内容)
  16. Inserting Videos into Videos_论文阅读
  17. aiwi体感游戏--尘埃
  18. “英语”与“牛排”?新东方开创先河,玉辉教你英语卖牛排
  19. 【图像格式】 TGA格式编码详解
  20. Form derives from Form

热门文章

  1. project2016专业版最新密钥和下载
  2. 重磅!我组问卷调查结果公布
  3. java web ip_详解Java Web如何限制访问的IP的两种方法
  4. 力扣LeetCode-哈希表
  5. 时间服务器端口协议,时间服务器端口
  6. EasyExcel 单元格合并
  7. 为什么要有uboot?
  8. mmdection的安装、测试,心酸历程
  9. 点到点轨迹规划——三次曲线,五次曲线,梯形曲线,S曲线
  10. 《春·蜂》processing下的动画技术交互应用