Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;raspberry pi 4-在没有输入/验证的情况下获取键盘键输入?_C++_Raspberry Pi_Keyboard Events - Fatal编程技术网

C++ c++;raspberry pi 4-在没有输入/验证的情况下获取键盘键输入?

C++ c++;raspberry pi 4-在没有输入/验证的情况下获取键盘键输入?,c++,raspberry-pi,keyboard-events,C++,Raspberry Pi,Keyboard Events,我已经搜索了一段时间,但我没有找到任何方法来获取键盘的输入键,在我的程序中使用它们 语境:我开始着手机器人学和C++,我只想指挥一个马达。 这个想法是“如果我按下向上箭头,电机会转动,如果我按下向下箭头,电机会停止”,就这样,不需要验证什么或类似的东西 我和raspbian在一起,通过VNC(从我真正的计算机控制),实际的代码在终端中执行 我将在稍后讨论如何使其更加复杂 我翻阅了20多页,没有发现任何有用的东西。。。难道没有一个简单的方法来做一些看起来非常有用的事情吗 有些人谈到了conio库,

我已经搜索了一段时间,但我没有找到任何方法来获取键盘的输入键,在我的程序中使用它们

语境:我开始着手机器人学和C++,我只想指挥一个马达。 这个想法是“如果我按下向上箭头,电机会转动,如果我按下向下箭头,电机会停止”,就这样,不需要验证什么或类似的东西

我和raspbian在一起,通过VNC(从我真正的计算机控制),实际的代码在终端中执行

我将在稍后讨论如何使其更加复杂

我翻阅了20多页,没有发现任何有用的东西。。。难道没有一个简单的方法来做一些看起来非常有用的事情吗

有些人谈到了conio库,但显然它已经过时了,取而代之的是诅咒/课程,但我没有找到/让任何东西起作用。。。

<>这显然是C代码,不是C++,而且,我真的不明白…

也许是这个?但这对我来说毫无意义(C++初学者)

这里他们说的是“快板”,但显然,它在PI 45上还不起作用。。。也不知道如何安装它

是否有人知道一个简单的小代码,我可以复制过去做这件事,或任何方式?我很震惊,因为没有类似于Windows C++编程的东西,看起来它是如此简单的

我的意思是“Keyboard.GetKeyStates(Key)”

无论如何,我会继续我的研究,但请帮帮我

编辑:

显然,库SDL(SDL2)可以帮助我做到这一点。。。 我试图实现它,但没有任何结果

这是我到目前为止得到的代码(我删除了一个在这里无用的好部分),基本上,它是internet SDL官方网页上的一个副本:

#包括
#包括//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将等待击键(但没有缓冲区意味着它将在恰好一次击键后返回)。如果希望在后台执行此操作,则需要使用线程。