ここで私の問題に関する良い Q/A を見つけましたが、正しいものを見つけることができませんでした。
バーコードを読み取り、スキャンしたコードをキーボード入力として送信するバーコード リーダーがあります。大丈夫です 簡単に入力をキャッチできます
browser.addKeyListener(new KeyAdapter() {
@Override public void keyPressed(KeyEvent e) {
if(e.keyCode >=48 && e.keyCode <=57) {
System.out.println("number caught");
}
}
});
しかし、アプリケーションにはさらに多くの入力があるため、それがバーコード リーダーまたはキーボードのどちらで送信されているかを知る必要があります。「シーケンス」読み取りの長さを検証するコードにタイマーを追加することで実現できると思います。
私はそれを理解できません(つまり、その背後にあるロジックを意味します)、ロジックの一部が欠けています。
- ユーザーが何らかの情報を入力しています (英数字)
- ユーザーはバーコードリーダーを使用してバーコードを読み取りたい
keyListener がトリガーされた後など、タイマーを試し
if(System.currentTimeMillis() - lastPressProcessed ??? 500) {
ましたが、何かが足りないと思います。
補足:
USB バーコードはコードを高速に読み取るため、キーストロークが非常に高速にエミュレートされます。バーコード全体が約 1 秒 + キャリー/r/n
(enter
押される) で書き込まれます。
sidenote2:バーコードは長さが異なるため、短時間で長さを読み取ることができず、ユーザー入力かバーコード入力かを判断できません (最大読み取り数は 13 +enter
です)。
sidenote3:「バックグラウンド」で実行しようとしているバーコードの入力フィールドがありません。
トピックに関するロジック/疑似コードの提案を求めています。
ありがとうございました。
編集
深く考えた後、私は解決策を見つけました。この Q は、これが使用可能であると思われる別のユーザーのためにここに保持します。
ソリューション -- 回答に移動 + 編集