Arduino Serial.read не может добавить в строку

У меня есть этот код:

void setup()
{
analogReference(INTERNAL);
Serial.begin(9600);
AtInit();
SendAt("RE");
xbeeLow = SendAt("SL");
xbeeFirmware = SendAt("VR");
xbeeHardware = SendAt("HV");
SendAt("WR");
closeAt();
}

bool AtInit(){
int loopCount = 0;
leds.setPixelColor(1, amber);
leds.show();
while(1){
delay(1100);
Serial.print("+++");
delay(1100);
String atInitResult = ReadLine( 1000 );
if(atInitResult){
leds.setPixelColor(1, green);
leds.show();
return true;
}
if(loopCount == 3){
leds.setPixelColor(1, red);
leds.show();
return false;
}else{
loopCount += 1;
}
}
}

String ReadLine( unsigned long timeout ){
char inByte;
unsigned long readLineStart = millis();
String response;
delay(timeout);
while(1){
if(Serial.available() > 0){
inByte = Serial.read();
Serial.print(inByte);
if(inByte == '\r'){
response = dataString;
dataString = "";
break;
}
dataString += inByte;
}
}
return response;
}

String SendAt( String command ){
String atResponse;
String atClose;
Serial.println("AT" + command);
atResponse = ReadLine( 500 );
Serial.print(F("*********>"));
Serial.print(atResponse);
Serial.println(F("<*********"));
return atResponse;

}

sendAt функция называет Readline получить данные от xbee в режиме команд AT.

Serial.printс целью отладки.
Вот что я получил на экране моего терминала

+++OK
ATRE
OK
*********>OK<*********
ATSL
40B23B83
*********>40<*********
ATVR
8070
*********><*********
ATHV
2342
*********><*********
ATWR
OK
*********><*********
ATCN
OK

Почему Serial.print сразу после Serial.read() из char сам по себе печатать хороший символ, хотя dataString += inByte кажется, не добавляет char к фактической строке? Кажется, он работает только для первых нескольких команд, после этого он не добавляет больше.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]