Arduino C语言使用toCharArray不正确

问题描述

我从传感器读取数据,并像这样显示给串行监视器。

  int humidity = dht.readHumidity();
  int temperature = dht.readTemperature();

  
  String place = "My Home";
  if (online)   {
    if (!client.connected()) {
      reconnect();
    }
    client.loop();
    
    String data = "{\"data\": {\"humidity\":" + String(humidity) + ",\"temperature\":" + String(temperature) + ",\"place\": " +  place + "}}";

    data.tochararray(msg,(data.length() + 1));
    Serial.println(msg);

输出

{"data": {"humidity":60,"temperature":27,"place": My Home}}
{"data": {"humidity":2147483647,"temperature":2147483647,"place": My Home}}

运行代码后,它没有错误,但输出不正确,并且在显示输出后程序将停止。 如果我在data.tochararray(msg,(data.length() + 1));评论。然后,程序将显示正确的温度和湿度值输出。如何解决

解决方法

使用基本的itoa函数。它包含在stdlib.h

char buf[12]; // "-2147483648\0"
lcd.printIn(itoa(random(1024)-512,buf,10));

Source : Arduino Playground

,

删除字符串中的所有空格后,就没有问题了。谢谢。