我在Raspberry Pi上编写了一个程序来读取GPIO输入并将它们写入.csv文件,然后由Javascript脚本读取并显示在Pi上托管的网页上。
Pi每隔0.1秒轮询一次引脚并写入文件,脚本每0.2秒读取一次该文件并更新网页。
我遇到的问题是,有时脚本会将值读取为全零而不是保存在文件中的实际数字,而不会抛出任何错误。这是随机发生的,有时脚本会正确读取文件。刷新页面,重新启动apache并重新启动Pi似乎没有任何效果。
脚本没有返回任何错误的事实使我相信问题发生在脚本获取文件之前,但查看cat
中的文件显示正确的值。
有人有什么想法吗?
相关的Javascript代码:
var csv_path = "/data/loads.csv";
function update_vars() {
//get latest data
var response = $.get(csv_path, function(data) {
var csv_string = data;
var res = csv_string.split("\n")[1].split(",");
//parse values into variables
...
});
示例文件内容:
TV,AC,Oven,Light,Solar,inverter,inverter(controlled)
1,3,2,6,0,0,0
示例Javascript日志输出:
TV,AC,Oven,Light,Solar,inverter,inverter(controlled)
0,0,0,0,0,0,0
答案 0 :(得分:0)
我最终通过用MySQL数据库和php替换csv文件和javascript来解决这个问题。
现在我的python使用php脚本为数据库添加一个条目,选择正确的值并显示它们。这样做的好处是不需要处理任何客户端。
对我的应用程序来说感觉有点过分,但似乎工作得更好,更不用说了解LAMP堆栈现在的好处。