代码之家  ›  专栏  ›  技术社区  ›  Jeppe Christensen

不会打印传感器数据的整个字符串

  •  -3
  • Jeppe Christensen  · 技术社区  · 6 年前

    所以我有一个两个传感器的设置,当我提示它时,它会捕获一组数据。

    void loop() {
    ..
        else if (serialString == "5")
        {
            String outputString = returnMeasurements(3);
        }
    }
    String returnMeasurements(int sensorType)
    {
      if (sensorType == 1 || sensorType == 3)
      {
       //do assay
        String NIRString = "SOME DATA HERE" // Gather data from sensor and append to NIRSTRING
      }
    
      if (sensorType == 2 || sensorType == 3)
      {
        //do assay
        String VISString = "SOME DATA HERE" // Gather data from sensor and append to VISSTRING
      }
      Serial.print("TEST");
      Serial.print(NIRString + VISString); //HERE IS WHEN THINGS SOMETIMES GO WRONG
      return  NIRString + VISString;
    }
    

    我已经将上面的代码简化了很多,所以这里只提供了必要的代码。

    我的问题是,有时候 Serial.print return 声明没有打印任何东西,即使 NIRString VISString

    我怀疑,自从 NIRString公司 内弦 是不是长字符串,它不知怎么占用内存?除此之外,我不知道出了什么事。

    1 回复  |  直到 6 年前
        1
  •  0
  •   KIIV    6 年前

    可变阴影。

    您还没有发布最小的工作示例,您可能已经提交了全局变量。但是如果你能编译它,它肯定在那里。删除两个全局变量声明: String NIRString; String VISString; {} .

    String returnMeasurements(int sensorType)
    {
      String result;
    
      if (sensorType == 1 || sensorType == 3)
      {
        //do assay
        result += "SOME DATA HERE"; // Gather data from sensor and append to NIRSTRING
      }
    
      if (sensorType == 2 || sensorType == 3)
      {
        //do assay
        result += "SOME DATA HERE"; // Gather data from sensor and append to VISSTRING
      }
      Serial.print("TEST");
      Serial.print(result); //HERE IS WHEN THINGS SOMETIMES GO WRONG
      return result;
    }
    

    The Evils od Arduino Strings