我正在使用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 :(得分:1)
问题在于您的代码正在寻找'&gt;'总是看着字符0,你附加到你的字符串,所以在得到第一个非'&gt;'后你永远无法达到打印条件的角色。
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 = "";
}
}
}