Python中RFID读卡计时问题:While True循环无法终止
问题分析
原代码的核心问题是:当检测到卡片进入内部计时循环后,没有再次检查卡片是否仍然存在,导致即使移除卡片,内部循环也会一直执行计时,无法切换到无卡提示逻辑。
修复后的代码
import time as tm import serial import readCard def getActivity(): while True: card = readCard.readCard() if card != '': seconds = 0 minutes = 0 hours = 0 while True: # 格式化打印当前计时 print(f"{str(hours).zfill(2)}:{str(minutes).zfill(2)}:{str(seconds).zfill(2)}") # 等待1秒后更新计时,并重新检测卡片状态 tm.sleep(1) seconds += 1 # 处理时分秒进位 if seconds == 60: seconds = 0 minutes += 1 if minutes == 60: minutes = 0 hours += 1 # 关键:每次计时后重新检测卡片,无卡则退出计时循环 current_card = readCard.readCard() if current_card == '': break else: print('No Card Detected...') getActivity()
关键修改说明
- 在内部计时循环中,每次等待1秒后,重新调用
readCard.readCard()检测卡片状态 - 一旦检测到卡片不存在,立即
break退出计时循环,回到外层循环触发无卡提示 - 移除了无用的
cards = card变量,用f-string优化了计时打印的格式,让代码更简洁
内容的提问来源于stack exchange,提问作者Elijah Chileshe
相关产品推荐
相关产品推荐

