二维码扫码器问题
背景,GUI程序通过二维码扫码器(霍尼韦尔)获取信息,需要单独开一个线程调用二维码扫码器,扫描仪一直在等待扫描,扫描到数据后需对数据进行处理。
代码如下:
while True:
n = ser.inWaiting()
if n:
time.sleep(0.01)
n = ser.inWaiting()
data = ser.read(n)
print(data.decode('utf-8'))
霍尼韦尔7120二维码扫码器有个特点,如果扫描到数据堆到串口上,程序未立即读取,扫描仪会自动重启,导致程序中的二维码扫描线程结束,后续无法再继续扫描。(个人理解)
解决办法:
二维码扫描线程一直开启,一直扫描和读取。在数据处理前加一个标志位,数据处理开始时先把标志重置为假,这样即使读到数据,也不会处理,防止程序崩溃,待数据处理完毕后。
if sacn_flag:
sacn_flag = False#二维码处理标志位
#查询数据库
self.uuid = contentlist[0]
con = sqlite3.connect("datas.db")
cur = con.cursor()
#查询符合条件数据库
sql = "SELECT * FROM table WHERE uuid=(%s)" %(self.uuid)
cur.execute(sql)
res = cur.fetchone()
#。。。。。数据处理
#处理结束
sacn_flag=True