已经在这里待了几个小时了。indexOf(( 函数永远不会返回> -1,即使我看到字符在串行监视器中打印,并且字符串的长度随着字符的进入而增加。
String command;
void loop() {
while ( bleuart.available() ) {
char ch;
ch = bleuart.read();
command += ch;
Serial.print(ch);
}
Serial.println(command.length());
if(command.indexOf("n") > -1 ) {
Serial.println("command:");
Serial.println(command);
}
}
@darc是对的,但如果它来自 ble 模块,字符串中真的不应该有实际的 ,我认为这是错误的。这应该是一个换行符 (DEC 10(, 应该与 相同。
我在您的代码中看到 3 个顺从问题。
- 您的
command
变量永远不会被清除,因此它将增长到 内存不足。完成命令后,调用command = "";
- 构造命令字符串时,请使用
command.concat(ch);
而不是command += ch;
- 您应该将
if(command.indexOf("n") > -1 )
更改为if(command.indexOf("n") != -1 )
看看这是否有帮助。