2009-08-22 4 views
7

「Symbol」ブランドのバーコードスキャナ(USB)があり、バーコードからスキャンしたデータをアプリケーションに取り込もうとしています。テキストボックスコントロール、もちろん)。「Symbol」ブランドのバーコードスキャナとC#

あなたが何かをスキャンするたびに、それはキーボードのように動作し、フォーカスを持っているもの(つまりメモ帳、単語など)に数字を出力します。

私の質問は、このバーコードスキャンをバックグラウンドで実行し、C#で自分の使用できる変数にどのように置くかです。

これまでのところ私が見つけた唯一のAPIは.NET CF用で、これは のWindowsサービスである必要があります。


基本的に、私はフォーカスを持っている現在のウィンドウに干渉することなく=「123456789から0111」バーコード場合、アプリケーションに特定のキーストロークを送信できるようにしたいです。アプリケーションがバーコードを読み取った後、特定のプログラム(起動してフォーカスを設定)を探し、キーストロークを送信します。私はコード128を使用しています。

+1

なぜWindows **サービスでなければならないのかについて、より多くの情報を教えてもらえますか? –

+0

私はバーコードスキャナから来るデータをすべて監視する必要があるため、Windowsサービスでなければならないと考えていました。基本的には、たとえばバーコード= "123456789-0111"の場合、特定のキーストロークをアプリケーションに送信できるようにしたいと考えています。 –

+0

システムトレイ内にある可能性もあります。 –

答えて

0

スキャナは、HID(ヒューマンインターフェイスデバイス)とエミュレートキーボードとして構成されています。 SymbolのAPIを使用してアクセスするには、現在の通信モードを無効にしてネイティブモードに設定する必要があります。スキャナマニュアルに文書化する必要があります。次に、入力フィールドなしで直接アクセスできます。

PS。 Symbolのスキャナはありませんが、これは多くのデバイスに共通しています。

+0

このアプローチの唯一の問題は、同じスキャナを使用して他のバーコードをスキャンするため、常にアクティブな通信モードに設定する必要があることです。 –

0

本当にバーコードスキャナのAPIに依存します。これはベンダー固有のものです。スキャナのAPIをベンダーから入手する必要があります。サイトで見つけることができない場合は、サポートをメールで送信するだけです.APIを購入する必要があるかもしれません。

+0

これまでに持っていた唯一のAPIはCFです。 –

0

まず..

それはおそらく、実際のハンドヘルドユニットに関連するようになりましたため、.NET CF情報を無視します。キーボードのような操作モードは、古典的には「キーボードウェッジ」と呼ばれます。バーコードシンボルの

セカンド..

どのような使用しようとしていますか?どのような目的のために?または、直接、モル...スキャンしたときにバーコードはどのように見えますか?私はとのインターフェイスに持っていたとき、(彼らは特別先頭と末尾の文字が含まれていますか?)

第三には...過去に

...それが必要でない限り、それは簡単な... APIを避ける保ちます私はデータ入力フォームがKeyPreviewのプロパティを持っており、スキャナーからの入力を検出し、適切なコントロールに(開始文字と末尾の文字を調べることによって)入力する方法を含んでいます。私が扱ったほとんどのスキャナは、スキャンされた入力の始めと終わりを知らせるためにカスタムの文字セットを渡すために(通常はバーコードを介して)プログラム可能でした。私はそれが役に立てば幸い

....

+0

1)コード128 2)目的は病院が特定の画面をすばやくナビゲートすることです。 3)特殊な先頭と末尾の文字を含むようにしたい場合は、私の責任です。各診療所には、私が思い付くバーコードが割り当てられます。 –

+0

あなたのプログラムは、紙の書式やラベルに基づいてデータ入力を行うように見えます。おそらくラボや料金。上記のアプローチがうまくいくと思う。 – CMB

+0

言い換えれば...できるだけシンプルにしてください。 – CMB

2

HIDモードは、最良のあなたの最高になります。

バーコードリーダーをHIDモードにして、サービスがリーダーをキャプチャするようにします。データが入ってきたら、それを見て、それがあなたの特別なバーコードの1つであれば、あなたはその上で行動することができます。

データが特殊バーコードの1つではない場合は、キーボードエミュレーションモードと同じように動作するようにkeydown/keyup windowsメッセージとしてそれらを挿入します。

+0

+1あなたがHIDモードを説明するなら。私は速いGoogleをしたが、ブルートゥースの周りのものを考え出した。それは "ヒューマンインタフェースデバイス"の略ですか? –

+0

はい、HID = Human Interface Deviceです。 –

+0

これは私の通信アプリケーションの1つでこれをどう処理するのかです。 ハンドヘルドスキャナはHIDと同じように表示されるので、Windows API経由でキーストロークを入力して監視するだけです。 – Sk93

2
  1. スキャナをUSBモードにします。これは、通常、マニュアルの一連のバーコードをスキャンするか、またはシンボルから提供されたソフトウェアから印刷して行います。

  2. スキャナを差し込んだり、ドッキングすると、Windowsに接続して更新します。あなたはそのスキャナに固有のアップデートを入手します。スキャナが接続されていないと動作しません。

  3. スキャナーはcomポートにマップする必要があります。これは、私が設定したマシンでは通常com 2でした。

  4. JustinIOをダウンロードしてください。私のスキャナの場合、有用なCOM設定:ボーレート:9600、ByteSize 8、ストップビット:1パリティ:0

  5. 新しいCommPortインスタンスを作成します。


StringBuilder sb; 
byte[] b; 
do 
{ 
    b = commPort.Read(1); 
    sb.Append(Encoding.ASCII.GetChars(b)); 
    Thread.Sleep(20); //symbol is slow... 
} while(b.Length > 0); 

注:のような何かをするスレッドを設定することは、非常に私は実際にあなたがあなたのアプリケーションのためにそれを変更する必要があります使用しているコードからダウンクランチです。

  1. 適切な方法でアプリケーションに文字列を送信します。ここで
+0

コードを正しくフォーマットすることができません。申し訳ありません。 : –

+0

私はあなたのためにそれをフォーマットしようとしましたが、私はそれを動作させることはできません。番号のリストの一部であることと関連している必要があります。 – MusiGenesis

+0

行でそれをハックしましたか? –

0

C#でグローバルなマウスとキーボードのフックを設定する方法を示していCodeProjectのサンプルです:

http://www.codeproject.com/KB/cs/globalhook.aspx

あなたのコンソールアプリケーションにこのコードを追加してから、ちょうどすべてのキーボードを監視することができます入力し、必要な特定のコードを探します。 APIの騒ぎや騒ぎはありません。

関連する問題