Node.js 分离从节点串行端口获取的数据

Node.js 分离从节点串行端口获取的数据,node.js,arduino,node-serialport,Node.js,Arduino,Node Serialport,我使用arduino从不同的传感器获取值,并打印这些值(例如温度和湿度) 我想分离从节点串行端口获取的数据,以便可以清楚地定义节点中的温度和湿度值 这是我的NodeJS代码: var serialport = require("serialport"); var SerialPort = serialport.SerialPort; var portName = process.argv[2]; var myPort = new SerialPort(portName,{ baudR

我使用arduino从不同的传感器获取值,并打印这些值(例如温度和湿度)

我想分离从节点串行端口获取的数据,以便可以清楚地定义节点中的温度和湿度值

这是我的NodeJS代码:

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

var portName = process.argv[2];


var myPort = new SerialPort(portName,{
   baudRate:9600,
   parser: serialport.parsers.readline('\n')

});

myPort.on('data', function (data) {
  console.log('Data: ' + data);
});
我想我应该这样做,但我不能实现。有什么建议我可以这样做吗


提前谢谢

你应该让Arduino知道它正在发送什么样的数据,而不是 只有原始数据本身。例如:

Serial.print(温度:);
Serial.println(tempval);
连续打印(F(“水分”);
序列号println(moistval);
然后,Node.js代码可以将每一行解析为一个name:value对。你可以 让Arduino将行格式化为JSON,从而简化解析

另外,如果您碰巧同时拥有两个数据段 时间,然后你可以把他们两个在同一行。这会让事情变得更糟 稍微简单一点。阿杜伊诺方面:

Serial.print(F(“{\'temperature\”:”);
串行打印(tempval);
连续打印(F(“,”水分“:”);
串行打印(moistval);
Serial.println(F(“}”);
Node.js端:

myPort.on('data', function (data) {
  console.log(JSON.parse(data));
});
myPort.on('data', function (data) {
  console.log(JSON.parse(data));
});