如何在不暂停循环的情况下使用字符输入停止循环
How to stop loop using character input without pausing loop
你好,
我正试图创建一个程序,从传感器获得方位数据,然后在PID控制算法中使用该数据来创建相应的PWM信号。我希望能够通过按下回车键来停止程序。我尝试使用opencv的waitKey();但是它不接受我的键盘输入。我也试过cin.get();但它暂停了我的循环,这就产生了一个问题。一旦四旋翼机改变方向,我的pwm就不会被刷新。我试着研究其他方法,但我没能让它们发挥作用。下面是我使用上面提到的两种方法编写的代码示例。
使用cin.get():
using namespace std;
int main(void){
while(1){
/* get orientation data */
/* output corresponding pwm */
//Press enter to stop loop
if(cin.get() == 'n'){
/* Stop Pwm */
break;
}
}
return 0;
}
使用waitKey();
using namespace std;
using namespace cv;
int main(void){
while(1){
/* get orientation data */
/* output corresponding pwm */
//Press ESC to stop loop
int key = waitKey(33){
if(key == 27){
/* Stop Pwm */
break;
}
}
return 0;
}
您需要一种查询键盘当前状态的方法,而C++本身并没有提供这种方法。在过去,我曾使用SDL来做这件事。我喜欢SDL,因为它本质上很简单,而且完全是用C编写的。SDL wiki上有一个例子演示了检测键盘状态,可以检测按钮是否被按下。
编辑:SDL可以放在Raspbian Pi上。我在这里找到了一个示例设置
相关文章:
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 如何忽略第一个字符输入后的所有内容
- 使用单个变量对字符输入进行计数
- :CIN 不断打印用户在每次循环后输入的内容
- 确定用户字符输入 C++ 的结束
- 将单个字符串/字符输入串行监视器
- 循环直到输入特定字符 (C++)
- 虽然循环在输入方面表现得很奇怪
- need else 参数只出现一次,无论在循环中输入多少字符串
- 如何将字符输入限制为仅获取一个字符串"cin"
- C++:使用 fgets() 读取字符输入时出错
- 在循环时输入特定的角色
- 在我的IF-ELSE循环中输入错误
- 如何拒绝 cin 中的字符输入并定义最小和最大整数值
- C++ 字符输入仅输出第一个字母
- 限制 2D 数组中的字符输入
- 循环直到整数输入在所需范围内无法处理非数字字符输入
- 无限 while 循环 - 字符关闭不起作用C++
- 如何保持循环直到输入非整数
- 如何在不暂停循环的情况下使用字符输入停止循环