”和“my_message 0) { char inChar = Serial.read(); txtMsg += inChar; -6ren">
gpt4 book ai didi

c - Arduino 上的意外输出

转载 作者:行者123 更新时间:2023-11-30 15:46:02 24 4
gpt4 key购买 nike

我正在使用 Leonardo,我想在输入“">”和“<”时打印一条消息。类似 >my_message< .

我有以下代码,但它没有像我预期的那样工作(什么也没有发生)。我该如何解决这个问题或者有更好的方法吗?

String txtMsg = ""; // a string for incoming text

void setup() {
Serial.begin(9600);
while (!Serial); // wait for serial port to connect. Needed for Leonardo only
}

void loop() {
// add any incoming characters to the String:
while (Serial.available() > 0) {
char inChar = Serial.read();
txtMsg += inChar;

char StartDelimiter = txtMsg.charAt(0);
int endDel = txtMsg.length() - 1;
char EndDelimiter = txtMsg.charAt(endDel);

if (StartDelimiter == '>' && EndDelimiter == '<') {
Serial.println(txtMsg);
}
}
}

最佳答案

问题在于,查找“>”的代码始终查看字符 0,并且您正在附加到字符串,因此在获得第一个非“>”字符后,您永远无法达到要打印的条件。

String txtMsg = ""; // a string for incoming text

void setup() {
Serial.begin(9600);
while (!Serial); // wait for serial port to connect. Needed for Leonardo only
}

void loop() {
// add any incoming characters to the String:
int got_start = 0;
while (Serial.available() > 0) {
char inChar = Serial.read();
if (inChar == '>' && !got_start) {
got_start = 1;
}
if (got_start) {
txtMsg += inChar;
}
if (inChar == '<' && got_start) {
got_start = 0;
Serial.println(txtMsg);
txtMsg = "";
}
}
}

关于c - Arduino 上的意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18679274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com