Arduino串行输入值处理

时间:2019-07-17 08:56:40

标签: arduino

如果在 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());
  }
}

2 个答案:

答案 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