6

キーボードウェッジマグカードリーダーからの入力を受け取るC#POS(販売時点情報管理)システムを作成しています。これは、磁気ストライプから読み取ったデータが、キーボードですばやく入力されたかのように入力されることを意味します。現在、私はKeyPressイベントにアタッチし、カードスワイプセンチネル文字を含む一連の非常に高速なキープレスを探すことでこれを処理しています。

この種の入力を処理するためのより良い方法はありますか?

編集:デバイスは単にデータをキーストロークとして表示し、他のドライバーを介してインターフェイスしません。また、これらのタイプのデバイスを幅広く使用しているため、使用されているウェッジの特定のモデルに関係なく、メソッドが機能するのが理想的です。ただし、他に選択肢がない場合は、やらなければなりません。

4

5 に答える 5

10

できることの1つは、文字列の前後に1つまたは複数のエスケープ文字が表示されるようにウェッジリーダーを構成できるようにすることです。これらのエスケープ文字を使用して、マグカード入力を取得しようとしている(または取得したばかり)ことを認識します。

これと同じ手法がバーコードリーダーデバイスで使用されているため、アプリケーションはデバイスからのデータ入力にフォーカスを合わせたり処理したりすることができます。

このアプローチの欠点は、外部デバイスを適切に構成する必要があることです。これは展開の問題である可能性があります。

これは、デバイスが単にデータをキーストロークとして表示し、他のドライバーを介してインターフェイスしないことを前提としています。

于 2008-09-03T19:59:42.853 に答える
3

デバイスのハードウェア ID が事前にわかっている場合は、Raw Input API を使用することもできます。私は最近これについてブログを書きました。ばかげているかもしれませんが、私の要件は満たされました。私の場合の主な目標は、パレット上のアイテムをスキャンするために誰かがうっかり何かにぶつかったためにアプリケーションがフォーカスを失った場合でも、入力を受け取ることができるようにすることでした。第 2 の目標は、センチネル キャラクターを追加できなかったことです。これは、スキャン ガンで使用されている既存のサードパーティ製アプリケーションが機能しなくなるためです。

ただし、アプリケーションのメインフォームを介して、KeyPressアタッチまたは低レベルのキーボードフックの両方を介して、センチネルキャラクターメソッドを以前に実行しました。それがあなたの要件を満たしている場合、その方法を使用する方がはるかに簡単で簡単であることは間違いありません.SetWindowsHookEx()KeyPreview

于 2009-02-26T05:59:17.443 に答える
2

カードがデータを送信する速度に注意してください。ワイヤレスバーコードスキャナーがあり、アプリケーションが処理できるようにキーボードでキーストロークを何度もスローします。

また、ソフトウェアを他の地域に配布している場合は、キーストロークが異なる場合があります。たとえば、スペイン(フランスの場合もあると思います)では、キーボードのトップラインは! "£$%^&()とは対照的です。 USA / UK 1234567890、およびカードリーダーがusa / ukに設定されている場合、ウェッジは押されたキーをエミュレートするだけで、ウィンドウがそれを異なる方法で解釈するため、1234567890の代わりに! "£$%^&()を送信します。それはあなたの問題です。

于 2008-09-03T20:13:06.097 に答える
1

jttraino のアイデアにもう 1 票。USB や RS232 だけでなく、キーボード ウェッジをサポートする必要がある POS システムのカード リーダーや小切手リーダーについても、ほぼ同じことを行います。

基本的には、キーボードから来る可能性が低い文字の短いシーケンスを選択し、メッセージ処理ループをプログラムして、これらの文字が到着するのを確認します。パターンに一致する文字の完全なストリームを取得した場合、指定された「終了」シーケンスに到達するまで、または着信シーケンスがエラーであると判断するまで、残りの入力をデコードできます。編集マスクやさまざまな画面の動作などを考慮して、通常のキーボードからアプリに入力するのが難しい、または不可能な文字列を選択します。

良い出発点はチルダプリング (~!) のようなものです。これらの文字は、誰の個人情報にも表示される可能性が低く、メモなどのテキストに一緒に表示される必要がある可能性も低いためです。:-)

欠点は、jttraino が言ったとおり、おそらく各リーダー デバイス自体を構成/プログラムする必要があることです。一部のメーカーは、これをかなり簡単に行うことができます。どのキットを使用していますか? マグテック?ウェルチ・アリン?

于 2008-09-03T23:40:25.913 に答える
0

私は@jttrainoのアイデアを2番目にしています。

これは、バースキャン/コードリーダーやその他のプラグアンドプレイ(PnP)デバイスを利用する方法です。以前の課題では、同じ手法を使用して1Dおよび2Dバーコードスキャナーをいくつか構成しました。

于 2008-09-03T20:07:05.253 に答える