我目前正在为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
如果可能的话,请给我一个例子,说明它,并介绍服务器和客户端概念?谢谢。如果这里有任何错误的术语用法我会道歉。