2

ロボット用のアプリケーションを書いています。

アプリケーションに必要な UI は、以下の擬似コードで説明されています。

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

cin またはその他のコンソール入力読み取り機能を使用すると、ユーザーが何かを押すのを待ちます。入力を待機しないようにするにはどうすればよいですか?

私はUbuntuを使用しています。しかし、OS固有にしたくありません。

ここでの回答は OS 固有のようです。

4

2 に答える 2

1

端子レベル入力

あなたが求めているのは、「標準の入力/出力」ストリームの概念と比較して、ハードウェア (キーを押す/キーを離す) にかなり近いものです。したがって、実装は OS 固有でなければなりません。使用するライブラリは 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 に答える