所以我得到了这段代码来获得正确的COM名称:
//serialport lib import
var serialport = require("serialport");
//global var
var prt;
serialport.list(function (err, ports) {
ports.forEach(function (port) {
//this does NOT work.
prt = port.comName);
});
});
console.log(prt); //outputs UNDEFINED
问题是无论我在哪里尝试将prt设置为.list()范围内的某个值。它没有设置变量。
但我可以调用全局函数。这对我来说真的没有任何意义。
//serialport lib import
var serialport = require("serialport");
//global var
var prt;
//global function
var printPort = function(port){
console.log(port);
}
serialport.list(function (err, ports) {
ports.forEach(function (port) {
//this does NOT work.
prt = port.comName);
//and this DOES
printPort(port.comName); //outputs "COMx"
});
});
我现在认为这是与范围相关的问题。我对此很陌生,并对这种行为感到很困惑。事实上,我可以调用全局函数,但我无法设置全局变量对我没有任何意义。
另一个问题是如何使用RETURNS端口名称来创建一个函数。由于它是异步的,我无法归还。
非常感谢。