分离从节点串口获得的数据

我正在使用一个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); }); 

我认为我应该数组,但我不能实现。关于如何做到这一点的任何build议?

提前致谢!

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

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

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

另外,如果您碰巧同时有两条数据可用,则可以将它们都发送到同一行。 这可以使事情稍微简单一些。 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)); });