实现使用扫码枪获取扫码内容,定时刷新获取

获取扫码枪扫码内容 页面代码

页面效果

在这里插入图片描述

页面代码

<!-- 扫描条码/二维码页面 -->
<template>
  <div id="KeepScan">
    <div class="prompt">
      <div>{{ title }}</div>
      <div>放置在条码扫描口进行扫描</div>
    </div>
    <div v-if="clientWidth > 1080" class="img-wrapper">
      <img src="@/assets/images/bar-code1.png" alt="">
      <img class="line" src="@/assets/images/bar-code-line1.png" alt="">
    </div>
    <div v-else class="img-wrapper">
      <img src="@/assets/images/bar-code2.png" alt="">
      <img class="line" src="@/assets/images/bar-code-line2.png" alt="">
    </div>
    <!-- 获取扫码焦点 -->
    <input
      id="scanQRcodeGetContent_input"
      v-model="scanContent"
      type="password"
      autocomplete="off"
    >
    <el-button type="primary" @click="handleCancel()">{{ type === '03' ? '放弃取件':'放弃存件' }}</el-button>
  </div>
</template>
<script>
import defaultImg from '../../../../assets/images/cancel-storage.png'
export default {
  name: 'KeepScan',
  data() {
    return {
      clientWidth: 0, // 客户端宽度
      type: '', // 操作类型 01行驶证 02驾驶证 03取件码
      title: '', // 页面title
      scanContent: '' // 扫码信息
    }
  },
  watch: {
    $route: {
      handler(val) {
        this.type = val.params?.type
        this.title = this.switchTitle(val.params?.type)
      },
      immediate: true,
      deep: true
    },
    scanContent: {
      handler(val) {
        clearTimeout(this.timer)
        this.timer = setTimeout(() => {
          if (val !== '') {
            document.getElementById('scanQRcodeGetContent_input').blur
            this.handleJump()
          } else {
            document.getElementById('scanQRcodeGetContent_input') &&
              document.getElementById('scanQRcodeGetContent_input').focus()
          }
          console.log('扫码内容:', val)
        }, 1000)
      }
    }
  },
  mounted() {
    window.addEventListener('resize', () => {
      this.clientWidth = document.documentElement.clientWidth
      console.log('resize', this.clientWidth)
    })
    this.inputFocusHandler()
    document.getElementById('scanQRcodeGetContent_input') &&
      document.getElementById('scanQRcodeGetContent_input').focus()
  },
  methods: {
    // 点击页面任意位置
    inputFocusHandler() {
      document
        .getElementById('app')
        .addEventListener('click', this.clickEventHandler)
    },
    // 点击页面任意位置的点击事件处理函数
    clickEventHandler() {
      // 当前页面无论点哪里,都让扫描二维码后获得的信息展示的 input 框获取焦点
      document.getElementById('scanQRcodeGetContent_input') &&
        document.getElementById('scanQRcodeGetContent_input').focus()
    },
    // 切换标题内容
    switchTitle(type) {
      switch (type) {
        case '03':
          return '请将取件二维码'
        default:
          return '请将证件条形码'
      }
    },
    // 放弃存件
    handleCancel() {
      this.$confirm(
        `<img src=${defaultImg} style="width: 300px;height: 300px;"/>`,
        '请确认是否放弃存件?',
        {
          confirmButtonText: '继续存件',
          cancelButtonText: '确定放弃',
          dangerouslyUseHTMLString: true,
          closeOnClickModal: false,
          showClose: false,
          center: true
        }
      )
        .then(() => {
          // ----- 测试操作 -----
          // this.handleJump()
        })
        .catch(() => {
          this.$router.push('/cabinet/keep')
        })
    },
    // 获取扫码信息下一步
    handleJump() {
      const params = {}
      if (this.type === '03') {
        params.qjm = this.scanContent
      } else {
        params.ywzl = this.type
        params.zxbh = this.scanContent
      }
      this.$router.push({
        name: 'KeepSearch',
        params
      })
    }
  }
}
</script>
<style lang="scss" scoped>
#KeepScan {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100%;

  .img-wrapper {
    width: 100%;
    height: 400px;

    img {
      position: absolute;
      width: 400px;
      margin-left: calc(50% - 200px);
    }

    .line {
      top: 58%;
    }
  }
  #scanQRcodeGetContent_input {
    position: absolute;
    z-index:-10;
  }
}
@media screen and (max-width: 1080px) {
  #KeepScan {
    .img-wrapper {
      height: 550px;
      margin: 110px 0 120px;
      img {
        width: 500px;
        margin-left: calc(50% - 250px);
      }
      .line {
        top: 65%;
      }
    }
  }
}
</style>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在C#中获取内容,你可以使用`System.Windows.Forms`命名空间中的`KeyEventArgs`来捕获键盘输入事件。以下是一个基本的示例代码: ```csharp using System; using System.Windows.Forms; public class BarcodeScannerDemo { static void Main(string[] args) { // 订阅键盘输入事件 Application.EnableVisualStyles(); Application.Run(new BarcodeScannerForm()); } } public class BarcodeScannerForm : Form { public BarcodeScannerForm() { KeyPreview = true; // 开启键盘事件预览 KeyDown += BarcodeScannerForm_KeyDown; // 订阅键盘按下事件 } private void BarcodeScannerForm_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) // 检查是否按下回车键 { string barcode = Clipboard.GetText(); // 获取剪贴板内容 Console.WriteLine("内容: " + barcode); // 清空剪贴板,以便下一次码 Clipboard.Clear(); } } } ``` 在上述示例中,我们创建了一个继承自`Form`的自定义窗体类`BarcodeScannerForm`。在构造函数中,我们开启了键盘事件预览,并订阅了窗体的`KeyDown`事件。当用户按下键盘上的任意键时,系统会触发该事件。 在事件处理方法`BarcodeScannerForm_KeyDown`中,我们检查是否按下了回车键(`Keys.Enter`)。如果是,则使用`Clipboard.GetText()`方法获取剪贴板中的文本内容,这里假设的输入是通过模拟键盘输入实现的,码结果会被自动复制到剪贴板中。然后,我们打印出内容,并使用`Clipboard.Clear()`方法清空剪贴板,以便下一次码。 你可以在`Main`方法中运行窗体应用程序,并尝试使用进行码。每次码后,内容将会被打印到控制台。 请注意,此示例假设通过模拟键盘输入将码结果发送给计算机。如果使用其他方式与计算机通信(如串口或USB接口),则需要使用相应的库或API来进行通信和数据解析。具体实现方式取决于你所使用的具体硬件设备和通信协议。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值