我正在使用用於nodejs的串行端口模塊,並且需要能夠打開,寫入和讀取可變數量的串行端口。node.js多個串行端口
所以我在做什麼,是先創建一個串口實例的數組對象,然後在一個循環處理它們:
var serialport = require("serialport");
var SerialPort = serialport.SerialPort; // localize object constructor
var devs = ["/dev/tty.SerialPort","/dev/tty.HHW-SPP-1800-2-DevB"];
var ports = [];
for (var i = 0; i < devs.length; i++) {
console.log(devs[i]);
var port = new SerialPort(devs[i],{ baudrate:9600, parser: serialport.parsers.readline("\n") });
ports.push(port);
}
然後我有定期調用另一個函數來讀取/寫入港口:
function minute(){
for (var i = 0; i < ports.length; i++) {
console.log(i);
ports[i].on("open", function (path) {
console.log('opened');
ports[i].write("Helo World\n", function(err,res) {
if(err) console.log('err ' + err);
console.log('results ' + res);
});
ports[i].on("data", function (data) {
console.log("here: "+data);
});
});
}
}
的問題是分()函數執行時,但它不試圖打開或讀/寫的端口。
我在做什麼錯?有沒有更好的方式來做到這一點?
您不應該需要輪詢端口。 Nodejs使用事件。你應該可以在你的上面的初始化循環中設置'ports [i] .on'處理程序。 – Alan