您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Raspberry Pi上的Python用户输入无限循环内部输入时很多输入错过了输入

5b51 2022/1/14 8:21:54 python 字数 2908 阅读 494 来源 www.jb51.cc/python

我有一个用Python编写的非常基本的parrot脚本,只是提示用户输入并将其打印回无限循环内. Raspberry Pi附带USB条形码扫描仪,用于输入.while True: barcode = raw_input('Scan barcode: ') print 'Barcode scanned: ' + barcode 当您以“正常”速

概述

我有一个Python编写的非常基本的parrot脚本,只是提示用户输入并将其打印回无限循环内. RaspBerry Pi附带USB条形码扫描仪,用于输入.

while True:
    barcode = raw_input("Scan barcode: ")
    print "Barcode scanned: " + barcode

当您以“正常”速度扫描时,它可靠地工作,命令输出如下所示:

Scan barcode: 9780465031467
Barcode scanned: 9780465031467
Scan barcode: 9780007505142
Barcode scanned: 9780007505142

但是当你真的用很多扫描连续敲击它时,有可能让它错过输入,命令输出如下所示:

Scan barcode: 9780141049113
Barcode scanned: 9780141049113
Scan barcode: 9780465031467
Barcode scanned: 9780465031467
Scan barcode: 9780007505142
9780571273188
Barcode scanned: 9780571273188

请注意9780007505142是如何输入但从未打印过的.它在混乱中迷失了.

观看我的测试的视频演示:https://youtu.be/kdsfdKFhC1M

我的问题:这是不可避免的使用像Pi这样的低功耗设备?拥有条形码扫描仪的用户是否能够超越硬件的跟进能力?

import os
import sys
import select

stdin_fd = sys.stdin.fileno()
try:
    while True:
        sys.stdout.write("Scan barcode: ")
        sys.stdout.flush()
        r_list = [stdin_fd]
        w_list = list()
        x_list = list()
        r_list,w_list,x_list = select.select(r_list,x_list)
        if stdin_fd in r_list:
            result = os.read(stdin_fd,1024)
            result = result.rstrip()
            result = [line.rstrip() for line in result.split('\n')]
            for line in result:
                print "Barcode scanned: %s" % line
except KeyboardInterrupt:
    print "Keyboard interrupt"

代码应处理一次读取多行的情况.读取缓冲区大小是任意的,您可能需要根据需要处理的数据来更改它.

总结

以上是编程之家为你收集整理的在Raspberry Pi上的Python用户输入无限循环内部输入时很多输入错过了输入全部内容,希望文章能够帮你解决在Raspberry Pi上的Python用户输入无限循环内部输入时很多输入错过了输入所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶