arduino - 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());
}
}
解决方案
正如您所注意到的,问题是'\n'
. 要获得更可靠的代码,请isspace
在标准库中使用以忽略所有传入的不可打印字符:
char c;
do
{
c = Serial.read();
} while (isspace(c));
然后将输入字符解析为int
.
推荐阅读
- python - Why doesn't the function change it's argument?
- scala - How to pass set of input files(not directory) to spark job and create dataframe on top of those files
- python - How to pull specific columns from a Wikipedia table using python/Beautiful Soup
- python - tkinter - how to bind just control, not control+key?
- python - 从 bash 子进程获取 bash 代码日志
- java - 获取列表
来自输入流 - javascript - I there a function to divide the values in one vector with values in another?
- node.js - Logout with AdonisJS using JWT token
- python - How to use not equal to operator in if condition?
- python - 矩阵元素乘法与移位列