Arduino上的意外输出

时间:2013-09-08 00:40:38

标签: c arduino

我正在使用Leonardo,我想在输入“&gt;”时打印一条消息和“&lt;”。 类似于>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);
    }
  }
}

1 个答案:

答案 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 = "";    
        }   
    }   
}