python监听扫码枪扫描数据

背景:当扫码枪扫描达到输入的数量N时,自动调用打印机打印N个数据的二维码。

实现:因为需要一直监听扫码枪扫描数据的状态,因此创建线程。但是在调试的时候发现,扫码枪扫描的数据并不是一次性出来的,而是一个字符一个字符出现的。因此加入延时,每隔0.5秒读取数据接收区的数据,但是存在当刚好是0.5秒时,只接收到部分扫描的数据(并没有权保护接收完成),导致接收数据异常。

在网上找其他的监听扫码枪数据的实现方式,Python 监控扫码枪输入_python扫码枪_阿伟-_-的博客-CSDN博客,找到一个可复现的demo。

from pynput import mouse,keyboard
CODE = ""
# 处理键盘输入的数据
def on_release(key):
    global CODE
    try:
        CODE += key.char
    except Exception as e:
        try:
            if key == key.enter: #如果扫码枪中的数据是回车enter按键
                if "http" in CODE:
                    message = CODE.replace("http;","http:")
                    print(message)
                    CODE = ""
        except Exception as e:
            CODE = ""

#监听键盘扫码枪输入
with keyboard.Listener(on_release=on_release) as listener:
    listener.join()

if key == key.enter: #如果扫码枪中的数据是回车enter按键,说明是本次扫码数据接收完成,因为扫码枪一般是以回车作为结束符,或者是回车换行作为结束符。这样就可以接收到正确的扫码枪扫描的数据。

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值