首先说明下问题,我从串口接收一个字符串后,用equals比较相同的时候发现失败了,原样输出接收到的字符串发现和我比较的一样,后来输出了一下长度发现了问题所在
我在串口输入了一个“1234”的字符串,输出的出来的长度却是5,很显然从串口接收的字符串会在最后添加一个转义字符或者制表符之类的(这里没有去深入研究)
解决方案:删除最后一个字符
加个13号串口点灯的代码,一看就懂
void setup() {
pinMode(13,OUTPUT);
Serial.begin(9600);
Serial.println("Serial Begin");
}
void loop() {
String str="";
while(Serial.available()){//接受字符串
char c=Serial.read();
if(c=='\n')
break;
str+=c;
delay(2);
}
if(str.length()!=0){
str=str.substring(0,str.length()-1);//截取字符串,舍弃最后一位
Serial.println("str:"+str);//打印字符串
if(str.equals("high")){//比较判断
digitalWrite(13,HIGH);
Serial.println("HIGH");
}else if(str.equals("low")){
digitalWrite(13,LOW);
Serial.println("LOW");
}
}
}