调用实时多Python脚本嗯,这是一个比较复杂的问题,我试图解释它足够广泛,这样就可以了解我们需要什么。解决方案从服务器的NodeJS
该项目是关于一些步进电机,由raspi,运行在服务器的NodeJS,供应webapp的控制。 Webapp通过websocket与nodejs服务器进行通信。
可以控制与所述web应用操纵杆,每次值的变化的方向和速度,所述web应用程序发射具有的WebSocket prototcol到服务器的消息。
当的NodeJS服务器获取这些消息,它启动一个子进程,像这样:
child_process.exec('python /home/pi/Adafruit-Motor-HAT-Python-Library/examples/StartStepper.py 10 1 10 0', function (err, stdout, stderr) {
if (err) {
console.log("child processes failed with error code: " +
err.code);
}
console.log(stdout);
});
我设置为步进剧本的话,我可以设置的步骤,转速和stepstyles作为参数脚本。
所以这一切工作正常,我可以用我的活动等启动脚本。
但是,如果我移动操纵杆,脚本会被多次调用,这很好,因为如果我从左向右切换或者如果我改变速度,但脚本就像一个堆叠,不要停止,当一个新的开始时,他们只是做他们的工作,并运行,直到他们完成。我希望他们在脚本再次被调用后立即停下来,但我并没有深入python。也许它甚至会工作,改变线程的属性,它控制运行时的步进器?对此我不确定。我只是想控制我的实时,这令人痛心的要与蟒蛇做踏步,因为步进控制,对其他语言的支持。
更新: 所以我现在尝试杀死进程之前,我执行一个新问题:
var child_process = require('child_process');
child_process.kill(); //Default killSignal
child_process.exec('python /home/pi/Adafruit-Motor-HAT-Python-Library/examples/StartStepperL.py 10 1 10 0', function (err, stdout, stderr) {
if (err) {
console.log("child processes failed with error code: " +
err.code);
}
console.log(stdout);
});
这显然是行不通的,因为我不处理killSignal,但我不得到处理它的地方,我已经阅读了关于它的文档。
谢谢,我会检查出来,硬件通信是完全新的给我,这么大的明显的事情是不是很明显,我:)谢谢提示。 – TobiasW
我更新了我的问题,因为我需要一些帮助来杀死这个过程,我希望你能帮助我。 – TobiasW