我试图实时查看数据,我必须关闭 python 程序来刷新数据。只有当我关闭 python 文件并重新启动它时它才会刷新。我希望数据实时刷新。
from flask import Flask
import serial
app = Flask(__name__)
water = serial.Serial("COM4",9600)
water1 = water.readline().decode('ascii')
# @ signifies a decorator
@app.route('/')
def index():
return 'This is home page'
@app.route('/plant')
def plant():
while True:
return '<h2>soil is:</h2> ' + water1 + '%'
if __name__=="__main__":
app.run()
这取决于您所说的“实时”是什么意思。让我们先来看看 Flask 是如何工作的。
带有@app.route
装饰器的函数之外的所有内容都只会在服务器启动时执行一次。这就是为什么您的数据当前只提取一次,您的数据提取代码在这些函数之外:
water = serial.Serial("COM4",9600)
water1 = water.readline().decode('ascii')
现在,最简单的修复方法是每次刷新页面时获取数据,如下所示:
@app.route('/plant')
def plant():
water = serial.Serial("COM4",9600)
water1 = water.readline().decode('ascii')
# while True: // don't use while True though, it'll freeze your program forever.
return '<h2>soil is:</h2> ' + water1 + '%'
由于plan()
在每次页面刷新时执行,因此您的数据也会更新。
不过,还有第三种选择,以实现通常称为“实时”的结果。但是,如果不使用 Javascript,您将无法绕过它。在这种情况下,您设置了一个 API,它将返回您的数据,您将从 Javascript 调用该数据。
但是,我怀疑您真正想做的是在页面刷新时刷新数据。如果不是这种情况,请在下面给我写评论,我会更新我的答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句