我在这里摆姿势,并且正在寻找一些想法,以便在接受http请求时启动对树莓派上的步进电机的控制。
这是我所做的:
首先,我使用RPi.GPIO创建了一个函数。基本上,此函数将采用一个参数,即我希望它执行多少步骤。
然后,我用Bottle启动了一个可以接收HTTP请求的服务器。经过动态路由后,我可以使用变量调用前一个函数,该变量可以通过浏览器或本地网络中的vd.setOnCompletionListener(new android.media.MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(android.media.MediaPlayer arg0) {
vd.start();
}
});
进行控制。
但这是我期望的结果:
我需要服务器发出一个请求,以顺时针方向旋转电动机,并再次请求停止电动机。考虑到我的服务器将要完成当前请求,直到它能够接受另一个请求,我的代码肯定不会这样做。
以下是我的一些想法:
从本质上讲,在请求转cw / ccw时,服务器需要启动无限循环以保持电动机运行。并且,当服务器发出停止请求时,它将停止该无限循环并断开所有极点以节省电源。
我的想法之一是将bottle与基于基顿的服务器或其他多线程服务器一起使用。它确实同时需要多个请求,但问题是我不知道如何向先前的请求发送消息并告诉它停止。
另一个想法是让瓶子服务器以工作模式(cw / ccw / idle)打开和写入JSON文件。然后运行另一个python脚本以定期读取此文件,并采取相应的措施。当然可以,但是我担心性能。我认为我不能让python脚本以很高的速率读取文件,而较低的速率会使请求响应速度不那么快。
感谢您阅读本文。我的问题是如何向基于gevent的服务器中正在运行的线程发送消息并使其停止。