Arduino 子字符串不起作用
Arduino substring doesn't work
>我有一个静态方法,可以将 TAG 之间的值搜索(并返回)到 String msg 中
这是代码函数:
static String genericCutterMessage(String TAG, String msg){
Serial.print("a-----");
Serial.println(msg);
Serial.print("b-----");
Serial.println(TAG);
if(msg.indexOf(TAG) >= 0){
Serial.print("msg ");
Serial.println(msg);
int startTx = msg.indexOf(TAG)+3;
int endTx = msg.indexOf(TAG,startTx)-2;
Serial.print("startTx ");
Serial.println(startTx);
Serial.print("endTx ");
Serial.println(endTx);
String newMsg = msg.substring(startTx,endTx);
Serial.print("d-----");
Serial.println(newMsg);
Serial.println("END");
Serial.println(newMsg.length());
return newMsg;
} else {
Serial.println("d-----TAG NOT FOUND");
return "";
}
}
这是输出
a-----[HS][TS]5132[/TS][TO]5000[/TO][/HS]
b-----HS
msg [HS][TS]5132[/TS][TO]5000[/TO][/HS]
startTx 4
endTx 30
d-----
END
0
fake -_-'....go on! <-- print out of genericCutterMessage
在这种情况下,我想返回 HS 标签之间的字符串,所以我的预期输出是
[TS]5132[/TS][TO]5000[/TO]
但我不知道为什么我会收到一个空字符串。
为了了解子字符串的工作原理,我只是按照 Arduino 官方网站上的教程进行操作
http://www.arduino.cc/en/Tutorial/StringSubstring
我不是C++和Arduino的专家,但这看起来像是一个刷新或缓冲问题,不是吗?
知道吗?
你的代码是正确的,这不应该发生。 这迫使您考虑这可能失败的意外方式。 我能想到的候选人事故真的只有一个,你的 Arduino 内存快用完了。 它很少,例如 Uno 只有 2 KB。 不需要很多字符串咀嚼来填充它。
这不是以顺利的方式报告的。 我所能做的就是将您指向相关的公司页面。 引用:
如果SRAM用完,程序可能会以意外的方式失败;它看起来上传成功,但没有运行,或者运行异常。要检查是否发生这种情况,您可以尝试注释掉或缩短草图中的字符串或其他数据结构(无需更改代码)。如果它随后成功运行,则您的SRAM可能用完了。您可以采取一些措施来解决此问题:
- 如果您的草图与(台式机/笔记本电脑)计算机上运行的程序对话,您可以尝试将数据或计算转移到计算机上,从而减少 Arduino 上的负载。
- 如果您有查找表或其他大型数组,请使用存储所需值所需的最小数据类型;例如,int 占用两个字节,而一个字节仅使用一个字节(但可以存储较小范围的值)。
- 如果在草图运行时不需要修改字符串或数据,则可以将它们存储在闪存(程序)存储器而不是SRAM中;为此,请使用PROGMEM关键字。
这在您的特定情况下不是很有帮助,您必须查看候选人计划的其余部分。 或者升级您的硬件,StackExchange 为Arduino爱好者提供了一个专门的网站,这无疑是获得建议的最佳场所。
相关文章:
- 当我使用自定义类型创建动态数组时,即使使用字符串,它似乎也不起作用
- 尝试使用C++中的模板进行BST排序,但在使用随机字符串进行测试时不起作用
- boost::spirit::x3 中的简单字符串解析器不起作用
- 用于拆分空格字符串的程序不起作用
- 比较字符串的 GetLine 工作一次,然后比较之后不起作用
- C++11+=当RHS有多个字符串或字符时,运算符不起作用
- 将字符从一个字符串简单分配到另一个字符串不起作用
- C++ 对象数组字符串输入在控制台上不起作用
- 字符串代码不起作用
- 检查字符串中的小写字符或空格.布尔值不起作用
- 在C 中使用Atof将字符串转换为小数不起作用
- 字符串等于不起作用 C++
- 从中间器转换字符串不起作用,出了什么问题?
- 为什么strcpy()不起作用,请接受字符串作为参数
- 在字符串中找到元音不起作用
- C++将字符串写入文本文件中的行;新行问题不起作用
- int 有效,但字符串::size_type不起作用
- C++ 如果要替换的句子具有"+"符号,则替换字符串功能不起作用
- C++字符串不起作用
- 排序功能不起作用(字符串比较问题)