Python Web 应用程序:刷新值
Python Web application: Refresh values
我使用 python 脚本模板(Raspberry Pi 上的 运行)通过 WiFi 将传感器数据 (i2c) 发送到我的电脑。问题是,这些值不是静态的。如果我启动 Web 应用程序,它只会从传感器读取一次数据。所以,如果我从我的 PC 检查这些值,我可以看到它正确地发送了数据,但它们不会改变。
如何修改脚本以刷新 i2c_output
值,而不是一遍又一遍地启动脚本?
这是我目前尝试过的方法:
import web
import sys, os
import smbus
import math
#
# Lot of initialisation... forget that part
#
accel_xout = read_word_2c(0x3b)
accel_yout = read_word_2c(0x3d)
accel_zout = read_word_2c(0x3f)
afs_sel = read_word_2c(0x28)
LSB_afs_sel = 16384.0
accel_xout_sc = accel_xout / LSB_afs_sel
accel_yout_sc = accel_yout / LSB_afs_sel
accel_zout_sc = accel_zout / LSB_afs_sel
i2c_output = str(accel_xout_sc) + str(accel_yout_sc) + str(accel_zout_sc)
urls = ( '/','Index',
)
class Index:
def GET(self):
return i2c_output
if __name__=="__main__":
app=web.application(urls,globals())
app.run()
将检索传感器数据的代码移到一个方法中,并在每次调用索引时调用该方法。
def get_sensor_output():
#
# Lot of initialisation... forget that part
#
accel_xout = read_word_2c(0x3b)
accel_yout = read_word_2c(0x3d)
accel_zout = read_word_2c(0x3f)
afs_sel = read_word_2c(0x28)
LSB_afs_sel = 16384.0
accel_xout_sc = accel_xout / LSB_afs_sel
accel_yout_sc = accel_yout / LSB_afs_sel
accel_zout_sc = accel_zout / LSB_afs_sel
i2c_output = str(accel_xout_sc) + str(accel_yout_sc) + str(accel_zout_sc)
return i2c_output
class Index:
def GET(self):
return get_sensor_output()
注意:您可能希望根据调用此 get 方法的频率来实施某种缓存。目前每次调用都会检索传感器数据,这可能是也可能不是昂贵的操作,会耗尽你的 pi
我使用 python 脚本模板(Raspberry Pi 上的 运行)通过 WiFi 将传感器数据 (i2c) 发送到我的电脑。问题是,这些值不是静态的。如果我启动 Web 应用程序,它只会从传感器读取一次数据。所以,如果我从我的 PC 检查这些值,我可以看到它正确地发送了数据,但它们不会改变。
如何修改脚本以刷新 i2c_output
值,而不是一遍又一遍地启动脚本?
这是我目前尝试过的方法:
import web
import sys, os
import smbus
import math
#
# Lot of initialisation... forget that part
#
accel_xout = read_word_2c(0x3b)
accel_yout = read_word_2c(0x3d)
accel_zout = read_word_2c(0x3f)
afs_sel = read_word_2c(0x28)
LSB_afs_sel = 16384.0
accel_xout_sc = accel_xout / LSB_afs_sel
accel_yout_sc = accel_yout / LSB_afs_sel
accel_zout_sc = accel_zout / LSB_afs_sel
i2c_output = str(accel_xout_sc) + str(accel_yout_sc) + str(accel_zout_sc)
urls = ( '/','Index',
)
class Index:
def GET(self):
return i2c_output
if __name__=="__main__":
app=web.application(urls,globals())
app.run()
将检索传感器数据的代码移到一个方法中,并在每次调用索引时调用该方法。
def get_sensor_output():
#
# Lot of initialisation... forget that part
#
accel_xout = read_word_2c(0x3b)
accel_yout = read_word_2c(0x3d)
accel_zout = read_word_2c(0x3f)
afs_sel = read_word_2c(0x28)
LSB_afs_sel = 16384.0
accel_xout_sc = accel_xout / LSB_afs_sel
accel_yout_sc = accel_yout / LSB_afs_sel
accel_zout_sc = accel_zout / LSB_afs_sel
i2c_output = str(accel_xout_sc) + str(accel_yout_sc) + str(accel_zout_sc)
return i2c_output
class Index:
def GET(self):
return get_sensor_output()
注意:您可能希望根据调用此 get 方法的频率来实施某种缓存。目前每次调用都会检索传感器数据,这可能是也可能不是昂贵的操作,会耗尽你的 pi