我有这段代码:
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
以AT命令模式从xbee获取数据。
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
似乎没有添加results.show(20, False)
到实际的字符串?它似乎仅适用于前几个命令,之后它不会添加更多。