gpt4 book ai didi

node.js - 使用 Node.Js 读取多个串行输入

转载 作者:搜寻专家 更新时间:2023-10-31 23:46:58 24 4
gpt4 key购买 nike

我一直在研究一个简单的脚本来监控我实验室中的 6 个 arduino 单元。我好像快明白了!

我当前的问题是将每个数据集很好地捆绑在一个字符串中。实际上,我能够打开与所有串行端口的连接,在它们吐出数据时接收它们的数据,但缺少将其组织到包中的代码块。我考虑过尝试制作一个临时数组以将 block 附加到或生成子进程。但是,我在处理子进程时遇到了困难,并且不确定如何以适当的方式构建数组。一旦我有一个捆绑的字符串,我将发送到我服务器上的数据库。我确实有一种感觉,我可能会以一种不恰当的方式来做这件事,非常感谢任何和所有的建议!

PS:您可能注意到只显示了 5 个 arduino,这只是为了让事情变得不那么复杂,因为第 6 个 arduino 也显示为 com9。

谢谢

代码

var serialport = require('serialport');
var SerialPort = serialport.SerialPort;

// list serial ports:
serialport.list(function (err, ports) {
console.log(" Readout all availiable Com Ports and their pnpID: ");
ports.forEach(function(port) {

console.log(port.comName);
console.log(port.pnpId);
console.log(port.manufacturer);

var serialPort = new SerialPort(port.comName, {baudrate: 9600
}, false);
serialPort.open(function (error) {
if ( error ) {
console.log('failed to open: '+error);
} else {
console.log('open');
serialPort.on('data', function(data) {
console.log('data received: ' + port.comName+ ' ' + data);

});
}
});
})
})

输出

Readout all availiable Com Ports and their pnpID:   
COM11
USB\VID_2341&PID_0043\75430333437351517211
Arduino LLC (www.arduino.cc)
COM9
USB\VID_2341&PID_0043\7543033343735151C020
Arduino LLC (www.arduino.cc)
COM8
USB\VID_2341&PID_0043\754363434303516181F0
Arduino LLC (www.arduino.cc)
COM7
USB\VID_2341&PID_0043\7543033313735140B152
Arduino LLC (www.arduino.cc)
COM4
USB\VID_2341&PID_0043\754303334373515162D0
Arduino LLC (www.arduino.cc)
open
open
open
open
open
data received: COM8 L03
data received: COM4 L01
data received: COM8 , -0.00127 , 8.19188

data received: COM4 , -
data received: COM7 L02
data received: COM4 0.00127 , 8.
data received: COM7 , -0.00
data received: COM4 19188

data received: COM7 127 , 8.
data received: COM9 L
data received: COM7 19188

最佳答案

来自串口库的文档 https://www.npmjs.com/package/serialport

有一个选项可以读取数据直到遇到新行。这可以用来代替波特率来读取整行数据。

更改以下行

var serialPort = new serialport.SerialPort(port.comName, {
baudrate: 9600
}, false);

var serialPort = new serialport.SerialPort(port.comName, {
parser: serialport.parsers.readline("\n")
}, false);

然后在你的回调中,数据将以整行的形式出现,而不是分段

关于node.js - 使用 Node.Js 读取多个串行输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36363374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com