【问题标题】:Looping through a Char array - splitting into seperate Strings - Arduino循环遍历 Char 数组 - 拆分成单独的字符串 - Arduino
【发布时间】:2020-03-18 14:20:51
【问题描述】:

我目前正在进行的 Arduino 项目有点困难。

我正在开发的函数的目的是接收通过 NRF 无线模块接收的 char 数组变量,并将其分成 2 个不同的字符串变量。前 13 个字符为一个字符串,其余字符为另一个。

void receiveData(char* receivedData){ // Function to place the received data into the correct variable.
  for(int i = 0;i < sizeof(receivedData);i++){
    if(i < 13){
      String variableName = variableName + receivedData[i]; // Builds a string of the variablename.
    }
    else{
      String value = value + receivedData[i]; // Builds a string of the value.
    }   
  } 

我已经通过几种不同的方式工作,但没有运气。

任何帮助将不胜感激,谢谢!

【问题讨论】:

  • 这能回答你的问题吗? C++: sizeof for array length
  • variableName 保持在 if 循环的范围内,因此一旦您再次进入 for 循环,对 variableName 所做的所有更改都将消失。您应该在 for 循环之外声明 value 和 variableName (String variablename, value;)
  • sizeof(receivedData)sizeof(char*) 相同,根据平台的不同为 4 或 8(在 Arduino 上可能为 4)。您需要将大小传递给函数。

标签: c++ string arduino


【解决方案1】:
String variableName = variableName + receivedData[i];

在这里,您在循环的每次迭代中定义变量。您应该在循环之前声明变量:

String variableName;
for () {
    variableName = whatever;
}

此外,sizeof(receivedData) 只会给您指针的大小,而不是您可能期望的字符串大小。

【讨论】:

  • 我明白了,谢谢。我遇到的问题是说我传递了“voltageBefore34”的字符数组,当我串行打印并监控这个变量名的输出时,我只得到'vvo',我不确定为什么。
  • 无法真正回答这个问题,我强烈建议您使用调试器并逐步分析您的循环在做什么。
  • 我已经成功了,巴勃罗。非常感谢您的帮助。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2017-10-06
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 2019-09-07
相关资源
最近更新 更多