1

USB接続を介したキーボード入力として、タブ(または$ I)で区切られたデータを含むバーコードをスキャンして入力するフォームを持つJavaスイングアプリケーションがあります。断続的に、フォームのテキスト フィールドが正しく入力されず、タブの処理が遅すぎるように見えます。たとえば、バーコードのデータ セットが「abc$Idef」のようなものである場合、期待される出力は、最初のテキスト フィールドに「abc」、2 番目のテキスト フィールドに「def」になります。代わりに、1 番目のテキスト フィールドに 'abcde' があり、2 番目のテキスト フィールドに 'f' がある場合や、1 番目のテキスト フィールドにすべてのデータがあり、2 番目のテキスト フィールドに何もない場合があります。

この問題は、日によって異なる頻度で現れるのを見てきました。今日は良いかもしれませんが、150回の試行ごとに1回しか発生しません. 昨日は、10回に1回の試行で、貧弱だった可能性があります。スキャナーは、パラメーターを切り替えてタブと $I 区切り文字を実装することを除いて、デフォルトの工場設定またはそれに近い設定です。転送速度を遅くすることも試みましたが、イベントの頻度が減少したように見えますが、イベントがなくなるわけではなく、低速化はユーザーのワークフローにとって理想的ではないため、全速にリセットします。

ただし、問題がスキャナー内にあるとは思えません。アプリケーションでは、すべてのテキスト フィールドの検証とデータのバックアップを無効にして、遅延の原因となる可能性のあるカスタム コードを本質的に削除しようとしましたが、断続的な問題は依然として存在します。現在、アプリケーションは JRE 1.5.0_18 を使用して WinXPSP3 で実行されています。スキャナは Symbol モデル ds6707 です。この問題をさらに調査して、問題がどこにあるのかを判断する際に、いくつかのガイダンスを使用できます。

4

1 に答える 1

1

別のスレッドでストリームを読み、完成した単元を に投稿することを検討してくださいEventQueue。これにより、イベントが「順番に…エンキューされたのと同じ順序で」到着することが保証されます。メソッドは「 Event Dispatch Threadで非同期に」実行SwingWorkerされるため、これには便利です。process()

于 2012-04-16T18:02:08.257 に答える