バーコードリーダーのエイポック
バーコードリーダー,QRコードリーダーの販売会社
バーコードリーダーについて
初心者のよくある質問。全般的な質問。
質問
VBAなどでアプリケーションソフトを設計する場合のソースコード(サンプル)はありますか
回答
ソースコードは提供しておりません。理由は特別なソースコードやAPIが不要なためです。以下、アプリケーションの動作とバーコードリーダーからのデータ入力とアプリケーションの動作についての参考を示します。
バーコードリーダーが出力するデータ
USBキーボードインターフェースとPS/2キーボードインターフェースのバーコードリーダーは接続したコンピュータのBIOSおよびOSからはキーボードデバイスとして認識されます。バーコードリーダーが出力するデータはキーボードのキーボード入力データをエミュレーションしたものです。
プリフィックスとサフィックスについて
バーコードリーダーは、バーコードデータ以外に、バーコードデータの前後にASCIIの文字キャラクタやキーボードのファンクションキー(EnterやTab)を自動的に付加して先頭から順番に出力することができます。 バーコードデータの前に付加する文字キャラクタやファンクションキーをプリフィックス(Prefix)、後に付加する文字キャラクタやファンクションキーをサフィックス(Suffix)と呼びます。
プリフィックスやサフィックスの設定方法
説明書のバーコードメニューを使用してプリフィックスとサフィックスの文字キャラクタやファンクションキーを設定します。
入力したデータからプログラムを実行するには
入力したデータからプログラム(イベント、アクション、マクロ)を実行するにはバーコードリーダーが出力するプリフィックスやサフィックスに設定されたバーコードデータ以外のキャラクタであるファンクションキー(Enter、Tabなど)の押下を利用します。
出力フォーマット
バーコードデータおよびプリフィックス、サフィックスの出力フォーマット、設定可能なキャラクタ、データ数(桁数)はバーコードリーダーの機種によって異なります。次にCCDタッチバーコードリーダーAC-700Uの例を示します。
AC-700Uの例
見方:左が出力(入力)の先頭データ
プリフィックス | バーコードデータ | サフィックス | 後置文字(ポスタンブル) | |
---|---|---|---|---|
説明 | バーコードリーダーの機能設定によって付加するキャラクタ 初期設定では無し |
読み取ったバーコードのキャラクタ | バーコードリーダーの機能設定によって付加するキャラクタ 初期設定では無し |
バーコードリーダーの機能設定によって付加するキャラクタ 初期設定ではENTERが設定 |
設定内容 | キーボードで入力可能なキー 文字キャラクタ ファンクションキー |
キーボードで入力可能なキー 文字キャラクタ ファンクションキー |
ENTER TAB など |
|
実例 | AB(文字など) | 4912345678904 | "Ctrl+" "S" | ENTER |
備考:AC-700はプリフィックスとサフィックス以外にプリアンブル(前置文字)とポスタンブル(後置文字)という設定があります。
Accessでバーコード入力設計の例
操作する内容
フォームのテキストボックスにバーコードのデータを入力し、マクロ(アクション)を実行する。本文は参考として紹介するものです。 詳しくは市販のの解説書などをご覧下さい。
方法
"AutoKeysマクロ"で特定のキーを押下したときにアクションを実行するように設計します。"AutoKeysマクロ"はAccessがサポートする特別なマクロです。マクログループ名を"AutoKeys"として作成し、"マクロ名"にショートカットキーを指定します。(参考:Accessではキーボードの"Ctrl"を"^"(アクサンシルコンフレックス)で表します"Ctrl+S"を指定する場合は"^S"と指定します)。アクションと引数を指定するとショートカットを押下したときにマクロが実行されます。
例
Accessのフォームでの例。テキストボックスにバーコードのデータ(文字キャラクタ)を入力した後、"Ctrl+S"を押下するとアクションが実行されるようにマクロを設計した場合。
|
注意
VBAでのイベント発生のためのキーイベントの記述は推奨されません。
例
KeyDown/KeyPress/KeyUp
理由
バーコードリーダーが出力するデータは、1キャラクタごとにキーを押下しているためです。例えば、10桁のバーコードを入力したとき、1桁ごとにキーイベントが発生してしまいます。
VisualBasicでの例
方法
フォーム上でフォーカスを取得したテキスト入力可能なコントロールに仮想キー(ENTERやTABなど)の押下によるイベント発生のコードを記述します。多くの場合ではキーを押下した後にキーを離すコードも記述します。
本文は参考として紹介するものです。 詳しくは市販のの解説書などをご覧下さい。
例
//"ENTER"を押下する
keybd_event(VK_RETURN, 0, 0, 0);
//"ENTER"を離す
keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
注意
OSやアプリケーションを実装するマシン(コンピュータ)によってイベントが無効になったりタイミングの遅れが発生することがあります。コンピュータの処理遅延によってイベント実行が失敗した場合、Sleep関数でプログラムを一時停止(ミリ秒単位)させると正常に実行されることがあります。
例
Sleep(50);