1

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

serial.println(tempval);
serial.println(moistval);

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

这是我的 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);
});

我认为我应该阵列但我无法实施。关于如何做到这一点的任何建议?

提前致谢!

4

1 回答 1

2

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

Serial.print(F("temperature: "));
Serial.println(tempval);
Serial.print(F("moisture: "));
Serial.println(moistval);

然后,您的 Node.js 代码可以将每一行解析为名称:值对。您可以通过让 Arduino 将该行格式化为 JSON 来简化此解析。

此外,如果您碰巧同时有两条数据可用,那么您可以在同一行中发送它们。这可以使事情稍微简单一些。Arduino方面:

Serial.print(F("{\"temperature\": "));
Serial.print(tempval);
Serial.print(F(", \"moisture\": "));
Serial.print(moistval);
Serial.println(F("}"));

Node.js 方面:

myPort.on('data', function (data) {
  console.log(JSON.parse(data));
});
于 2016-05-13T11:09:45.313 回答