我是一名 Python 程序员新手,正在尝试编写一个 Python 脚本来运行条形码扫描站(Raspberry Pi 4、RPiOS、Python 3.7.3)。我想扫描一定数量的元素,完成后我想扫描不同的条形码来处理输入。如果批量计数满足,它将从那里发送 GPIO 信号,或者如果计数过高或过低,则直接终止程序。
我写的内容很成功,但有一个异常(exception):当扫描第二个条形码来处理输入时,需要扫描两次才能触发脚本的其余部分。我很困惑为什么会这样,并且确信这是我忽略的简单事情。
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
import time
good = 38
GPIO.setmode(GPIO.BOARD)
GPIO.setup(good,GPIO.OUT)
GPIO.output(good,GPIO.HIGH)
try:
def batch_order():
batch = input("Enter the number of parts on the order: ")
barcode1 = input("Scan MASTER barcode: ")
print("Begin scanning barcodes: ")
count = 0
while True:
if input() == barcode1:
count+= 1
print("Part count: %s"%(str(count)))
elif input() != barcode1:
time.sleep(0.2)
if batch == str(count):
print("Order complete! Now printing shipping label...")
time.sleep(0.2)
GPIO.output(good,False)
time.sleep(15)
GPIO.output(good,True)
break
else:
print("Order incorrect, %s of %s parts scanned."%(str(count), batch))
time.sleep(2)
break
batch_order()
except KeyboardInterrupt:
GPIO.cleanup()
print("QUIT")
GPIO.cleanup()
我想做的就是消除在elif input() !=barcode1:
处终止程序所需的双重扫描。任何帮助将不胜感激,谢谢!
最佳答案
只需获取input()
一次并分配它
value = input()
if value == barcode1:
...
else: # there is also no other case
...
关于python - 条形码批量扫描 - 为什么此代码需要两次扫描才能终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67390213/