0

我正在使用 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);
    }
  }
}
4

1 回答 1

1

问题是您查找“>”的代码总是查看字符 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 = "";    
        }   
    }   
}   
于 2013-09-08T05:36:53.487 回答