运行 每 X 秒编码一次
run code every X seconds
我有从串口读取字节的无限循环,我想每隔 X 秒将读取的数据保存到 firebase 数据库。
我使用了这段代码,但没有用:
import threading
def printit():
threading.Timer(5.0, printit).start()
print "Hello, World!"
printit()
这是我的代码
import serial
ser = serial.Serial()
ser.baudrate = 115200
ser.port = "/dev/ttyUSB0"
ser.timeout = 30
try:
try:
while 1:
line = ser.readline().rstrip().decode('utf-8')
# print("save data here every X seconds)
except KeyboardInterrupt:
ser.close() # Close port
pass
except serial.serialutil.SerialException as e:
print(str(e))
我不能使用睡眠,因为它阻塞了主线程,那么如何让代码连续读取并每隔 X 秒打印 "data saved"(我将保存到数据库中)
希望我没有正确理解您的意思。使用time.time()
设置定时器。
import time
def doEvery_X_Seconds():
print("I do it every X seconds")
time.sleep(1)
TIMER_LIMIT = 5
setTimer = time.time()
while(1):
print("hello world")
if(time.time() - setTimer >= TIMER_LIMIT):
doEvery_X_Seconds()
setTimer = time.time()
time.sleep(1)
只是为了证明它有效。
感谢Lutz Horn在评论中的建议,我是这样解决问题的:
import schedule
import time
import serial
ser = serial.Serial()
ser.baudrate = 115200
ser.port = "/dev/ttyUSB0"
ser.timeout = 30
schedule.every(10).seconds.do(save_db)
try:
try:
while 1:
schedule.run_pending()
line = ser.readline().rstrip().decode('utf-8')
# here every 10 seconds the function save_db will be called
except KeyboardInterrupt:
ser.close() # Close port
pass
except serial.serialutil.SerialException as e:
print(str(e))
我有从串口读取字节的无限循环,我想每隔 X 秒将读取的数据保存到 firebase 数据库。
我使用了这段代码,但没有用:
import threading
def printit():
threading.Timer(5.0, printit).start()
print "Hello, World!"
printit()
这是我的代码
import serial
ser = serial.Serial()
ser.baudrate = 115200
ser.port = "/dev/ttyUSB0"
ser.timeout = 30
try:
try:
while 1:
line = ser.readline().rstrip().decode('utf-8')
# print("save data here every X seconds)
except KeyboardInterrupt:
ser.close() # Close port
pass
except serial.serialutil.SerialException as e:
print(str(e))
我不能使用睡眠,因为它阻塞了主线程,那么如何让代码连续读取并每隔 X 秒打印 "data saved"(我将保存到数据库中)
希望我没有正确理解您的意思。使用time.time()
设置定时器。
import time
def doEvery_X_Seconds():
print("I do it every X seconds")
time.sleep(1)
TIMER_LIMIT = 5
setTimer = time.time()
while(1):
print("hello world")
if(time.time() - setTimer >= TIMER_LIMIT):
doEvery_X_Seconds()
setTimer = time.time()
time.sleep(1)
只是为了证明它有效。
感谢Lutz Horn在评论中的建议,我是这样解决问题的:
import schedule
import time
import serial
ser = serial.Serial()
ser.baudrate = 115200
ser.port = "/dev/ttyUSB0"
ser.timeout = 30
schedule.every(10).seconds.do(save_db)
try:
try:
while 1:
schedule.run_pending()
line = ser.readline().rstrip().decode('utf-8')
# here every 10 seconds the function save_db will be called
except KeyboardInterrupt:
ser.close() # Close port
pass
except serial.serialutil.SerialException as e:
print(str(e))