Raspberry Pi 3上的Octoprint插件中的Flask或Tornado?

时间:2016-11-28 22:39:14

标签: python flask knockout.js jinja2 octoprint

我目前正在为Rasberry Pi 3上运行的OctoPrint构建一个新插件。我想要它做的是拥有一个包含两个按钮的HTML前端选项卡。然后第一个按钮应该能够触发命令行从mjpg-stremaer捕获图像,另一个按钮用于运行带有导入OpenCV的python脚本,该脚本将进行边缘检测并在处理后输出到前端图像。

从OctoPrint开始,它使用jinja2模板作为前端,使用KnockOut.js作为视图模型。这是我被卡住的地方,因为我对Web应用程序的知识有限,因此我不知道下一步该怎么做。

在线搜索后,我发现很多人都提到了烧瓶或龙卷风。我尝试在在线搜索后按照建议使用flask,但它遇到了

  

错误98:"地址已在使用"

问题因为OctoPrint正在运行。所以,我的问题是,是否有办法做这样的事情?换句话说,有没有办法点击HTML按钮来触发Raspberry Pi中的python和命令行而不会出现端口或套接字问题?

python代码来自flask,这将是导入OpenCV并执行图像处理的python代码:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

使用jinja2的HTML代码,目前使用按钮显示日期和时间,但会触发上面的python代码和命令行:

<html>
<body>

<h1>Java Script</h1>

<button type="button" onclick="document.getElementById('demo').innerHTML = Date()">
Click me to display Date and Time.</button>

<p id="demo"></p>

</body>
</html>

我从mpjg-streamer捕获图片的命令行是:

wget http://localhost:8080/?action=snapshot -O output.jpg

如果可能的话,请给我一个例子,说明它,并介绍服务器和客户端概念?谢谢。如果这里有任何错误的术语用法我会道歉。

0 个答案:

没有答案