- PR -

ハイパースレッディング環境でのバーコード認識

1
投稿者投稿内容
ぱちぱち
会議室デビュー日: 2007/03/24
投稿数: 3
投稿日時: 2007-03-24 02:14
お世話になります。現在、SWTを利用したアプリケーションの開発中なのですが、USB接続のバーコードリーダーを使ってバーコード読み取りを行う処理で、問題を抱えております。

バーコード読み取り時に発生するイベントを、org.eclipse.swt.events.KeyAdapterクラスのkeyPressed(KeyEvent)メソッドを利用して検出し、バーコード認識キャラクタを取得しようとしているのですが、ハイパースレッディング機能が有効であるマシンで実行すると、KeyEventの検出漏れ(20回発生するはずが、19回しか検出しない)や、認識キャラクタの誤認識がときどき(20回のバーコード入力のうち1回程度)発生します。
ハイパースレッディング機能が無効である場合は、100回以上実行しても全て正しく検出しています。(但し、全く誤認識が発生しない訳ではありません)

試しにjava.awt.event.KeyAdapterクラスのkeyPressedメソッドでも実行してみましたが、同様のイベント検出漏れのような事象が発生します。

過去にバーコード入力を必要とするJAVAアプリケーションの開発で、このような事象を経験された方はいらっしゃるでしょうか。もし、解決方法について心当たりがありましたら是非ご教授お願いいたします。

山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-03-24 02:22
バーコードリーダといっても、恐らく PC から見ればキーボードとして認識される機器なんですよね?
だとすると Java 以前の問題ではないでしょうか?

Javaベースでないテキストエディタ等に入力させた場合はどうでしょう?
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2007-03-24 12:03
ハイパースレッド環境では、たぶん入力が速すぎて追いつかないのだろうなぁ・・・とは想像できます。バーコードリーダーのパラメータを変更して対応するのが妥当かと・・・。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2007-03-24 15:24
機種名などは定かではなく、また、ハイパースレッディングではない環境でしたが、以前、PC の USB 端子に PS/2 のキーボードを、変換ケーブルを経由してつないだことがあります。キーボードをゆっくり打つぶんには良いのですが、普通に速く打つと追い付いてくれませんでした。
シフトキーを離した直後にアルファベットのキーを押しても大文字で入力されたり、という感じです。

私の場合、普段は(Java アプリケーションのひとつである) eclipse のエディター使うことが多いのですが、USB - PS/2 の問題と、Java の問題の、複合で問題が顕著になっているのかもしれません。(Java じゃなくて、たとえば Excel だとあまり気にならなかったので。)

お使いの機器は、純粋に USB デバイスだけなのか、それとも内部的に PS/2 のインターフェースを介しているのか、というのが分かると、切り分けにつながるかもしれません。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}
ぱちぱち
会議室デビュー日: 2007/03/24
投稿数: 3
投稿日時: 2007-03-24 21:47
インギ様、甕星様、unibon様、ご返答ありがとうございました。

説明不足でしたが、メモ帳に出力したときはこういった事象は発生しませんでした。また、バーコードリーダーで認識したキャラクタを出力する間隔(時間)を長くする設定も可能なのですが、これを試したときも、やはり誤認識が発生しています。
これらの事象を見ると、Javaの利用の仕方に誤りがあるのかなと感じてしまいます。

キーボードについては考えておりませんでした。直接のキーボード入力についても色々試したいと思います。機器とキーボードの詳細仕様についても、この場に無い為改めて確認したいと思います。


1

スキルアップ/キャリアアップ(JOB@IT)