扫码枪的使用

VUE element ui 使用扫码枪

<el-input  v-model="sourceCode" @input="inputCode" :type="isScan?'password':'text'" placeholder="溯源码" />

 data() {
    return {
       isScan: false,//是否为扫码枪录入
      sourceCode: '' ,
	}
}

methods

openCodeListDialog(row) {
console.log(row)
     this.$refs.codeList.open(row)
 },
 /* 监听输入 判断通过isScan判断 */
 inputCode(v) {
   console.log(v)
     if (this.isScan) return;
     this.code = v
 },
 //处理扫码枪获取的数据
 dealScan(code) {
     this.isScan = false
     this.sourceCode = code.substring(code.length - 12);//取出后12位 
 },
 scanCode() {
   console.log(1)
     let lastTime = null;
     let nextTime = null;
     let code = '';
     let timer = ''
     //监听数据录入 通过判断输入数据的速度来判读是手动输入还是扫码枪录入,
     //这里有一个问题 当用户同时按下两个按键或者故意以高速录入数据时也会被判定为扫码枪输入
     document.onkeydown = e => {
       console.log(e)
         let keycode = e.keyCode || e.which || e.charCode;
         nextTime = new Date();
         if (keycode === 13) {
             if (lastTime && (nextTime - lastTime < 30)) {
                 // 扫码枪
                 this.dealScan(code)
             } else {
                 // 键盘
                 console.log('键盘输入')
             }
             code = '';
             lastTime = null;
             e.preventDefault();
         } else {
             if (!lastTime) {
                 code = String.fromCharCode(keycode);
             } else {
                 if (nextTime - lastTime < 30) {
                     code += String.fromCharCode(keycode);
                     item.isScan = true
                 } else {
                     code = '';
                     item.isScan = false
                 }
             }
             lastTime = nextTime;
         }
         //添加定时器 防止用户输入过快导致的误判 
         timer = setTimeout(_ => {
             clearTimeout(timer)
             this.isScan = false
         }, 100)
     };

 },

js jQ

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <!-- 可以进行隐藏 -->
  <!-- <input id="code" type="text" autofocus="autofocus" style="opacity: 0;"> -->
  <input id="code" type="text" autofocus="autofocus">

</body>

</html>
<script type="text/javascript" src="http://libs.baidu.com/jquery/2.0.0/jquery.js"></script>
<script type="text/javascript">
  // 判断页面可看状态  false 表示用户能看见 true 表示 用户看不见 
  // setInterval(()=>{console.log(document.hidden)},1000)

  //页面的激活状态  防止用户误操作 此事件监听状态 可明显的进行用户提示操作
  window.onfocus = function () {
    console.log('页面被激活')
  };

  window.onblur = function () {
    console.log('页面失去焦点')

  };
  // document.onmouseover = function () {
  //   console.log("鼠标回来了")

  // }

  // document.onmouseout  = function () {
  //   console.log("鼠标已经移出!")
  // }
  //input自动永久聚焦

  // jq 方式
  // $(document).ready(function () {
  //   $("input").focus();
  // })
  // $("input").blur(function () {
  //   $(this).focus();
  // });
  // 原生方式
  document.getElementById('code').focus()
  document.addEventListener("mousedown", function (e) {
    if (e.target.id !== "code") {
      e.preventDefault()
    }
  }, false);
  let code = ''
  let lastTime, nextTime
  let lastCode, nextCode
  let that = this

  $("input").keyup(function (e) {
    // console.log(e)
    if (window.event) { // IE
      nextCode = e.keyCode
    } else if (e.which) { // Netscape/Firefox/Opera
      nextCode = e.which
    }
    if (e.which === 13) {
      if (code.length < 3) return // 手动输入的时间不会让code的长度大于2,所以这里只会对扫码枪有
      console.log(code)
      console.log('扫码结束')

      var T = $(this).val();// 获取到扫码枪输入的内容,做别的操作

      // 此处可做后续操作

      console.log(T)
      code = ''
      lastCode = ''
      lastTime = ''
      $("input").val('')
      return
    }
    nextTime = new Date().getTime()
    if (!lastTime && !lastCode) {
      console.log('扫码开始。。。')
      code += e.key
    }

    if (lastCode && lastTime && nextTime - lastTime > 500) { // 当扫码前有keypress事件时,防止首字缺失
      console.log('防止首字缺失。。。')
      code = e.key
    } else if (lastCode && lastTime) {
      console.log('扫码中。。。')
      code += e.key
    }
    lastCode = nextCode
    lastTime = nextTime


  })
</script>
Cognex扫码是一种高性能、便携式的扫码设备,适用于各种行业的自动化生产线和仓储系统。以下是Cognex扫码使用说明: 1. 连接电源:将Cognex扫码连接到稳定的电源,可以使用USB接口或者其他适配器连接电源。 2. 扫码功能:Cognex扫码采用先进的图像识别技术,支持多种码制,包括一维码、二维码和OCR文字识别等。将扫码对准要扫描的条码或二维码,触发扫描按钮,扫描会自动读取码的信息。 3. 数据传输:通过USB接口,可以将扫描到的数据传输到计算机或其他设备上。也可以通过蓝牙或Wifi功能将数据无线传输。 4. 设置参数:Cognex扫码可以根据实际需求进行参数设置。例如,可以设置扫描的码制、扫描速度和扫描范围等。参数设置可通过Cognex提供的软件进行修改。 5. 灵活性和便捷性:Cognex扫码小巧轻便,便于携带和操作。它还具有高速扫描和自动对焦功能,能够在动态环境中快速而准确地扫描码的信息。 6. 维护保养:为了保持Cognex扫码的良好运行状态,定期清理扫描头和镜片,避免灰尘或污渍对扫描效果的影响。同时,及时更新软件固件,以获得更好的性能和功能。 总结起来,Cognex扫码是一款功能强大、易于操作的设备,适用于各种扫码应用场景。通过遵循上述使用说明,用户可以轻松完成扫码任务,并提高生产效率和准确度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扶摇的星河

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值