USB スキャナーからバーコードを読み取るアプリがあります。バーコードが特定のテキスト ボックスに入力されるとすぐに DB ルックアップを実行したいと考えています。
明らかに、コードを TextChanged イベント ハンドラーに配置しますが、読み取られるバーコードが 41 文字または 43 文字になる可能性があるという小さな問題があります。問題は、どのタイプのコードが入力されているかをどうやって知るかということです。スキャナーは、キーボードから入力されたかのように、フォーカスのあるフィールドにコードを文字列として入力するだけなので、スキャナーにクエリを実行してコードの長さを判断することはできません。
これまでのところ、2つのアプローチを考えてきました。
- 最初の文字を検出し、xx 秒待ってからルックアップを実行します - 完全なコードを入力するのに十分な時間を取ってください
- 41 番目の文字を検出し、0.x 秒待ってからルックアップを実行します。
OK、これらは問題なく動作すると確信していますが、他に雄弁な解決策はありますか?
結論:
いくつかの有用な提案がありますが、Ondrej は私のシナリオの最も簡単な解決策に影響を与えました。43 文字のコードには、すべてのコードで固定されている 2 つの文字があります。これらの 2 つの文字が存在する (または存在しない) ということは、これらの 2 つの文字が存在する場合に待機する必要があることを意味しますが、存在するのは 41 文字のみです。
41 文字コードでは、この特定の位置にこの文字のペアを含めることはできないという疑いを確認する必要があります。これは事実であると確信しています。