如果在 Arduino串行输入中输入 M ,则必须等待在相应的if语句中接收新值,但是if语句中的内容将无需等待即可执行。
void Mouse_control(int i){
Serial.print(i);
if( i ==1){
delay(5000);
Mouse.press(MOUSE_LEFT);
delay(100);
Mouse.release(MOUSE_LEFT);
delay(200);
}
}
void loop() {
// check for incoming serial data:
while (Serial.available() == 0) {}
char inChar = Serial.read();
// read incoming serial data:
if(inChar == 'M'){
while (Serial.available() == 0) {}
Mouse_control(Serial.parseInt());
}
}
答案 0 :(得分:0)
我从评论中得到了提示,并且能够解决问题。 问题在于处理\ n,这需要在输入处进行处理。
String char_process()
{
while(Serial.available()==0){}
String C;
String str = Serial.readStringUntil('\n');
C=str[0];
return C;
}
答案 1 :(得分:0)
您注意到,问题是'\n'
。要获得更可靠的代码,请在标准库中使用isspace
忽略所有传入的不可打印字符:
char c;
do
{
c = Serial.read();
} while (isspace(c));
然后将输入字符解析为int
。