阅读序列:也接收我发送的字符

时间:2017-03-22 09:55:19

标签: c++ arduino arduino-uno

我通过发送和接收文本通过Serial2(arduino mega)进行通信。

95%的时间通信顺利,但我正在阅读的一些文本也包含我发送的文本的一部分。

代码:

void setup (){
  Serial.begin (19200);
  while (!Serial) {
  }
  Serial1.begin(19200);
  Serial2.begin (19200);
}

void loop (){
  currentMillis = millis();
  if(currentMillis > savedMillis + 1000){ 
    Serial2.write("@@geenbatterij##\r\n"); //check batterij
    Serial2.write("@@geensignaal##\r\n");
    savedMillis = millis();
  }
 SerialEvent2zelf();
}

void serialEvent2zelf(){
  if(Serial2.available()>0){
    while (Serial2.available()){
      processIncomingByte(Serial2.read ());
    }
  }
}

void processIncomingByte (const byte inByte){
  static char input_line [MAX_INPUT];
  static unsigned int input_pos = 0;
  switch (inByte){
    case '#':   // end of text
      input_line [input_pos] = 0;  // terminating null byte
      process_data (input_line);
      input_pos = 0;  
      startSignReceived = false;
      break;
  //  case '\r':   // discard carriage return
  //    break;
    case '@':   // begin of text
      startSignReceived = true;
      break;
    default:
      if (input_pos < (MAX_INPUT - 1) && startSignReceived == true)
        input_line [input_pos++] = inByte;
      break;
    }  
  } 

输出(控制台读数):

odr/3.8
rnt/102h6m
as1/28.9
as2/28.8
ls1/0.1
ls2/0.1
bsn/82
kwt/74
wd1/4.7
wd2/0.7
rnt/102h6m
rpm/972
odr/3.7
rnt/102herijrnt/signaalrnt/102h6m   //<-- see here
as1/28.9
as2/28.8
ls1/0.1
ls2/0.1
bsn/82
kwt/74
wd1/4.7
wd2/0.7
rnt/102h6m
rpm/981
odr/3.8
rnt/102h6m
as1/28.9
as2/28.8
ls1/0.1
ls2/0.1

我做错了什么以及如何解决?感谢。

1 个答案:

答案 0 :(得分:0)

你有Serial类的多个实例这一事实不仅有点怀疑,因为我很确定你只使用一个串口。

我建议仅使用第一个实例并完全删除serial1serial2

其他说明:

  • 代码丢失。它很可能包含未定义的行为
  • Maar weinig mensen lezen hier Nederlands。 Het is niet de conventie om Nederlands te mengen met code