2

Symbol LS2208 バーコード スキャナーがあり、Linux ボックス (Kubuntu 8.10 Intrepid Ibex) で正常に動作します。バーコードをスキャンするたびに、スキャナー (USB ポートに接続) は読み取り値をテキスト キャレットがある場所に送信します。すべての読み取り値をスキャナーからアプリケーションの特定のウィジェット (つまり、テキスト編集コントロール) にリダイレクトしたいと考えています。どうすればいいですか?私は Qt GUI ライブラリで C++ を使用していますが、サンプル コードは任意の言語または GUI ライブラリで歓迎されています。

4

3 に答える 3

4

ほとんどのバーコード スキャナーはキーボード ウェッジとしても知られているため、これは注意が必要です。これらはキーボードとして機能し、イベント ストリームにキーを押し込んで、できるだけキーボードと区別がつかないようにします。これにより、最大の互換性が実現します。

多くの USB バーコード スキャナーは、自身を HID エンドポイントとして公開しており、すべての意図と目的のために、それらはキーボードです。

試してみることができることはたくさんあります。多くのスキャナは、バーコード データの前後にプレフィックスとサフィックスを吐き出すように構成できます。それをテストできる場合は、文字列を適切な場所に送信するだけです。これは、スキャナをメタプログラミングする必要があるという点で好ましくありません。通常、これはバーコードの特別なセットで行われます。 スキャナのマニュアルへのリンクは次のとおりです。249 ページには、プレフィックスとサフィックスをメタプログラミングするためのバーコードがあります。

HID イベントのクライアントになり、必要な場所にスキャナー イベントをリダイレクトする方法を理解したい場合があります。LINUXでこれをやろうとしたことはありません。Windows と OS 9 時代の Mac の両方で苦痛です (最後に USB で広範囲に遊んだとき)。

于 2009-05-15T18:44:18.940 に答える
2

答えはわかりませんが、ここにあなたの選択肢が何であるかを知るためのいくつかの提案があります:

  1. QCoreApplication :: instance()にイベントフィルターをインストールします(またはQCoreApplication :: notify()を再実装します)
  2. イベントフィルターハンドラーで、各イベントを出力して、役立つものを探します。

    void eventFilter(QObject *obj, QEvent *evt) {
        qDebug() << obj << evt;
    }
    
  3. デバッグ出力を調べて、スキャナーによってトリガーされるイベントを判別します。

qDebug()は事実上すべてのタイプを理解し、それがキーボードイベントとして入ってくるのか他の何かとして入ってくるのかを判断できる妥当な出力を提供するはずです。

于 2009-05-15T17:33:06.630 に答える