2

我正在为机器人编写应用程序。

应用程序所需的 UI 在下面的伪代码中描述:

 while(true){
      if (spacebar is not pressed){
           //do something
      }
      else{
           sleep(1); //wait for a second
      }     
 }

如果我使用 cin 或其他一些控制台输入读取功能,那么它将等待用户按下某些东西。如何确保它不会等待获得任何输入?

我正在使用 Ubuntu。但我不希望它是特定于操作系统的。

这里的答案似乎是特定于操作系统的。

4

2 回答 2

1

终端电平输入

与“标准输入/输出”流概念相比,您所要求的非常接近硬件(按键/按键释放)。所以你的实现必须是特定于操作系统的。话虽如此,要使用的库是 curses[1],它已经存在了很长时间,并且在许多 Un*x 平台上都是标准的。GNU ncurses 风格几乎可以编译所有这些,它是几乎所有 Linux 环境中的标准安装,在默认情况下未安装的地方你可以找到它。它在 Windows (cygwin)、os/2 和一堆嵌入式系统等中也能很好地工作,所以你应该能够使用 curses 编写一个相当可移植的软件来做你想做的事。

于 2013-07-09T15:13:24.650 回答
0

目前还不太清楚你在问什么。在 中if,条件是基于是否输入了空格字符,还是用户当前是否按住空格键?在第一种情况下,您需要类似的东西curses(一个便携式库,它确实在输入每个字符时获取它,没有回显)。其次,我认为没有便携式解决方案。即使是不可移植的,如果您的程序正在从终端窗口(例如 xterm)读取,您可能无法获取它;当您在程序中创建窗口时,此类信息通常仅作为窗口事件出现。

于 2013-07-09T15:09:03.393 回答