String inputString="";boolean stringComplete=false;//用于判断数据是否读取完成;void setup() { Serial.begin(9600);//初始化串行接口; inputString.reserve(200);//保留200字节; }void loop() { if(stringComplete)//判断是否有数据输入; { stringComplete=false; Serial.println((String(calculate()));//打印结果 }}float calculate(){ char case_deal; float a,b,result,location; String tmp; inputString.trim();//去掉回车; Serial.print(inputString+'='); //运算符号判断 if((location=(inputString.indexOf('+')))>0) { case_deal=1; } else if((location=(inputString.indexOf('-')))>0) {case_deal=2; } else if((location=(inputString.indexOf('*')))>0) { case_deal=3; } else if((location=(inputString.indexOf('/')))>0) { case_deal=4; } else {Serial.println("error");//错误处理; return -1; } tmp=inputString.substring(0,location); a=tmp.atof(); tmp=inputString.substring(location+1);// b=tmp.atof();//将字符串转换成数字; switch(case_deal)//运算处理; { case 1: result=a+b; break; case 2: result=a-b; break; case 3: result=a*b; break; case 4: result=a/b; break; default: result=-1; } inputString="";//输入清空,不然下次读入出错; return result;} void serialEvent()//只有在串口接收缓存器中有数据输入时才会进入;{ while(Serial.available())//返回串口缓冲区中当前剩余的字符个数,用这个函数来判断串口的缓冲区有无数据; { char inChar=(char)Serial.read();//从串口的缓冲区取出并读取一个byte的数据; inputString+=inChar;//字符串处理函数 if(inChar=='\n') { stringComplete=true; } }}哪里有错啊 无法编译