如何将 json 从 arduino 发送到节点 js (SerialPort)? [英] How to send json from arduino to node js (SerialPort)?

查看:30
本文介绍了如何将 json 从 arduino 发送到节点 js (SerialPort)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Arduino 代码:

Arduino code:

我正在尝试发送具有三个值的 json 结构数据

I'm trying to send json structure data with three values

#include <dht.h>
#include <ArduinoJson.h>

DHT d = DHT();

int avalue=0;

void setup() {
  Serial.begin(9600);
  while (!Serial) continue;

  d.attach(A0);
  delay(1000);
}

int data[3];

void loop() {
  d.update();

  data[0] = analogRead(A1);
  data[1] = d.getTemperatureInt();
  data[2] = d.getHumidityInt();
  StaticJsonBuffer<200> jsonBuffer;

  JsonObject& root = jsonBuffer.createObject();

  root["Moisture"] = data[0];
  root["Temperature"] = data[1];
  root["Humidity"] = data[2];

  Serial.println();
  root.prettyPrintTo(Serial);
}

这里可以看到arduino的输出

我需要在 NodeJs 上获取数据

I need to get data on NodeJs

我的问题是我无法在json中获取数据

My problem is that i can not get data in json

我有哪些选择?

或者我该如何解决这个问题?

Or how can I solve this problem?

我正在尝试通过 SerialPort 读取数据

I'm trying read data by SerialPort

节点 Js 代码:

var express = require('express');
var app = express();
var SerialPort = require('serialport');
var firebase = require('firebase');
var port = new SerialPort('COM4', {
  baudRate: 9600
});

var Readline = SerialPort.parsers.Readline

var parser = new Readline()
port.pipe(parser)

parser.on('data', function (data) {

    console.log(data);
})

这里可以看到节点服务器的输出

但是当我尝试获取子数据时,我收到了 undefined

But when I'm trying to get child data I'm receiving undefined

console.log(data.Temperature);

未定义值

推荐答案

在 node js 中你应该首先:

In node js you should firstly:

1)转成字符串

2)并从此字符串中删除 '\r'

2)And remove '\r' from this String

3) 转换为 JSON

3)Convert to JSON

4)然后解析它

parser.on('data', function (data) {
    str = data.toString(); //Convert to string
    str = str.replace(/\r?\n|\r/g, ""); //remove '\r' from this String
    str = JSON.stringify(data); // Convert to JSON
    str = JSON.parse(data); //Then parse it

    console.log(str.Moisture);
    console.log(str.Temperature);
    console.log(str.Humidity);


})

保留其余代码不变

这篇关于如何将 json 从 arduino 发送到节点 js (SerialPort)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆