我通过发送和接收文本通过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
我做错了什么以及如何解决?感谢。
答案 0 :(得分:0)
你有Serial
类的多个实例这一事实不仅有点怀疑,因为我很确定你只使用一个串口。
我建议仅使用第一个实例并完全删除serial1
和serial2
。
其他说明: