Arduino String.indexOf() 不起作用



已经在这里待了几个小时了。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 个顺从问题。

  1. 您的command变量永远不会被清除,因此它将增长到 内存不足。完成命令后,调用command = "";
  2. 构造命令字符串时,请使用command.concat(ch);而不是command += ch;
  3. 您应该将if(command.indexOf("n") > -1 )更改为if(command.indexOf("n") != -1 )

看看这是否有帮助。

最新更新