我正在为 nodejs 使用 SerialPorts 模块,并且需要能够从可变数量的串行端口中打开、写入和读取。
所以我要做的是首先为serialPort实例创建一个数组对象,然后循环处理它们:
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);
});
});
}
}
问题是 minute() 函数执行,但它不会尝试打开或读取/写入端口。
我究竟做错了什么 ??有没有更好的方法呢?