C++ c++;raspberry pi 4-在没有输入/验证的情况下获取键盘键输入?
我已经搜索了一段时间,但我没有找到任何方法来获取键盘的输入键,在我的程序中使用它们 语境:我开始着手机器人学和C++,我只想指挥一个马达。 这个想法是“如果我按下向上箭头,电机会转动,如果我按下向下箭头,电机会停止”,就这样,不需要验证什么或类似的东西 我和raspbian在一起,通过VNC(从我真正的计算机控制),实际的代码在终端中执行 我将在稍后讨论如何使其更加复杂 我翻阅了20多页,没有发现任何有用的东西。。。难道没有一个简单的方法来做一些看起来非常有用的事情吗 有些人谈到了conio库,但显然它已经过时了,取而代之的是诅咒/课程,但我没有找到/让任何东西起作用。。。 <>这显然是C代码,不是C++,而且,我真的不明白… 也许是这个?但这对我来说毫无意义(C++初学者) 这里他们说的是“快板”,但显然,它在PI 45上还不起作用。。。也不知道如何安装它 是否有人知道一个简单的小代码,我可以复制过去做这件事,或任何方式?我很震惊,因为没有类似于Windows C++编程的东西,看起来它是如此简单的 我的意思是“Keyboard.GetKeyStates(Key)” 无论如何,我会继续我的研究,但请帮帮我 编辑: 显然,库SDL(SDL2)可以帮助我做到这一点。。。 我试图实现它,但没有任何结果 这是我到目前为止得到的代码(我删除了一个在这里无用的好部分),基本上,它是internet SDL官方网页上的一个副本:C++ c++;raspberry pi 4-在没有输入/验证的情况下获取键盘键输入?,c++,raspberry-pi,keyboard-events,C++,Raspberry Pi,Keyboard Events,我已经搜索了一段时间,但我没有找到任何方法来获取键盘的输入键,在我的程序中使用它们 语境:我开始着手机器人学和C++,我只想指挥一个马达。 这个想法是“如果我按下向上箭头,电机会转动,如果我按下向下箭头,电机会停止”,就这样,不需要验证什么或类似的东西 我和raspbian在一起,通过VNC(从我真正的计算机控制),实际的代码在终端中执行 我将在稍后讨论如何使其更加复杂 我翻阅了20多页,没有发现任何有用的东西。。。难道没有一个简单的方法来做一些看起来非常有用的事情吗 有些人谈到了conio库,
#包括
#包括//Raspberry pi GPIO库
#包括
#包括
#包括
#包含//用于计算时间的库
#包含//用于“此线程睡眠”
#包含//以获取键盘按钮事件
bool RUNNING=true;//用于退出主循环的全局标志
/*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
GPIO引脚定义
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
int SPser=13,SPclk=19,splck=26//定义使用的输出引脚
int光耦=17//定义使用的输入引脚
/*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
SDL定义
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
//无效PrintKeyInfo(SDL_键盘事件*键);
//无效打印修改器(SDLMod mod);
//一些代码
//如果检测到CTRL-C信号,则回调处理程序
作废我的_处理程序(int s){
std::cout如果您在linux上,那么应该使用termios停止缓冲
#包括
无效集\u无\u缓冲区()
{
结构术语;
tcgetattr(0,&术语);
术语c_lflag&=~ICANON;
tcsetattr(0、TCSANOW和term);
}
然后getchar()
要在不输入字符的情况下获取字符如果您在linux上,则应使用termios停止缓冲
#包括
无效集\u无\u缓冲区()
{
结构术语;
tcgetattr(0,&术语);
术语c_lflag&=~ICANON;
tcsetattr(0、TCSANOW和term);
}
然后getchar()
在不进入操作系统的情况下获取字符?窗口系统(如果有的话)?键盘是如何连接的?USB?GPIO?网络?@genpfault我编辑了这个问题:我通过VNC(从我的真实计算机控制)与raspbian在一起,实际代码在终端中执行。如果Pi上运行X,则应能够键入xev
(X-event-monitor)然后按下向上/向下箭头键以获取键盘上使用的键代码。在我的笔记本电脑上,向上箭头是111
,向下箭头是116
,左箭头是113
,右箭头是114
@DavidC.Rankin我不知道X是什么,或者它是否在我的Rpi上运行……它是“本机”吗在它上面,还是必须安装?嗯,我在终端上写了“xev”,我想说安装了X…操作系统?窗口系统(如果有的话)?键盘是如何连接的?USB?GPIO?网络?@genpfault我编辑了这个问题:我和raspbian在一起,通过VNC(从我真正的计算机控制),实际代码在终端中执行。如果Pi上运行X,则应能够键入xev
(X-event-monitor)然后按下向上/向下箭头键以获取键盘上使用的键代码。在我的笔记本电脑上,向上箭头是111
,向下箭头是116
,左箭头是113
,右箭头是114
@DavidC.Rankin我不知道X是什么,或者它是否在我的Rpi上运行……它是“本机”吗我在终端上写了“xev”,我想说X已经安装了…谢谢你的回答:)小问题:假设我有一个持续5秒的“while(1)”循环,“getchar()”在开始的时候,我在2秒后按下一个按钮。5秒后,在下一个循环中会被考虑吗?或者根本不考虑,因为我在读取“getchar”时不再按下按钮?(我不能在周一之前尝试你的代码,我很快会给你奖金;))getchar将等待击键(但没有缓冲区意味着它将在恰好一次击键后返回)。如果希望在后台执行此操作,则需要使用线程。感谢您的回答:)小问题:假设我有一个持续5秒的“while(1)”循环,“getchar()”在开始的时候,我在2秒后按下一个按钮。5秒后,在下一个循环中会被考虑吗?或者根本不考虑,因为我在读取“getchar”时不再按下按钮?(我不能在周一之前尝试你的代码,我很快会给你奖金;))getchar将等待击键(但没有缓冲区意味着它将在恰好一次击键后返回)。如果希望在后台执行此操作,则需要使用线程。