我的arduino上有一些非常奇怪的东西。我做了一个草图(我不能发布它,因为我编辑了它,现在还有其他问题)并且它有一些问题:
当我使用
阅读时它完美无缺char c;
String cmd = "";
while (Serial.available()) {
c = Serial.read();
cmd.concat(c);
}
但是在我添加了一个新功能(我甚至不打电话)后,它开始只读取前2个字符。如果我再添加一个(相同的,我不会调用它),该字符串为空。发生了什么事?
另外,我试过
char c;
String cmd = "";
while (Serial.available()) {
c = Serial.read();
Serial.println(c);
cmd.concat(c);
}
它打印出我打字的内容。貌似concat被窃听了。我读过,我发现它是一个内存分配错误或其他什么,但它真的很奇怪。我意识到这取决于我的代码的二进制大小(如果它有大约10.000字节它工作正常,11.000仅与前两个字符一起工作,而且更多不起作用)。
请帮忙。我知道我的代码没有错,我需要帮助解决这个错误。
祝你好运, Mateiaru
答案 0 :(得分:2)
void loop(){
char c;
String cmd = "";
while (Serial.available()) {
c = Serial.read();
Serial.println(c);
cmd.concat(c);
}
}
在该代码中,当一个新字符被发送(并且你已经读取了整个缓冲区)时,你有
Serial.available() = FALSE
所以主循环设置
cmd = ""
你丢失了之前的数据。修复此问题,将cmd
置于主循环之外,并在循环外部使用c
:
char c;
String cmd = "";
void loop(){
while (Serial.available()) {
c = Serial.read();
Serial.println(c);
cmd.concat(c);
}
}