node.js - 分离 Node 串口获取的数据

标签 node.js arduino node-serialport

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

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

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

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

关于node.js - 分离 Node 串口获取的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36822172/

相关文章:

python-2.7 - 如何让Arduino从Python读取串口?

node.js - Node 串行端口的自定义解析器?

node.js - 监控 MongoDB "background operations"?

node.js - 其他服务中的 @Inject 服务 - Nest 无法解析依赖项

javascript - 两端都可以理解通过用不同语言编写的套接字发送/接收的数据吗?

c - 在 C 中从 'char' 到 'int* 的无效转换

javascript - Discord.js:检查机器人权限

c++ - C++ “was not declared in this scope”编译错误和修改提示

node.js - NodeJS 和 node-serialport 我在编写时遇到问题

javascript - Node.js 和串口;回调方法?