我有一个问题,我的程序的一部分,我想我知道问题是什么,我找不到办法来解决它,因此需要你的帮助。
我认为问题不在于serialport.list函数,而在于我使用它的方式。
这是我的代码:
var getPortsList= ()=>{
var portsList = [];
SerialPort.list((err, ports)=>{
ports.forEach((ports)=>{
portsList.push(ports.comName);
//console.log(portsList);
});
});
return portsList;
};
所以我把list函数 Package 在我自己的函数中,当我需要检查哪些端口可用时,我会调用它。我遇到的问题是,我总是得到一个空数组返回。如果我从forEach内部console.log,我肯定会得到COM端口名称,如果我在forEach循环后从list函数内部console.log,我会得到数组,并且不是空的。我只能假设这是与JavaScript的一致性有关的一些问题,但我不太确定如何解决这个问题。我可以看到这是一个重要的概念,将出现所有的时间,我想了解它更好一点。任何关于如何处理这种问题或合适的链接的信息将是apreciated。谢谢你。最好的问候路易斯
6条答案
按热度按时间a6b3iqyw1#
我希望下面的解决方案将为您工作。
这样做的原因是因为
SerialPort.list
方法是异步的。这会使portsList
为空,因为SerialPort.list
还没有机会完成并填充它。添加一个完成回调函数可以让它有时间运行,并为您提供一个已填充的端口数组。1u4esq0p2#
对于windows7节点serialPort 8,内部电子,采用中兴usb gsm调制解调器.
虽然它没有列出中兴USB调制解调器,但它列出了其他端口。我使用小技巧来获取usb调制解调器端口没有(我知道它不正确的方式获取usb调制解调器端口)
zte4gxcn3#
对于那些想知道为什么标记为答案的解决方案不起作用的人,SerialPort.List已从SerialPort中弃用,并作为命令工具移动到SerialPort/List中
来源:https://serialport.io/docs/guide-cli(SerialPort官方文档)
安装SerialPort/List:
如果安装失败,则使用sudo运行
获取端口列表的方法:
我找不到太多关于nodejs的serialPort/list的文档,所以我从源代码中取出了一些代码。顺便说一句,我是个新手。所以如果我在取出的代码上犯了愚蠢的错误,请不要来找我。
我从这里获取源代码:https://github.com/serialport/node-serialport/blob/master/packages/list/lib/index.js
gywdnpxw4#
为了进一步响应janithcooray,更新为使用async/await,这对我来说很有效。
gcuhipw95#
我得到一个
list()
不是一个定义的函数错误消息时,使用提供的代码片段。我能够通过稍微不同的要求serialport来解决这个问题。对我有用的代码如下:
9avjhtql6#
对于Windows 10,serialPort的list方法打印所有可用的Com端口和信息。
在终端上: