調用實時多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