我目前正在为在 Rasberry Pi 3 上运行的 OctoPrint 构建一个新插件。我想要它做的是有一个包含两个按钮的 HTML 前端选项卡。然后第一个按钮应该能够触发命令行以从 mjpg-stremaer 捕获图像,另一个按钮可以使用导入的 OpenCV 运行 python 脚本,该脚本将进行边缘检测并在处理后将图像输出到前端。
从 OctoPrint 开始,它使用 jinja2 模板作为前端,使用 KnockOut.js 作为视图模型。这就是我陷入困境的地方,因为由于我对 Web 应用程序的了解有限,我不知道下一步该怎么做。
网上搜索后发现,无论是flask还是tornado,都被提及很多。我尝试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()
HTML 代码使用jinja2
,当前使用按钮显示日期和时间,但会触发上面的 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
如果可能的话,请给我一个解释它的例子以及关于服务器和客户端概念的介绍?谢谢。如果这里有任何错误的术语使用,我深表歉意。