以下、本発明の実施の形態について、図面を参照しながら説明する。なお、図中、同一または相当部分については同一の参照符号を付してその説明を援用する。
図1は、本発明の実施の形態によるリモートバーコードリーダシステムの全体構成を示す図である。図1を参照して、このリモートバーコードリーダシステムは、ホストコンピュータ(「センタサーバ」と呼ぶこともある。)7及び複数のバーコードリーダ1(図1では、1つのバーコードリーダ1のみを記載)を備える。なお、これらのバーコードリーダ1は、本システム専用である。
ここで、バーコードとは、バーコード情報及びバーコードパターンを包括した表現であって、これらを厳密に区別する必要のないときは、単にバーコードなる用語を使用する。別の観点から、バーコードとは、物(物品・不動産などの有体物、情報(映像、音声、プログラム、データを含む。)・サービスなどの無体物、商品、人・動物などの生物を含む。)、その他の何らかの手段により識別可能なものに割り当てられたコードのことである。
バーコード情報とは、数字、文字、及び記号等のキャラクタ列を意味する。バーコードパターンとは、バーコード情報を黒色バーと白色スペースとの組み合わせにより表現したパターンを意味する。なお、バーコード、バーコード情報、及びバーコードパターンには、同じ参照符合「13」を付する。
さて、バーコードリーダ1は、バーコードパターン13をスキャンして、バーコードパターン13のデコード結果、つまり、バーコード情報13と、当該バーコードリーダ1に固有に割り当てられた識別情報(以下、「ペンID」と呼ぶ。)と、を端末3に送信する。
端末3は、バーコードリーダ1から受信したペンID及びバーコード情報13を、ネットワーク(例えば、インターネット、LAN等)5を介して、ホストコンピュータ7に送信する。
ホストコンピュータ7は、所定のアルゴリズムに従って、受信したペンIDをデコードし、当該ペンIDに適合するCGI(Common Gateway Interface)9−m(mは整数)を選択する。なお、図中、「M」は、CGIの総数から1を減算した値である。そして、ホストコンピュータ7は、選択したCGI9−mに、受信したバーコード情報13を送信する。なお、CGI9−mは、ネットワーク9上に配置することもできるし、ホストコンピュータ7に配置することもできる。
バーコード情報13を受け取ったCGI9−mは、そのバーコード情報13に応じた情報処理を実行する。この場合の具体的な処理は、CGI9−mの運営事業者等が任意かつ自由に企画設計するものであり、本リモートバーコードリーダシステムの関与するところではない。
次に、図1のバーコードリーダ1について具体例を挙げながら詳細に説明する。
図2(a)は、図1のバーコードリーダ1の一例を示す外観斜視図である。図2(b)は、図2(a)のバーコードリーダ1の電気的構成を示す図である。図2(c)は、図2(b)のMCU23に内蔵されたROM27に格納されたプログラム及びデータの概念図である。
図2(a)を参照して、このバーコードリーダ1は、ペン型のバーコードリーダである。図2(b)を参照して、バーコードリーダ1は、スキャナ21、MCU23及び通信装置25を有する。スキャナ21は、バーコードパターン13を光学的に読み込み、バーとスペースを電気信号に変換する(スキャン)。スキャナ21からの、バーコードパターン13に応じた電気信号は、MCU23に与えられる。
MCU23は、CPU(図示せず)、RAM(図示せず)、A/Dコンバータ、及び図2(c)に示すROM27等を内蔵している。ROM27には、制御プログラム33、キーボードデータ形式のホストコンピュータ7のアドレス(ホストアドレスと呼ぶこともある。)35、キーボードデータ形式の端末3へのコマンド37、キーボードデータ形式の識別情報(ペンID)39、並びにその他必要なプログラム及びデータが格納される。なお、例えば、アドレス35は、ホストコンピュータ7のURL(Uniform Resource Locator)である。
コマンド37は、端末3に対して、ブラウザを起動し、アドレス35が示すホストコンピュータ7へアクセスすることを指示するコマンドである。例えば、OS(Operating System)がWindows(登録商標)の場合、Windows98以降において、コマンド37は、キーボードのGUI(Graphical User Interface)キー+Rキーに相当するキーボードデータである。このコマンド37により、Windowsでは、ブラウザ(Internet Explorer)が起動する。つまり、このコマンド37は、OSであるWindowsにおいて予め用意されているものである。なお、WindowsのGUIキーは、通称、Windowsキーと呼ばれるものである。Windowsのようにシェアが大きいOSに対するコマンド37をバーコードリーダ1に格納し出力するので、簡易に、つまり、バーコードリーダ1を端末3に接続するだけで、大部分の端末3を本システムのために利用できる。このため、バーコードリーダ1は、複数のコマンドを予め格納し、端末3ごとにOSを認識して、そのOSに応じたコマンドを選択して使用するといった処理が不要になる。
ペンID39は、バーコードリーダ1を識別するために割り当てられたユニークなコードである。
MCU23は、制御プログラム33を実行する。それによって、MCU23は、バーコードパターン13に応じた電気信号を解読して、バーコード情報13を取得する。そして、MCU23は、キーボードデータ形式に変換したバーコード情報13、並びに、ROM27に格納されたキーボードデータ形式のコマンド37、ホストアドレス35、及びペンID39を、通信装置25に与える。
通信装置25は、例えば、USBコントローラ等であり、MCU23から受け取ったキーボードデータ形式の出力用データ(コマンド37、ホストアドレス35、バーコード情報13、及びペンID39)を端末3に送信する。すると、端末3は、受信したコマンド37に応答して、受信したホストアドレス35に基づき、受信したバーコード情報13及びペンID39をネットワーク5を介してホストコンピュータ7へ送信する。
図3は、図2(b)のMCU23が行う処理の流れの一例を示すフローチャートである。図3を参照して、ステップS51にて、バーコードリーダ1のMCU23は、ユーザの操作に応答して、バーコードパターン13をスキャンする。ステップS53にて、MCU23は、周知のバーコード解読手法に基づいて、バーコードパターン13を解読し、バーコード情報13を取得する。ステップS55にて、MCU23は、バーコード情報13(例えば、「4560256580016」)、ホストアドレス35(例えば、「www.ssd.co.jp」)、及びペンID39(例えば、「15555」)から、出力用データ(例えば、「www.ssd.co.jp/?bc=4560256580016&sn=15555」)を作成する。
ステップS57にて、MCU23は、現在のモードを確認し、第1モードであればステップS59に進み、第2モードであればステップS63に進む。第1モードは、端末3に本システムのためのミドルウェアがインストールされていない場合、又は、インストールされていても起動していない場合のモードである。第2モードは、端末3に本システムのためのミドルウェアがインストールされ起動している場合のモードである。
なお、バーコードリーダ1のデフォルトのモードは、第1モードである。後述のように、端末3でミドルウェアが起動している場合に、そのミドルウェアによって、第2モードに切り替えられる。
さて、第1モードでは、ステップS59にて、MCU23は、ステップS55で作成した出力用データにコマンド37を付加する。そして、ステップS61にて、MCU23は、コマンド37を付加した出力用データを、キーボードデータとして、第1インタフェースから端末3へ送信する。第1インタフェースは、第1モードのときの端末3とのインタフェースである。
一方、第2モードでは、ステップS63にて、MCU23は、ステップS55で作成した出力用データを、キーボードデータとして、第2インタフェースから端末3へ送信する。第2インタフェースは、第2モードのときの端末3とのインタフェースである。
次に、バーコードリーダ1から出力用データを受信した端末3での処理を説明する。
図4(a)は、図3のステップS61からデータを受信した端末3による処理の流れの一例を示すフローチャートである。図4(a)を参照して、図3のステップS61でMCU23が出力用データを送信すると、ステップS81にて、端末3の汎用キーボードドライバは、その出力用データをバーコードリーダ1の第1モードのインタフェースから受信する。そして、ステップS83にて、端末3のOSは、受信した出力用データに含まれるコマンド37によって、受信した出力用データに含まれるホストアドレス35、ペンID39及びバーコード13を引数として、端末3のブラウザを起動する。すると、ステップS85にて、起動したブラウザは、受け取ったホストアドレス35に基づき、ホストコンピュータ7にアクセスして、ペンID39及びバーコード13をホストコンピュータ7に送信する。
さて、図4(b)は、図3のステップS63からデータを受信した端末3による処理の流れの一例を示すフローチャートである。なお、ミドルウェアは起動しているものとする。図4(b)を参照して、図3のステップS63でMCU23が出力用データを送信すると、ステップS91にて、端末3のHID(Human Interface Device)準拠ドライバは、その出力用データをバーコードリーダ1の第2モードのインタフェースから受信する。そして、ステップS93にて、端末3のミドルウェアは、HID準拠ドライバから出力用データを受信する。ステップS95にて、ミドルウェアは、受信した出力用データに含まれるホストアドレス35、ペンID39及びバーコード13を引数として、端末3のブラウザを起動する。すると、ステップS97にて、起動したブラウザは、受け取ったホストアドレス35に基づき、ホストコンピュータ7にアクセスして、ペンID39及びバーコード13をホストコンピュータ7に送信する。
なお、上記例において、バーコードリーダ1が送信するホストアドレス35には、プロトコル「http://」が付加されていないので、図4(a)及び図4(b)の処理では、端末3のブラウザが、これをホストアドレス35に付加する。また、図4(a)及び図4(b)において、ブラウザが既に起動している場合は、起動は行われない。
次に、端末3にインストールされたミドルウェアの処理をもう少し詳しく説明する。
図5は、ミドルウェアによる処理の流れの一例を示すフローチャートである。なお、ミドルウェアが既に起動しているものとする。図5を参照して、端末3が起動すると、ステップS121にて、ミドルウェアは、HID準拠ドライバがバーコードリーダ1を検出したか否かを確認し、検出していない場合ステップS121に戻り、検出した場合ステップS123に進む。
ステップS123にて、ミドルウェアは、HID準拠ドライバを介して、バーコードリーダ1のモードを第2モードに切り替える。なお、バーコードリーダ1のデフォルトのモードは、第1モードである。ステップS125にて、ミドルウェアは、HID準拠ドライバがバーコードリーダ1の第2モードのインタフェースからデータを受信したか否か確認し、受信していない場合ステップS125に戻り、受信した場合ステップS127に進む。ステップS127にて、ミドルウェアは、HID準拠ドライバから、受信データを受け取る。そして、ステップS129にて、受信データに含まれるホストアドレス35、ペンID39、及びバーコード13を引数として、ブラウザを起動する。そして、図4(b)のステップS97の処理が実行される。
なお、ステップS123で第2モードに切り替えられた後は、第2モードが保持され、電源オフや再起動されない限り、それ以降、ステップS121及びS123の処理は実行されない。ただし、ミドルウェアは、それが終了する場合、HID準拠ドライバを介して、バーコードリーダ1を第1モードに設定する。そして、ミドルウェアが再び起動されると、図5の処理が実行される。
次に、図1のホストコンピュータ7について具体例を挙げながら詳細に説明する。
図6(a)は、図1のホストコンピュータ7の電気的構成を示す図である。図6(b)は、図1のホストコンピュータ7の記憶領域81の構成を示す概念図である。
図6(a)を参照して、ホストコンピュータ7は、CPU(中央演算処理装置)51、メインメモリ53、チップセット55、GPU(グラフィックスプロセシングユニット)57、SPU(サウンドプロセシングユニット)59、HDD(ハードディスクドライブ)61、ドライブ63、及び通信部65を含む。
CPU51は、HDD61に格納されたコンピュータプログラムを実行して各種演算を行う。メインメモリ53は、CPU51から直接読み書きが行われる高速のメモリである。GPU57は、グラフィックス処理を実行し、モニタ67に映像信号を与える。SPU59は、サウンド処理を実行し、スピーカ69に音声信号を与える。HDD61は、OSやアプリケーションソフトウェア等のコンピュータプログラム並びにこれらが用いるデータを書き込むために用いる補助記憶装置である。ドライブ63は、リムーバル記録媒体75からデータを読み込んだり、書き込んだりする装置である。通信部65は、ネットワーク9への接続を司るLANカードやUSBコントローラなどを含み(図示せず)、通信を制御する。
CPU51、GPU57、SPU59、HDD61、ドライブ63、通信部65、キーボード71、及びマウス73といった機能ユニットは、チップセット55に接続される。チップセット55は、これに接続される機能ユニット間のデータの受け渡しを管理する。
なお、図1の端末3の電気的構成は、図4(a)のホストコンピュータ7の電気的構成と同様であり、説明を省略する。
さて、図6(b)を参照して、ホストコンピュータ7のHDD61の記憶領域81は、プログラム格納部83及びデータベース11を備えている。
データベース11は、ペンIDとCGIとを関連付けたものであり、ペンIDから、それに関連付けられたCGIを読み出すことができる。例えば、各バーコードリーダ1に割り当てるCGI9−mを予め決めて、データベース11を作成し、それから、バーコードリーダ1を配布ないしは販売する。また、例えば、初回のアクセス時に、ユーザが、端末3を介して、ホストコンピュータ7が提供する所定のWEBサイトから、所望のCGI9−mを選択し、それから、端末3からのペンIDとユーザが選択したCGI9−mとをデータベース11に登録する。
プログラム格納部83は、通信制御部85、第1デコーダ87、及び第2デコーダ89−0,…,89−m,…,89−Mを含む。第2デコーダ89−0,…,89−m,…,89−Mは、それぞれ、CGI9−0,…,9−m,…,9−Mに対応して起動される。
これらの各機能部は、HDD61にインストールされたコンピュータソフトウエアプログラム若しくは1つのプログラム中のサブルーチンである。これらのプログラムは、リムーバル記録媒体75に格納され、これから、ホストコンピュータ7にインストールされる。これらの各機能部は、次のフローチャートを用いて説明される。
図7は、図1の端末3とホストコンピュータ7とCGI9−mとの間の通信手順の一例を示す図である。図7を参照して、ステップS1にて、端末3は、バーコードリーダ1から受け取ったペンID39及びバーコード13をホストコンピュータ7へ送信する(詳細は図4(a)及び図4(b)参照)。
すると、ステップS31にて、ホストコンピュータ7の通信制御部85は、バーコード13及びペンID39を受信する。そして、ステップS33にて、ホストコンピュータ7の第1デコーダ87は、第1所定アルゴリズム(本実施の形態ではペンID39に基づきデータベース11を検索するためのアルゴリズム)に従って、ペンID39をデコードして、バーコードリーダ1に適合するCGI9−mを選択する。即ち、第1デコーダ87は、受信したペンID39から、データベース11を検索し、当該ペンID39に関連付けられたCGI9−mの情報を取得する。
ステップS35にて、第1デコーダ87は、選択したCGI−mに対応する第2デコーダ89−mに、受信したバーコード13を渡す。すると、第2デコーダ89−mは、選択されたCGI9−mに対応する第2所定アルゴリズムに従って処理を実行する。
例えば、選択したCGIがCGI9−0の場合、ステップS35にて、第1デコーダ87は、バーコード13を、第2デコーダ89−0に渡す。すると、ステップS37にて、第2デコーダ89−0は、受け取ったバーコード13をそのまま、通信制御部85を介して、選択されたCGI9−0に送信する。この場合、第2所定アルゴリズムは、バーコード13をそのままCGI9−0に送信するためのアルゴリズムである。
すると、ステップS101−0にて、CGI9−0は、通信制御部85からバーコード13を受信する。そして、ステップS103−0にて、CGI9−0は、バーコード13に応じた処理を実行する。
また、例えば、選択したCGIがCGI9−1の場合、ステップS35にて、第1デコーダ87は、バーコード13を、第2デコーダ89−1に渡す。すると、ステップS39にて、第2デコーダ89−1は、CGI9−1に対応する第2所定アルゴリズムに従って、受け取ったバーコード13をデコードする。この場合、第2所定アルゴリズムは、対応するCGI9−1に応じて設計ないしは提供される。そして、ステップS41にて、第2デコーダ89−1は、バーコード13のデコード結果を、通信制御部85を介して、CGI9−1に送信する。
すると、ステップS101−1にて、CGI9−1は、通信制御部85からバーコード13のデコード結果を受信する。そして、ステップS103−1にて、CGI9−1は、バーコード13のデコード結果に応じた処理を実行する。
なお、各CGI9−mの具体的な処理は、各CGI9−mの運営事業者等が任意かつ自由に企画設計するものであり、本リモートバーコードリーダシステムの関与するところではない。
さて、以上のように、本実施の形態によれば、ペンIDを、CGI9−mを選択するために利用して、バーコードリーダ1が読み込んだバーコード13及び/又はそのデコード結果を、適切なCGI9−mに与えることができる。その結果、バーコードリーダ1に応じた適切なCGI9−mが起動され、当該CGI9−mは、受け取ったバーコード13及び/又はそのデコード結果に応じた情報処理を実行できる。
(第1変形例)
上記実施の形態では、端末3にミドルウェアをインストールする例を示した。これに対して、本実施の形態の第1変形例では、上記ミドルウェアをインストールせずに、第1変形例におけるリモートコードリーダシステムのためのプラグインを端末3のブラウザに付加する。つまり、上記実施の形態と第1変形例とは、バーコードリーダ1とブラウザとの間を仲介するプログラムが異なる。その他の点は、上記実施の形態と同様である。従って、図1及び図7は、第1変形例にも同様に適用できる。また、第1変形例の端末3やホストコンピュータ7のハードウェア構成は、図6(a)及び図6(b)と同じである。第1変形例のバーコードリーダ1のハードウェア構成は、図2(a)及び図2(b)と同じである。以下、異なる点を中心に説明する。なお、このプラグインは、CD−ROM等のリムーバル記録媒体やネットワーク5上のサーバ等から提供することができる。
第1変形例のバーコードリーダ1の処理は、図3の処理と同様である。ただし、第1変形例では、バーコードリーダ1の第1モードは、端末3のブラウザに本システムのためのプラグインが付加されていない場合、プラグインが付加されているブラウザが起動していない場合、又は、プラグインが付加されているブラウザが起動しているがインアクティブ(バックグラウンド)の場合のモードである。また、第2モードは、端末3のブラウザに本システムのためのプラグインが付加されており、かつ、ブラウザが起動していて、かつ、ブラウザがアクティブ(フォアグラウンド)な場合のモードである。
また、第1変形例のバーコードリーダ1が第1モードの場合の端末3の処理は、図4(a)の処理と同じである。
次に、第1変形例のバーコードリーダ1が第2モードの場合の端末3の処理を説明する。
図8(a)は、本発明の実施の形態の第1変形例における第2モードでの端末3による処理の流れの一例を示すフローチャートである。図8(a)を参照して、図3のステップS63でMCU23が出力用データを送信すると、ステップS141にて、端末3のHID準拠ドライバは、その出力用データをバーコードリーダ1の第2モードのインタフェースから受信する。そして、ステップS143にて、端末3のブラウザに付加されたプラグインは、HID準拠ドライバから出力用データを受信する。
そして、ステップS145にて、プラグインは、受信した出力用データに含まれるホストアドレス35、ペンID39及びバーコード13を引数として、ブラウザを制御する。
例えば、プラグインは、ブラウザに対して、ホストアドレス35が示すホストコンピュータ7にアクセスさせ、ペンID39及びバーコード13をホストコンピュータ7に送信させる。その後のホストコンピュータ7及びCGI9−mの処理は、図7に示したものと同様である。
また、例えば、プラグインは、ブラウザに対して、ペンID39及び/又はバーコード13を渡し、ブラウザに、ペンID39及び/又はバーコード13を用いた処理をローカル(端末3)で実行させる。この場合、例えば、ブラウザは、それ自身の機能、Java(登録商標)Script等のスクリプト、Java(登録商標)アプレット、あるいは、Flash(登録商標)プレイヤ等のプラグインを実行して、ペンID39及び/又はバーコード13に応じた処理を実行する。
次に、ブラウザに付加されたプラグインの処理をもう少し詳しく説明する。
図8(b)は、第1変形例における第2モードでのプラグインよる処理の流れの一例を示すフローチャートである。なお、ブラウザはインアクティブな状態であるとする。図8(b)を参照して、ステップS161にて、プラグインは、HID準拠ドライバがバーコードリーダ1を検出したか否かを確認し、検出していない場合ステップS161に戻り、検出した場合ステップS163に進む。
ステップS163にて、プラグインは、HID準拠ドライバを介して、バーコードリーダ1のモードを第2モードに切り替える。なお、バーコードリーダ1のデフォルトのモードは、第1モードである。ステップS165にて、プラグインは、HID準拠ドライバがバーコードリーダ1の第2モードのインタフェースからデータを受信したか否か確認し、受信していない場合ステップS165に戻り、受信した場合ステップS167に進む。ステップS167にて、プラグインは、HID準拠ドライバから、受信データを受け取る。そして、ステップS169にて、プラグインは、受信データに含まれるホストアドレス35、ペンID39、及びバーコード13を引数として、ブラウザを制御する。
なお、ステップS163で第2モードに切り替えられた後は、第2モードが保持され、電源オフや再起動されない限り、それ以降、ステップS161及びS163の処理は実行されない。ただし、プラグインは、ブラウザが終了した場合、又は、インアクティブになった場合、HID準拠ドライバを介して、バーコードリーダ1を第1モードに設定する。そして、ブラウザが再びアクティブになると、図8(b)の処理が実行される。
以上により、第1変形例は、上記実施の形態と同様の効果を奏する。
(第2変形例)
本実施の形態の第2変形例では、端末3に上記ミドルウェアがインストールされ、かつ、端末3のブラウザに上記プラグインが付加される。従って、バーコードリーダ1からのデータ取得に競合が発生する場合があり、いずれか一方を有効にする。第2変形例では、そのための制御が要求される。その他の点は、上記実施の形態と同様である。従って、図1及び図7は、第2変形例にも同様に適用できる。また、第2変形例の端末3やホストコンピュータ7のハードウェア構成は、図6(a)及び図6(b)と同じである。第2変形例のバーコードリーダ1のハードウェア構成は、図2(a)及び図2(b)と同じである。以下、異なる点を中心に説明する。
第2変形例のバーコードリーダ1の処理は、図3の処理と同様である。ただし、第2変形例では、バーコードリーダ1の第1モード及び第2モードは次のようになる。モードの説明の前に、いくつかの状態を定義する。第1状態は、端末3のブラウザに本システムのためのミドルウェアがインストールされていない状態である。第2状態は、端末3にミドルウェアがインストールされているが起動していない状態である。第3状態は、ブラウザにプラグインが付加されていない状態である。第4状態は、プラグインが付加されているブラウザが起動していない状態である。
このように定義した場合、第1モードは、第1状態かつ第3状態の場合、第1状態かつ第4状態の場合、第2状態かつ第3状態の場合、又は、第2状態かつ第4状態の場合である。
また、第2モードは、端末3にミドルウェアがインストールされて起動している場合、又は、プラグインが付加されているブラウザが起動していて、かつ、ブラウザがアクティブな場合のモードである。
また、第2変形例のバーコードリーダ1が第1モードの場合の端末3の処理は、図4(a)の処理と同じである。
次に、第2変形例のバーコードリーダ1が第2モードの場合の端末3の処理を説明する。この場合、端末3のミドルウェア及びプラグインのいずれか一方が有効になる(詳細は後述)。従って、ミドルウェアが有効な場合は、第2モードの端末3の処理は、図4(b)及び図5と同じである。一方、プラグインが有効な場合は、第2モードの端末3の処理は、図8(a)及び図8(b)と同じである。
次に、第2モードにおいて、ミドルウェアとプラグインとが競合する場合の制御について説明する。
図9は、本発明の実施の形態の第2変形例におけるバーコードリーダ1からのデータ取得に競合が発生する場合の制御の説明図である。なお、ミドルウェアは起動しているものとする。図9を参照して、ある時刻t0になる前では、ブラウザは起動していないか、あるいは、起動していてもインアクティブ(バックグラウンド)であるとする。この場合は、第2モードにおいて、ミドルウェアがアクティブ(有効)になり、上記処理を実行する。
そして、時刻t0において、ブラウザが起動し、かつ、アクティブ(フォアグラウンド)になったとする。この場合、ブラウザに付加されたプラグインもアクティブ(有効)になり、上記処理を実行する。ただし、この時点では、ミドルウェアも有効であり、競合を排除する必要がる。このため、プラグインは、アクティブになると、ミューテックス(Mutex)機構により、ミドルウェアをロックする。これにより、ミドルウェアはインアクティブになる。
さらに、時刻t1において、ブラウザが起動しているがインアクティブになると、プラグインは、ミューテックス機構により、ミドルウェアをアンロック(解除)して、自らはインアクティブになる。これにより、ミドルウェアは、アクティブになり上記処理を実行する。
そして、さらに、時刻t2において、ブラウザが終了すると、プラグインも同時に終了する。ただし、ミドルウェアはアンロックされたままであるので、ブラウザが起動され、かつ、アクティブになるまで、ミドルウェアは引き続き、上記処理を実行する。
なお、ミューテックスは、相互排他(Mutual Exclusion)のことである。
ところで、プラグインが付加されたブラウザがインアクティブ若しくは終了する際に(例えば時刻t0、t1)、ミドルウェアが起動していない場合は、プラグインは、HID準拠ドライバを介して、バーコードリーダ1を第1モードに設定する。一方、ミドルウェアが終了する際に、プラグインが付加されたブラウザがインアクティブ若しくは起動していない場合、ミドルウェアは、HID準拠ドライバを介して、バーコードリーダ1を第1モードに設定する。
以上により、第2変形例は、上記実施の形態と同様の効果を奏する。
(第3変形例)
図1を参照して、実施の形態の第3変形例の概要を説明する。バーコードリーダ1は、バーコードパターン13をスキャンして、バーコード情報13及びペンID(任意)を端末3に送信する。端末3は、当該端末3を識別するための情報(以下、「端末ID」と呼ぶ。)、並びに、バーコードリーダ1から受信したペンID(任意)及びバーコード情報13を、ネットワーク5を介して、ホストコンピュータ7に送信する。なお、端末IDは、ホストコンピュータ7が端末3を識別するための情報である。
ホストコンピュータ7は、所定のアルゴリズムに従って、受信した端末IDをデコードし、当該端末IDに適合するCGI9−mを選択する。そして、ホストコンピュータ7は、選択したCGI9−mに、受信したバーコード情報13を送信する。
バーコード情報13を受け取ったCGI9−mは、そのバーコード情報13に応じた情報処理を実行する。この場合の具体的な処理は、CGI9−mの運営事業者等が任意かつ自由に企画設計するものであり、本リモートバーコードリーダシステムの関与するところではない。
以下、上記実施の形態と異なる点を中心に詳細に説明していく。
第3変形例のバーコードリーダ1は、上記実施の形態の第1モードを有しておらず、第2モードに固定され、かつ、端末3には上記ミドルウェアがインストールされているものとする。
また、第3変形例の端末3のハードウェア構成は、図6(a)と同じである。また、第3変形例のバーコードリーダ1のハードウェア構成は、図2(a)と同じである。ただし、ROM27に、コマンド37は格納されない。また、ペンID39は、ROM27に格納されてもよいし、格納されなくてもよく、任意である。
第3変形例のバーコードリーダ1の処理は、図3の処理と同様である。ただし、バーコードリーダ1は第2モードのみを搭載するので、ステップS57,S59及びS61は実行されず、ステップS55の後は、ステップS63が実行される。
次に、第3変形例の端末3の処理を説明する。
図10は、本発明の実施の形態の第3変形例における端末3による処理の流れの一例を示すフローチャートである。図10を参照して、ステップS201及びステップS203の処理は、それぞれ、図4(b)のステップS91及びS93の処理と同様であり、説明を省略する。さて、ステップS205にて、ミドルウェアは、端末IDを作成する。具体的には、ミドルウェアは、端末3を構成する所定の1のハードウェアの情報を端末IDとし、又は、端末3を構成する所定の複数のハードウェアの情報を収集して、それらを結合し、端末IDとする。
例えば、ハードウェアの情報は、ディスプレイアダプタのプロダクトID及び/又はシリアル番号、SCSIアダプタのプロダクトID及び/又はシリアル番号、IDEアダプタ(IDEコントローラ)のプロダクトID及び/又はシリアル番号、LANアダプタのMACアドレス、メインメモリのサイズ、CPUのタイプ、CPUのシリアル番号、HDDのタイプ、HDDのシリアル番号、並びに、CD−ROM/CD−R/DVD−ROM等のタイプである。
さて、ステップS207にて、ミドルウェアは、受信した出力用データに含まれるホストアドレス35、ペンID39(もし含まれるならば)及びバーコード13、並びに、端末IDを引数として、端末3のブラウザを起動する。すると、ステップS209にて、起動したブラウザは、受け取ったホストアドレス35に基づき、ホストコンピュータ7にアクセスして、ペンID39(もし含まれるならば)、バーコード13、及び端末IDをホストコンピュータ7に送信する。
次に、ホストコンピュータ7の構成及び処理について説明する。第3変形例のホストコンピュータ7のハードウェア構成は、図6(a)及び図6(b)と同様である。ただし、データベース11は、端末IDとCGI9−mとを関連付けたものである。例えば、初回のアクセス時に、ユーザが、端末3を介して、ホストコンピュータ7が提供する所定のWEBサイトから、所望のCGI9−mを選択し、それから、端末3からの端末IDとユーザが選択したCGI9−mとをデータベース11に登録する。
また、例えば、初回のアクセス時に、ユーザが、端末3を介して、ホストコンピュータ7が提供する所定のWEBサイトから、所望のCGI9−mを選択し、さらに、ホストコンピュータ7が、端末IDを作成し、それから、ホストコンピュータ7が作成した端末IDとユーザが選択したCGI9−mとをデータベース11に登録し、当該端末IDを端末3のミドルウェアに送信する。また、例えば、各ミドルウェアに割り当てるCGI9−mを予め決めて、ミドルウェアの識別情報とCGI9−mとを関連付けたデータベース11を作成し、それから、ミドルウェアを配布ないしは販売する。この場合、ミドルウェアの識別情報が、端末IDとして使用される。なお、ミドルウェアの識別情報は、ネットワーク5を介して、ホストコンピュータ7から取得、または、ミドルウェアに予め持たせておく。また、下記第4変形例では、これらの例において、ミドルウェアをプラグインと読み替える。
第3変形例における端末3とホストコンピュータ7とCGI9−mとの間の通信手順は、図7の説明において、「ペンID39」を「端末ID」と読み替えることにより説明される。
つまり、ステップS1にて、端末3は、バーコードリーダ1から受け取ったペンID39(任意)及びバーコード13、並びに、端末IDをホストコンピュータ7へ送信する。
すると、ステップS31にて、ホストコンピュータ7の通信制御部85は、バーコード13及びペンID39(任意)並びに端末IDを受信する。そして、ステップS33にて、ホストコンピュータ7の第1デコーダ87は、第1所定アルゴリズム(本実施の形態では端末IDに基づきデータベース11を検索するためのアルゴリズム)に従って、端末IDをデコードして、バーコードリーダ1に適合するCGI9−mを選択する。即ち、第1デコーダ87は、受信した端末IDから、データベース11を検索し、当該端末IDに関連付けられたCGI9−mの情報を取得する。
ステップS35にて、第1デコーダ87は、選択したCGI−mに対応する第2デコーダ89−mに、受信したバーコード13を渡す。すると、第2デコーダ89−mは、選択されたCGI9−mに対応する第2所定アルゴリズムに従って処理を実行する。第3変形例の第2デコーダ89−mの処理及びCGI9−mの処理は、上記実施の形態と同じである。
さて、以上のように、本実施の形態の第3変形例によれば、端末IDを、CGI9−mを選択するために利用して、バーコードリーダ1が読み込んだバーコード13及び/又はそのデコード結果を、適切なCGI9−mに与えることができる。その結果、端末3に応じた適切なCGI9−mが起動され、当該CGI9−mは、受け取ったバーコード13及び/又はそのデコード結果に応じた情報処理を実行できる。
(第4変形例)
本発明の実施の形態の第4変形例は、第3変形例のミドルウェアの処理をブラウザに付加されたプラグインが実行する。従って、第4変形例は、端末3での処理主体が第3変形例と異なる。以下、異なる点を中心に説明する。
図11は、本発明の実施の形態の第4変形例における端末3による処理の流れの一例を示すフローチャートである。図11を参照して、ステップS221及びステップS223の処理は、それぞれ、図8(a)のステップS141及びS143の処理と同様であり、説明を省略する。さて、ステップS225にて、プラグインは、端末IDを作成する。作成方法は、図10のステップS205と同じである。ステップS227にて、プラグインは、受信した出力用データに含まれるホストアドレス35、ペンID39(もし含まれるならば)及びバーコード13、並びに、端末IDを引数として、端末3のブラウザを制御する。この場合のブラウザの制御の例は、図8(a)のステップS145で挙げたものと同じである。ただし、第4変形例では、ペンID39(任意)及びバーコード13に加えて、端末IDが利用される。なお、これらをホストコンピュータ7に送信する制御を行う場合、ホストコンピュータ7及びCGI9−mの処理は、第3変形例と同様である。
以上により、第4変形例は、上記第3変形例と同様の効果を奏する。
(第5変形例)
本発明の実施の形態の第5変形例では、端末3に第3変形例のミドルウェアがインストールされ、端末3のブラウザに第4変形例のプラグインが付加されている。従って、第5変形例のミドルウェア及びプラグインの処理は、それぞれ、第3変形例のミドルウェア及び第4変形例のプラグインと同様である。
ただし、上記第2変形例と同様に競合の問題が発生するので、上記第2変形例と同じ手段で競合を回避する。
以上により、第5変形例は、上記第3変形例と同様の効果を奏する。
(第6変形例)
本発明の実施の形態の第6変形例は、上記第3変形例の端末IDの代わりに、ユーザを識別する情報(以下、「ユーザID」と呼ぶ。)を使用する。従って、第6変形例では、図10のステップS205にて、ミドルウェアは、ユーザIDをHDDから取得する。そして、ステップS207にて、ミドルウェアは、受信した出力用データに含まれるホストアドレス35、ペンID39(もし含まれるならば)及びバーコード13、並びに、ユーザIDを引数として、端末3のブラウザを起動する。すると、ステップS209にて、起動したブラウザは、受け取ったホストアドレス35に基づき、ホストコンピュータ7にアクセスして、ペンID39(もし含まれるならば)、バーコード13、及びユーザIDをホストコンピュータ7に送信する。
また、第6変形例では、図6(b)のデータベース11は、ユーザIDとCGI9−mとを関連付ける。例えば、初回のアクセス時に、ユーザが、端末3を介して、ホストコンピュータ7が提供する所定のWEBサイトから、所望のCGI9−mを選択し、それから、ユーザIDとユーザが選択したCGI9−mとをデータベース11に登録する。この場合、例えば、ユーザがユーザIDを端末3に入力してホストコンピュータ7に与えることもできるし、ホストコンピュータ7がユーザIDを作成することもできる。そして、ホストコンピュータ7が端末3のミドルウェア(下記第7変形例ではプラグイン)にユーザIDを与える。
また、例えば、各ミドルウェアに割り当てるCGI9−mを予め決めて、ミドルウェアの識別情報とCGI9−mとを関連付けたデータベース11を作成し、それから、ミドルウェアを配布ないしは販売する。この場合、ミドルウェアの識別情報が、ユーザIDとして使用される。なお、ミドルウェアの識別情報は、ネットワーク5を介して、ホストコンピュータ7から取得、または、ミドルウェアに予め持たせておく。また、下記第7変形例では、この例において、ミドルウェアをプラグインと読み替える。
さて、第6変形例における端末3とホストコンピュータ7とCGI9−mとの間の通信手順は、第3変形例における図7の説明において、「端末ID」を「ユーザID」と読み替える。
さて、以上のように、本実施の形態の第6変形例によれば、ユーザIDを、CGI9−mを選択するために利用して、バーコードリーダ1が読み込んだバーコード13及び/又はそのデコード結果を、適切なCGI9−mに与えることができる。その結果、ユーザIDに応じた適切なCGI9−mが起動され、当該CGI9−mは、受け取ったバーコード13及び/又はそのデコード結果に応じた情報処理を実行できる。
(第7変形例)
本発明の実施の形態の第7変形例は、上記第4変形例の端末IDの代わりに、ユーザIDを使用する。従って、第7変形例では、図11のステップS225にて、プラグインは、ユーザIDをHDDから取得する。そして、ステップS227にて、プラグインは、受信した出力用データに含まれるホストアドレス35、ペンID39(もし含まれるならば)及びバーコード13、並びに、ユーザIDを引数として、端末3のブラウザを制御する。この場合のブラウザの制御の例は、図8(a)のステップS145で挙げたものと同じである。ただし、第7変形例では、ペンID39(任意)及びバーコード13に加えて、ユーザIDが利用される。なお、これらをホストコンピュータ7に送信する制御を行う場合、ホストコンピュータ7及びCGI9−mの処理は、第6変形例と同様である。また、ユーザIDの入力例は、第6変形例と同じである。
以上により、第7変形例は、上記第6変形例と同様の効果を奏する。
(第8変形例)
本発明の実施の形態の第8変形例は、上記第5変形例の端末IDの代わりに、ユーザIDを使用する。従って、第8変形例では、端末3に第6変形例のミドルウェアがインストールされ、端末3のブラウザに第7変形例のプラグインが付加されている。この場合、第8変形例のミドルウェア及びプラグインの処理は、それぞれ、第6変形例のミドルウェア及び第7変形例のプラグインと同様である。
ただし、上記第2変形例と同様に競合の問題が発生するので、上記第2変形例と同じ手段で競合を回避する。
以上により、第8変形例は、上記第6変形例と同様の効果を奏する。
さて、以上のように、本実施の形態及びその第1〜第8変形例によれば、クライアント(バーコードリーダ1、ユーザ、端末3、及び、端末3にインストールされたソフトウェアを総称)の識別情報(ペンID、ユーザID、端末ID、若しくは、端末3にインストールされたソフトウェア(ミドルウェア又はプラグイン)の識別情報)を、機能(例えば、ホストコンピュータ7にインストールされたCGI9−m、他のサーバ、あるいは、それにインストールされたCGI9−m)を選択するために利用して、バーコードリーダ1が読み込んだバーコード13及び/又はそのデコード結果を、適切な機能に与えることができる。その結果、クライアントに応じた適切な機能が起動され、当該機能は、受け取ったバーコード13及び/又はそのデコード結果に応じた情報処理を実行できる。
なお、本発明は、上記の実施の形態に限られるものではなく、その要旨を逸脱しない範囲で種々の態様において実施することが可能であり、例えば、以下のような変形も可能である。
(1)上記第3〜第5変形例では、端末IDを利用し、上記第6〜第8変形例では、ユーザIDを利用したが、これらの変形例において、端末ID及びユーザID、端末ID及びペンID、ユーザID及びペンID、又は、端末ID、ユーザID、及びペンIDを利用して、CGI9−mを選択することもできる。端末ID及びユーザIDを利用する場合、データベース11では、端末ID及びユーザIDと、CGI9−mと、が関連付けられる。端末ID及びペンIDを利用する場合、データベース11では、端末ID及びペンIDと、CGI9−mと、が関連付けられる。ユーザID及びペンIDを利用する場合、データベース11では、ユーザID及びペンIDと、CGI9−mと、が関連付けられる。端末ID、ユーザID、及びペンIDを利用する場合、データベース11では、端末ID、ユーザID、及びペンIDと、CGI9−mと、が関連付けられる。
(2)上記実施の形態において、バーコードリーダ1が第1モードのみを有し、ドライバ及びミドルウェアをインストールしないことも可能である。また、上記実施の形態及び第1〜第8変形例において、バーコードリーダ1が第2モードのみを有していてもよい。この場合は、バーコードリーダ1は、コマンド37を格納する必要はない。
上記では、ホストアドレス35は、バーコードリーダ1から端末3に与えられた。ただし、端末3が、予めホストアドレス35を持っていてもよいし、ユーザが入力することもできる。この場合は、バーコードリーダ1は、ホストアドレス35を格納する必要はない。また、上記第3〜第8変形例では、ペンIDは任意である。従って、ペンIDを利用しない場合、バーコードリーダ1は、ペンIDを格納する必要はない。
上記第3〜第8変形例において、バーコードリーダ1が第2モードのみを有し、端末3が予めホストアドレス35を持ち、ペンIDを利用しない場合は、本システムに専用のバーコードリーダ1は不要であり(もちろん使うことも可能)、一般的な汎用のバーコードリーダを使用することができる。例えば、本システム専用に設計及び製造されたものではない、一般的なPOS(Point Of Sale)システムのために設計及び製造されたバーコードリーダを使用できる。
(3)上記では、ドライバやミドルウェアがブラウザを制御して、ホストコンピュータ7へバーコード13等を送信した。ただし、上記ドライバやミドルウェアの機能に加えて、通信機能を有する専用のソフトウェアを端末3にインストールし、ブラウザを介さずに処理をすることもできる。
(4)上記では、ホストコンピュータ7及びCGI9−mに送信する情報として、バーコード13を採用したが、これに限定されない。例えば、RFID(Radio Frequency Identification System)タグ等の電子タグ(ICタグ)を利用できる。ただし、この場合には、バーコードリーダ1に代えて、電子タグリーダ(ICタグリーダ)で電子タグに格納された情報(コード)を読み込む。電子タグリーダには、上記実施の形態、若しくは、上記第1〜第8変形例の、バーコードスキャン以外の機能を搭載する。この場合、ペンIDの代わりに、電子タグリーダの識別情報を使用する。
また、上記では、一次元コードである一次元バーコードを利用したが、二次元コードである二次元バーコードやQRコード等を利用することもできる。また、二次元コードとして、人間には見え難いドットパターンにより表されたコードを利用することもできる。
(5)バーコードリーダ1として、携帯電話機のカメラを利用したバーコード認識機能を利用することもできる。QRコードの認識についても同様である。この場合、携帯電話機には、上記実施の形態、若しくは、上記第1〜第8変形例の、端末3及びバーコードリーダ1の機能を搭載する。また、この場合、ペンIDの代わりに、携帯電話機の識別情報を使用する。
(6)上記では、ホストコンピュータ7は、バーコード13又はそのデコード結果をCGI9−mに渡した。ただし、バーコード13及びそのデコード結果の双方を渡すこともできる。また、ホストコンピュータ7は、バーコード13、バーコード13のデコード結果、又は、バーコード13及びそのデコード結果と共に、ペンID、端末ID、若しくは、ユーザID、または、それらの二以上の組合せを、CGI9−mに渡すこともできる。
(7)上記では、ホストコンピュータ7は、ペンID、端末ID、若しくは、ユーザID、または、それらの二以上の組合せに基づいて、CGI9−mを選択した。ただし、これらを使用せずに、ホストコンピュータ7は、バーコード13に基づいて、CGI9−mを選択して、選択したCGI9−mに、バーコード13及び/又はバーコード13のデコード結果(図7のステップS39)を渡すこともできる。
このように、バーコードリーダ1が読み込んだバーコード13を、機能(例えば、ホストコンピュータ7にインストールされたCGI9−m、他のサーバ、あるいは、それにインストールされたCGI9−m)を選択するために利用して、当該バーコード13及び/又はそのデコード結果を、適切な機能に与えることができる。その結果、バーコード13に応じた適切な機能が起動され、当該機能は、受け取ったバーコード13及び/又はそのデコード結果に応じた情報処理を実行できる。
なお、ホストコンピュータ7は、ペンID、端末ID、ユーザID、若しくは、バーコード13、又は、それらの二以上の組合せに基づいて、CGI9−mを選択することもできる。また、ホストコンピュータ7は、図7のステップS39にて、ペンID、端末ID、ユーザID、若しくは、バーコード13、又は、それらの二以上の組合せをデコードして、結果をCGI9−mに送信することもできる。
(8)CGIはクライアントに動的なサービスを提供する機能の一例であり、これに限定されない。例えば、ASP(Active Server Pages)であってもよい。
(9)ホストコンピュータ7は、物理的に1つのコンピュータで構成することもできるし、処理を複数のコンピュータに分散させて構成することもできる。もちろん、分散処理する場合の各コンピュータの設置場所は、同一国内でもよいし、複数国に分散して設置してもよい。なお、ホストコンピュータ7は、ハードウェア及びソフトウェアを含む概念として使用している。これらのことは、サーバについても同様である。
(10)本明細書及び特許請求の範囲において、手段とは必ずしも物理的手段を意味するものではなく、各手段の機能が、ソフトウェアによって実現される場合も包含する。さらに、一つの手段の機能が、二つ以上の物理的手段により実現されても、若しくは、二つ以上の手段の機能が、一つの物理的手段により実現されてもよい。この点、サーバやコンピュータについても同様である。