1

我目前正在为在 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

如果可能的话,请给我一个解释它的例子以及关于服务器和客户端概念的介绍?谢谢。如果这里有任何错误的术语使用,我深表歉意。

4

0 回答 0