代码之家  ›  专栏  ›  技术社区  ›  E. Zeytinci

我无法从串行端口发送连续数据

  •  0
  • E. Zeytinci  · 技术社区  · 8 年前

    我想从串行端口发送连续数据。但串行端口在发送第一个数据后不接收第二个数据。如果我停止并重新启动它,它工作正常。这是我的代码:

    String inputString="";
    boolean stringComplete=false;
    
    void serialEvent() {
      while(Serial.available()) {
        char inChar=(char) Serial.read();
        inputString+=inChar;
        if(inChar=='\n') {
          stringComplete=true;
        }
      }
    }
    
    void setup() {
      Serial.begin(9600);
      inputString.reserve(200);
      pinMode(12, OUTPUT);
      pinMode(13, OUTPUT);
    }
    
    void loop() {
      serialEvent();
      if(stringComplete) {
        Serial.println(inputString);
        inputString="";
        stringComplete=false;
      }
      if(inputString=="HELLO") {
        digitalWrite(12, HIGH);
        serialEvent();
      } else if(inputString=="WORD") {
        digitalWrite(13, HIGH);
        serialEvent();
      }
    }
    

    https://tinkercad.com/things/6fTYYBc3w0e

    1 回复  |  直到 6 年前
        1
  •  1
  •   imqqmi    8 年前

    您正在比较字符串,而inputString在可以使用之前被设置为空字符串。 将字符串比较放在if(stringInput)块内。此外,您需要在比较中包含换行符。

    void loop() 
    {
       serialEvent();
    
       if(stringComplete)
       {
            Serial.println(inputString);
            if(inputString=="HELLO\n")
            {
               digitalWrite(12,HIGH);
               serialEvent();
            }
            else if(inputString=="WORD\n")
            {
               digitalWrite(13,HIGH);
               serialEvent();
            }
    
            inputString="";
            stringComplete=false;
       }
    }