美好的一天,
我正在尝试创建一个程序,从Sensors获取方向数据,然后在PID控制算法中使用它来创建相应的PWM信号。我希望能够通过按Enter来停止该程序。我尝试使用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;
}
答案 0 :(得分:1)
您需要一种查询键盘当前状态的方法,C ++本身不提供。在过去,我使用SDL来做这件事。我喜欢SDL,因为它本质上是简单的,并且完全用C语言编写。在SDL wiki上有一个示例detecting keyboard state,它允许您检测按钮是否被按下。
编辑:SDL可以放到Raspbian Pi上。我找到了一个示例设置here