在我的例子中,方法sleep()(时间模块)暂停脚本执行。 (Scipt是完全编译的,只需等待n秒直到继续)。
我正在寻找"停止脚本执行"为n秒。
例如,我通过uart读取rfid-Tags并计算cnt一次。 我在阅读器上拿着RFID标签2秒,在这2秒内,阅读器处理标签4次。
因此我的结果是:
1
-wating 10 seconds-
2
-wating 10 seconds-
3
-wating 10 seconds-
4
-wating 10 seconds-
如何在阅读标签后告诉脚本,停止执行10秒钟?我不想多次处理同一个标签。 在这10秒内不应该多次扫描标签。
python代码
import serial
import time
ser = serial.Serial('/dev/ttyAMA0', 2400, timeout=1)
cnt=0
while True:
string = ser.read(12)
if len(string) == 0:
continue
else:
cnt=cnt+1
print cnt
time.sleep(10)
我该如何处理?
答案 0 :(得分:0)
pySerial被缓冲(存储睡眠时发送的数据),因此time.sleep()对Serial.read()没有影响。
使用flush()或flushInput清除缓冲区。
import serial
import time
ser = serial.Serial('/dev/ttyAMA0', 2400, timeout=1)
cnt=0
while True:
ser.flushInput() ## clear buffer
string = ser.read(12)
if len(string) == 0:
continue
else:
cnt=cnt+1
print cnt
ser.flushInput() # clear buffer
time.sleep(10)