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

时间:2017-07-03 21:39:52

标签: arduino serial-port

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

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 个答案:

答案 0 :(得分:0)

您在比较字符串时,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;
   }
}