私は組み込み Linux を初めて使用します。スレッドを使用して USB キーボードを使用したい.スレッドの概念は知っていますが、スレッドの概念を使用してそれを検出する方法を知りたいです。?
3 に答える
正しく理解した場合、組み込みLinuxボードがあり、USBキーボードを接続して、組み込みLinuxボード上のアプリケーションで使用したいですか?これが正しければ、スレッド化で何もする必要はありません。あなたがする必要があるのは、そのキーボード用のドライバをインストールすることです。そのためには、カーネルビルド構成を調べて、USBキーボードドライバー(HIDドライバー)が有効になっているかどうかを確認する必要があります。
非ブロッキング I/O を使用してキーボードを読み取りたくない場合は、ブロッキング読み取りを実行し、入力が利用可能になったときにメイン スレッドにシグナルを送る (またはポーリングできるフラグを設定する) スレッドを使用できます。
ブロッキングに加えて、回線モードのデフォルト設定と競合する必要がある場合があります。
シングル スレッド プログラムで単一文字をポーリングまたは応答するための一般的な選択肢は、ターミナル モードの設定を変更することです。termios、stty などのマニュアル ページを参照してください。ただし、プログラムが終了した場合は、それらを元に戻す必要があります。
もう 1 つのオプションは、ターミナル インフラストラクチャ全体をスキップして、/dev/input/ から入力イベントを直接読み取ることです。または、極端な場合、USB HID ドライバーをスキップして、USB キーボード用の独自のカーネル ドライバーを作成することもできます。
要件に基づいて、次のいずれかを使用できます。
- ブロック I/O
- ノンブロッキング I/O
ノンブロッキング I/O の場合は、マルチスレッド ベースのアプローチを試してください。ブロックされた I/O については、epoll() システム コール ベースのアプローチを試してください。
キーボードを検出する方法については、次を試すことができます。
ファイル /proc/bus/input/devices を使用してデバイスを検出しますが、特定のシステムでは再起動するまで更新されません。
/dev/input/eventN と ioctl() 呼び出しを使用して検出し、イベント ビットを検出します。イベント インターフェイスは、生のイベントをユーザー空間に公開するため、非常に便利です。