我正在尝试使用 node.js 串行端口模块在运行时获取设备的COM 端口。
const SerialPort = require('serialport');
var fs = require('fs');
var serialVar = getSerialPort();
console.log("outer: "+serialVar);
function getSerialPort()
{
SerialPort.list(function (err, ports) {
ports.forEach(function(port) {
if (port.pnpId == "USB\\VID_0451&PID_BEF3&MI_00\\6&808E38E&0&0000") {
console.log("inner: "+port.comName);
return port.comName;
}
});
});
}
输出:
outer: undefined
inner: COM8
从输出来看,似乎是getSerialPort()
在脚本中的所有其他内容都运行之后完成,而不是在继续超过它被调用的点之前全部运行。我不确定这是为什么。
我尝试了几种变体,例如:
const SerialPort = require('serialport');
var fs = require('fs');
var serialVar = {};
getSerialPort();
console.log("outer: "+serialVar.port);
function getSerialPort()
{
SerialPort.list(function (err, ports) {
ports.forEach(function(port) {
if (port.pnpId == "USB\\VID_0451&PID_BEF3&MI_00\\6&808E38E&0&0000") {
serialVar.port = port.comName;
console.log("inner: "+serialVar.port);
}
});
});
}
没有变化。