(57)【要約】【課題】既存のアプリケーションやハードウェアを変更せずに、複数のスキャナを制御することを可能とする複数スキャナ制御プログラムを提供すること。【解決手段】複数のスキャナのうち、識別情報を取得したスキャナから受信通知を受けると受信通知を受けたスキャナの情報を第１の格納領域に格納し、アプリケーションへ通知し、アプリケーションから受信通知に対応する識別情報の取得依頼を受けると、スキャナから取得依頼に対応する識別情報をアプリケーションへ通知し、アプリケーションから、識別情報を受信したことの通知を受けると、第１の格納領域に格納されている情報をクリアし、第１の格納領域にスキャナの情報が格納されている場合には、第１の格納領域に格納されている情報がクリアされるまで、第１の格納領域に格納されているスキャナの情報以外のスキャナの受信通知をアプリケーションへ通知しない処理を実行させる複数スキャナ制御プログラム。【選択図】図４
2019061593.tif 000002
【特許請求の範囲】
【請求項１】
ＰＯＳ端末に接続され、商品の識別情報を読み取る複数のスキャナを制御する処理をＰＯＳ端末のコンピュータに実行させる複数スキャナ制御プログラムにおいて、
前記複数のスキャナのうち、前記識別情報を取得したスキャナから、前記識別情報の受信通知を受けると、前記識別情報を取得した特定スキャナの情報を第１の格納領域に格納し、前記受信通知をアプリケーションへ通知する処理と、
前記アプリケーションから、前記受信通知に対応する識別情報の取得依頼を受けると、前記特定スキャナから前記取得依頼に対応する識別情報を前記アプリケーションへ通知する処理と、を含み、
前記特定スキャナの情報を前記第１の格納領域に格納する処理は、前記アプリケーションから、前記識別情報を受信したことの通知を受けると、前記第１の格納領域にすでに格納されているスキャナの情報をクリアし、
前記受信通知をアプリケーションへ通知する処理は、前記第１の格納領域に前記特定スキャナの情報が格納されている場合には、前記第１の格納領域に格納されているスキャナの情報がクリアされるまで、前記第１の格納領域に格納されている前記特定スキャナの情報以外のスキャナの受信通知を前記アプリケーションへ通知しない
処理を実行させることを特徴とする複数スキャナ制御プログラム。
【請求項２】
前記特定スキャナの情報が前記第１の格納領域に格納されると、前記特定スキャナの情報を第２の格納領域に格納する処理を更に備え、
前記識別情報を前記アプリケーションへ通知する処理は、前記アプリケーションから、前記受信通知に対応する識別情報の取得依頼を受けると、前記第２の格納領域に格納された前記特定スキャナの情報のスキャナから識別情報を取得し、取得した前記識別情報を前記アプリケーションへ通知する
処理を実行させることを特徴とする請求項１に記載の複数スキャナ制御プログラム。
【請求項３】
前記複数のスキャナのうち、必須の属性を有するスキャナの接続状態の通知を受けると、前記必須の属性を有するスキャナの接続状態を前記アプリケーションへ通知し、前記必須以外の属性を有するスキャナの接続状態の通知を受けると、前記必須以外の属性を有するスキャナの接続状態を前記アプリケーションへ通知しない
処理を更に備えることを特徴とする請求項１に記載の複数スキャナ制御プログラム。
【請求項４】
前記第１の格納領域に前記特定スキャナの情報が格納されている場合に、前記特定スキャナとは別のスキャナの受信通知があった場合には、前記別のスキャナの排他制御待ちの情報として第３の格納領域に所定値を設定し、前記第１の格納領域に前記特定スキャナの情報がない場合には、前記別のスキャナの排他制御待ちの情報として第３の格納領域に０を設定する処理を更に備え、
前記特定スキャナの情報を前記第１の格納領域に格納する処理は、前記第３の格納領域に格納されているスキャナ情報のうち、排他制御待ちの値が最小であるスキャナ情報を、前記第１の格納領域に格納する
処理を実行させることを特徴とする請求項３に記載の複数スキャナ制御プログラム。
【請求項５】
商品の識別情報を読み取る複数のスキャナ接続されたＰＯＳ端末において、
前記複数のスキャナのうち、前記識別情報を取得したスキャナから、前記識別情報の受信通知を受けると、前記識別情報を取得した特定スキャナの情報を第１の格納領域に格納し、前記受信通知をアプリケーションへ通知する受信処理中情報処理部と、
前記アプリケーションから、前記受信通知に対応する識別情報の取得依頼を受けると、前記特定スキャナから前記取得依頼に対応する識別情報を前記アプリケーションへ通知する識別情報通知処理部と、を有し、
前記受信処理中情報処理部は、前記アプリケーションから、前記識別情報を受信したことの通知を受けると、前記第１の格納領域にすでに格納されているスキャナの情報をクリアし、前記第１の格納領域に前記特定スキャナの情報が格納されている場合には、前記第１の格納領域に格納されているスキャナの情報がクリアされるまで、前記第１の格納領域に格納されている前記特定スキャナの情報以外のスキャナの受信通知を前記アプリケーションへ通知しない
ことを特徴とするＰＯＳ端末。
【請求項６】
ＰＯＳ端末に接続され、商品の識別情報を読み取る複数のスキャナを制御する複数スキャナ制御方法において、
前記複数のスキャナのうち、前記識別情報を取得したスキャナから、前記識別情報の受信通知を受けると、前記識別情報を取得した特定スキャナの情報を第１の格納領域に格納し、前記受信通知をアプリケーションへ通知し、
前記アプリケーションから、前記受信通知に対応する識別情報の取得依頼を受けると、前記特定スキャナから前記取得依頼に対応する識別情報を前記アプリケーションへ通知する方法を含み、
前記特定スキャナの情報を前記第１の格納領域に格納する方法は、前記アプリケーションから、前記識別情報を受信したことの通知を受けると、前記第１の格納領域にすでに格納されているスキャナの情報をクリアし、
前記受信通知をアプリケーションへ通知する処理は、前記第１の格納領域に前記特定スキャナの情報が格納されている場合には、前記第１の格納領域に格納されているスキャナの情報がクリアされるまで、前記第１の格納領域に格納されている前記特定スキャナの情報以外のスキャナの受信通知を前記アプリケーションへ通知しない
ことを特徴とする複数スキャナ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数スキャナ制御プログラム、ＰＯＳ端末、複数スキャナ制御方法に関する。
【背景技術】
【０００２】
スーパーマーケット、コンビニエンスストア等の小売店等では、ＰＯＳ（Point Of Sale）端末が広く普及している。ＰＯＳ端末は、バーコードスキャナやＲＦＩＤタグリーダライタ（以下、「ＲＦＩＤスキャナ」と称する）を備え、商品に付されたバーコードやＲＦＩＤタグに含まれるバーコードをスキャンし、商品コードを取得する。
【０００３】
ＰＯＳ端末において、複数種類のスキャナを備え、スキャンする商品の対象に合わせて、スキャナを切り替える技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−０２７４８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
スキャナを制御するアプリケーションは、１つのスキャナしか制御することができなかった。そのため、ＰＯＳ端末において複数のスキャナを使用したい場合には、従来技術のように、複数のスキャナのうち使用するスキャナをオペレータの操作に基づき手動で切り替えたり、複数のスキャナを制御できるようにアプリケーションを改修したり、複数のスキャナを制御できるようスキャナを接続するハードウェアを改修する必要があった。
【０００６】
本発明は、上記課題に鑑み、既存のアプリケーションやハードウェアを改修せずに、複数のスキャナを制御することを可能とする複数スキャナ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一態様によれば、本発明の複数スキャナ制御プログラムは、ＰＯＳ端末に接続され、商品の識別情報を読み取る複数のスキャナを制御する処理をＰＯＳ端末のコンピュータに実行させる複数スキャナ制御プログラムであって、前記複数のスキャナのうち、前記識別情報を取得したスキャナから、前記識別情報の受信通知を受けると、前記識別情報を取得した特定スキャナの情報を第１の格納領域に格納し、前記受信通知をアプリケーションへ通知する処理と、前記アプリケーションから、前記受信通知に対応する識別情報の取得依頼を受けると、前記特定スキャナから前記取得依頼に対応する識別情報を前記アプリケーションへ通知する処理と、を含み、前記特定スキャナの情報を前記第１の格納領域に格納する処理は、前記アプリケーションから、前記識別情報を受信したことの通知を受けると、前記第１の格納領域にすでに格納されているスキャナの情報をクリアし、前記受信通知をアプリケーションへ通知する処理は、前記第１の格納領域に前記特定スキャナの情報が格納されている場合には、前記第１の格納領域に格納されているスキャナの情報がクリアされるまで、前記第１の格納領域に格納されている前記特定スキャナの情報以外のスキャナの受信通知を前記アプリケーションへ通知しない処理を実行させることを特徴とする。
【発明の効果】
【０００８】
一態様によれば、既存のアプリケーションやハードウェアを変更せずに、複数のスキャナを制御することを可能とする複数スキャナ制御プログラムを提供できる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態のＰＯＳ端末の概要を説明する図である。
【図２】本発明の実施形態のキャッシャユニット３０のハードウェア構成の一例を示す図である。
【図３】本発明の実施形態のチェッカユニット４０のハードウェア構成の一例を示す図である。
【図４】本発明の実施形態のＰＯＳ端末２１のソフトウェア構成の一例を示す図である。
【図５】複数バーコードスキャナ制御プログラム３００のソフトウェア構成の一例を示す図である。
【図６】動作情報格納領域の構成の一例を示す図である
【図７】アプリケーション２００からのスキャナＯＰＥＮ依頼時に対象となる複数のスキャナをＯＰＥＮする処理の流れの一例を示す図である
【図８】アプリケーション２００からのスキャナＣＬＯＳＥ依頼時に対象となる複数のスキャナをＣＬＯＳＥする処理の流れの一例を示す図である。
【図９】各スキャナの状態をアプリケーション２００へ通知する処理の流れの一例を示す図である。
【図１０】各スキャナから読み取ったバーコードデータをアプリケーション２００へ通知する処理の流れの一例を示す図である。
【図１１Ａ】複数バーコードスキャナ制御プログラム３００の詳細フローチャートの一例を示す図である。
【図１１Ｂ】複数バーコードスキャナ制御プログラム３００の詳細フローチャートの一例を示す図である。
【図１１Ｃ】複数バーコードスキャナ制御プログラム３００の詳細フローチャートの一例を示す図である。
【図１１Ｄ】複数バーコードスキャナ制御プログラム３００の詳細フローチャートの一例を示す図である。
【図１１Ｅ】複数バーコードスキャナ制御プログラム３００の詳細フローチャートの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下に本発明の実施形態について図面を参照しながら詳細に説明する。図１は、本発明の実施形態のＰＯＳ端末の概要を説明する図である。ＰＯＳ端末２１は、キャッシャユニット３０と、チェッカユニット４０を有する。
【００１１】
キャッシャユニット３０は、主として販売代金の受領作業を行うためのユニットである。キャッシャユニット３０は、制御ユニット３１ａ、自動釣銭機３２、キャッシュドロア３３、自動釣札機３４、キーボード３５、タッチパネル３６、ディスプレイ３７、ＲＦＩＤスキャナ３８、プリンタ３９を有する。
【００１２】
制御ユニット３１ａは、キャッシャユニット３０を制御するとともに、ＰＯＳ端末２１を統括的に制御するコンピュータである。自動釣銭機３２は、顧客から受け取った硬貨の入金と、釣銭の出金とを行う。自動釣札機３４は、顧客から受け取った紙幣の入金と、釣札の出金とを行う。キャッシュドロア３３は、硬貨および紙幣を収納する収納庫である。ディスプレイ３７は、取引作業を行うための所定のＧＵＩ（Graphical User Interface）を表示する。ディスプレイ３７は、例えば、液晶ディスプレイである。ディスプレイ３７は、タッチパネル３６の下層に位置している。ディスプレイ３７の表示する画像は、タッチパネル３６を透過して、オペレータから視認可能である。オペレータは、ディスプレイ３７によって表示された画像を見ながら、タッチパネル３６に対するタッチ操作を行うことができる。キーボード３５は、ディスプレイ３７に表示されたＧＵＩを操作するための入力装置である。ＲＦＩＤスキャナ３８は、商品に付されたＲＦタグから無線通信によってＲＦタグ内のバーコードデータを含む情報を読み取る装置である。ＲＦＩＤスキャナ３８は、ＲＦタグに情報を記録可能なＲＦＩＤタグリーダライタ装置であってもよい。ＲＦタグはＲＦタグ情報を記憶するＲＦＩＤタグ（ＩＣタグ、ＲＦタグともいう。）であり、バーコードデータを含む情報が記憶されている。ＲＦタグ情報はＲＦタグに記録された情報である。ＲＦＩＤスキャナ３８は据え置きタイプであってもいし、ハンディタイプであってもよい。ＲＦＩＤスキャナ３８は、読み取ったバーコードデータを制御ユニット３１ａへ通知する。
【００１３】
チェッカユニット４０は、主として商品コードの入力作業を行うためのユニットである。チェッカユニット４０は、タッチパネル４１、スピーカ４２、レーン台４３、支柱４４、固定スキャナ４５、多項目キーボード４６、ディスプレイ４７、タッチスキャナ４８を有する。
【００１４】
レーン台４３は、支柱４４を支持する。また、レーン台４３には、客が持参した買い物かごや、買い物かごに投入された商品が載置される。支柱４４は、タッチパネル４１、スピーカ４２、固定スキャナ４５、多項目キーボード４６、ディスプレイ４７、タッチスキャナ４８を支持する。固定スキャナ４５は、商品に付与されたバーコードを読み取るための据え置きタイプの装置である。オペレータは、商品に付されたバーコードを固定スキャナ４５に向けてかざすことで、固定スキャナ４５を入力装置とした商品コードの入力を行う。固定スキャナ４５は、読み取ったバーコードデータを後述の制御ユニット３１ｂへ通知する。タッチスキャナ４８は、商品に付与されたバーコードを読み取るためのハンディタイプの装置である。オペレータは、タッチスキャナ４８を商品に付されたバーコードに向けてかざすことで、タッチスキャナ４８を入力装置とした商品コードの入力を行う。タッチスキャナ４８は、読み取ったバーコードデータを後述の制御ユニット３１ｂへ通知する。
【００１５】
上述したように、ＰＯＳ端末２１は、３つのスキャナ（ＲＦＩＤスキャナ３８、固定スキャナ４５、タッチスキャナ４８）を有している。但し、ＲＦＩＤスキャナ３８、固定スキャナ４５およびタッチスキャナ４８は、入力装置の一例であり、バーコードを読取可能な他の端末であってもよい。商品コードの入力結果は、ディスプレイ４７に表示されて、オペレータが商品コードの入力結果を確認することができる。また、タッチパネル４１は、バーコードやＲＦタグの付されていない商品（例えば、ばら売りの野菜や魚等の生鮮食料品や、惣菜等）をディスプレイ４７に表示される商品群から選択する入力装置である。スピーカ４２は、音声で入力結果を報知する。多項目キーボード４６は、オペレータによる各種入力操作を受け付ける。
【００１６】
次に、ＰＯＳ端末２１のうちキャッシャユニット３０のハードウェア構成について説明する。図２は、本発明の実施形態のキャッシャユニット３０のハードウェア構成の一例を示す図である。
【００１７】
キャッシャユニット３０は、制御ユニット３１ａに各種入出力装置を接続する。制御ユニット３１ａは、ＣＰＵ１３１ａによって装置全体が制御されている。ＣＰＵ１３１ａには、バス１３７ａを介してＲＡＭ（Random Access Memory）１３２ａと、ＨＤＤ（Hard Disk Drive：ハードディスクドライブ）１３３ａ、通信インタフェース１３４ａ、グラフィック処理装置１３５ａ、入出力インタフェース１３６ａが接続されている。
【００１８】
ＲＡＭ１３２ａには、ＣＰＵ１３１ａに実行させるＯＳ（Operating System）のプログラム、ＰＯＳ業務を実行するためのアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１３２ａにはＣＰＵ１３１ａによる処理に必要な各種データが格納される。ＨＤＤ１３３ａにはＯＳ、アプリケーションプログラムが格納される。
【００１９】
グラフィック処理装置１３５ａには、ディスプレイ３７が接続されている。グラフィック処理装置１３５ａはＣＰＵ１３１ａからの命令に応じて、画像をディスプレイ３７の画面に表示させる。
【００２０】
入出力インタフェース１３６ａには、自動釣銭機３２、キャッシュドロア３３、自動釣札機３４、キーボード３５、タッチパネル３６、ＲＦＩＤスキャナ３８、プリンタ３９が接続されている。また、入出力インタフェース１３６ａは、可搬型記録媒体１３８ａへの情報の書込み、並びに、可搬型記録媒体１３８ａからの情報の読出しが可能な可搬型記録媒体インタフェース（不図示）と接続可能になっている。入出力インタフェース１３６ａは、キーボード３５と、自動釣銭機３２、キャッシュドロア３３、自動釣札機３４、タッチパネル３６、ＲＦＩＤスキャナ３８、プリンタ３９、可搬型記録媒体インタフェースからそれぞれ送られてくる信号をバス１３７ａを介してＣＰＵ１３１ａに送信する。
【００２１】
通信インタフェース１３４ａは、例えば、ＲＳ−２３２Ｃ（Recommended Standard 232 version C）、ＵＳＢ（Universal Serial Bus）接続の接続形式でチェッカユニット４０に接続されている。通信インタフェース１３４ａは、チェッカユニット４０との間でデータの送受信を行う。
【００２２】
次に、ＰＯＳ端末２１のうちチェッカユニット４０のハードウェア構成について説明する。図３は、本発明の実施形態のチェッカユニット４０のハードウェア構成の一例を示す図である。
【００２３】
チェッカユニット４０は、制御ユニット３１ｂを備え、制御ユニット３１ｂによって各種入出力装置を統括的に制御している。制御ユニット３１ｂは、ＣＰＵ１３１ｂによって装置全体が制御されている。ＣＰＵ１３１ｂには、バス１３７ｂを介してＲＡＭ１３２ｂと、ＨＤＤ１３３ｂ、通信インタフェース１３４ｂ、グラフィック処理装置１３５ｂ、入出力インタフェース１３６ｂが接続されている。なお、ＲＡＭ１３２ｂと、ＨＤＤ１３３ｂ、通信インタフェース１３４ｂ、グラフィック処理装置１３５ｂ、入出力インタフェース１３６ｂは、キャッシャユニット３０が備えるＲＡＭ１３２ａと、ＨＤＤ１３３ａ、通信インタフェース１３４ａ、グラフィック処理装置１３５ａ、入出力インタフェース１３６ａと同様の構成であるために、これらの詳細な説明については省略する。
【００２４】
但し、入出力インタフェース１３６ｂには、タッチパネル４１、スピーカ４２、固定スキャナ４５、多項目キーボード４６、タッチスキャナ４８が接続されている。
【００２５】
固定スキャナ４５およびタッチスキャナ４８は、例えば、撮像素子（ＣＣＤ（Charge Coupled Device）イメージセンサ、ＣＭＯＳ（Complementary Metal Oxide Semiconductor）イメージセンサ等）を備え、撮像素子が出力する画像情報から各種情報を取得する。また、入出力インタフェース１３６ｂは、可搬型記録媒体１３８ｂへの情報の書込み、および可搬型記録媒体１３８ｂからの情報の読出しが可能な可搬型記録媒体インタフェース（不図示）と接続可能になっている。入出力インタフェース１３６ｂは、固定スキャナ４５、タッチスキャナ４８、スピーカ４２、多項目キーボード４６、タッチパネル４１、並びに、可搬型記録媒体インタフェースから送られてくる信号を、バス１３７ｂを介してＣＰＵ１３１ｂに送信する。
【００２６】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
【００２７】
また、キャッシャユニット３０およびチェッカユニット４０は、それぞれＦＰＧＡ（Field Programmable Gate Array）やＤＳＰ（Digital Signal Processer）等からなるモジュールを含んで構成することもでき、ＣＰＵ１３１ａ，１３１ｂを有しない構成とすることもできる。その場合、制御ユニット３１ａ、３１ｂは、それぞれ不揮発性メモリ（例えば、ＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）、フラッシュメモリ、フラッシュメモリ型メモリカード等）を備え、モジュールのファームウェアを記憶する。不揮発性メモリは、可搬型記録媒体１３８ａ、１３８ｂあるいは通信インタフェース１３４ａ、１３４ｂを介してファームウェアを書き込むことができる。このように制御ユニット３１ａ、３１ｂは、不揮発性メモリに記憶されているファームウェアを書き換えることにより、ファームウェアの更新をすることもできる。
【００２８】
なお、キャッシャユニット３０のＣＰＵ１３１ａと、チェッカユニット４０のＣＰＵ１３１ｂと、はそれぞれ分かれて構成されているが、本実施形態においては、どちらのＣＰＵで制御しても構わない。従って、以後、特に区別して説明する必要がない場合には、ＣＰＵ１３１ａおよびＣＰＵ１３１ｂを合わせて「ＣＰＵ１３１」と称する。
【００２９】
同様に、キャッシャユニット３０のＲＡＭ１３２ａと、チェッカユニット４０のＲＡＭ１３２ｂと、はそれぞれ分かれて構成されているが、本実施形態においては、どちらのＲＡＭに情報が格納されていても構わない。従って、以後、特に区別して説明する必要がない場合には、ＲＡＭ１３２ａおよびＲＡＭ１３２ｂを合わせて「ＲＡＭ１３２」と称する。
【００３０】
同様に、キャッシャユニット３０のＨＤＤ１３３ａと、チェッカユニット４０のＨＤＤ１３３ｂと、はそれぞれ分かれて構成されているが、本実施形態においては、どちらのＨＤＤに情報が格納されていても構わない。従って、以後、特に区別して説明する必要がない場合には、ＨＤＤ１３３ａおよびＨＤＤ１３３ｂを合わせて「ＨＤＤ１３３」と称する。
【００３１】
次に、ＰＯＳ端末２１のソフトウェア構成について、説明する。図４は、本発明の実施形態のＰＯＳ端末２１のソフトウェア構成の一例を示す図である。
【００３２】
ＰＯＳ端末２１が実行するプログラムには、アプリケーション２００と、複数バーコードスキャナ制御プログラム（複数スキャナ制御プログラム）３００と、スキャナ制御プログラム４００と、がある。アプリケーション２００、複数バーコードスキャナ制御プログラム３００、スキャナ制御プログラム４００の処理は、何れもＣＰＵ１３１により実行される。アプリケーション２００と、複数バーコードスキャナ制御プログラム３００と、スキャナ制御プログラム４００と、を含む複数のプログラムが協働することによりＰＯＳ端末２１に接続されるスキャナに各種の処理を実行させる。本実施形態においては、固定スキャナ４５、タッチスキャナ４８、ＲＦＩＤスキャナ３８を含む複数のスキャナがＰＯＳ端末２１へ接続される。
【００３３】
スキャナ制御プログラム４００は、固定スキャナ４５、タッチスキャナ４８、ＲＦＩＤスキャナ３８を含む複数のスキャナから受信したバーコードデータ（識別情報）を受信した旨の受信通知や、バーコードデータの通知を複数バーコードスキャナ制御プログラム３００へ通知する。
【００３４】
スキャナ制御プログラム４００は、既存の規格により構成され、各スキャナに対応した制御プログラムを有している。例えば、スキャナ制御プログラム４００は、固定スキャナ制御プログラム４０１、タッチスキャナ制御プログラム４０２、ＲＦＩＤスキャナ制御プログラム４０３、を有している。固定スキャナ制御プログラム４０１は、固定スキャナ４５の制御を行い、固定スキャナ４５によるバーコードデータの取得、バーコードデータを受信した旨の受信通知、バーコードデータの通知等の制御を行う。タッチスキャナ制御プログラム４０２は、タッチスキャナ４８の制御を行い、タッチスキャナ４８によるバーコードデータの取得、バーコードデータを受信した旨の受信通知、バーコードデータの通知等の制御を行う。ＲＦＩＤスキャナ制御プログラム４０３は、ＲＦＩＤスキャナ３８の制御を行い、ＲＦＩＤスキャナ３８によるバーコードデータの取得、バーコードデータを受信した旨の受信通知、バーコードデータの通知等の制御を行う。
【００３５】
複数バーコードスキャナ制御プログラム３００は、スキャナ制御プログラム４００がアプリケーション２００へ提供するインタフェースと同様のインタフェースをアプリケーション２００へ提供し、スキャナ制御プログラム４００を介して各スキャナから通知された受信通知やバーコードデータの通知を、アプリケーション２００へ通知する。具体的には、スキャナ制御プログラム４００を介して複数のスキャナから通知された受信通知やバーコードデータの通知を、１つのスキャナから通知された情報として、各スキャナから通知された順にアプリケーション２００へ通知する。
【００３６】
アプリケーション２００は、ＰＯＳ端末２１で実行するプログラムであり、スキャナ制御プログラム４００により制御された複数のスキャナからの情報を、複数バーコードスキャナ制御プログラム３００を介することで、１つのスキャナから依頼された処理として扱える。
【００３７】
アプリケーション２００は、スキャナに対する処理を実行するための要求を複数バーコードスキャナ制御プログラム３００に依頼する。アプリケーション２００は、複数バーコードスキャナ制御プログラム３００からの要求に対応する応答を通知する。
【００３８】
従って、複数バーコードスキャナ制御プログラム３００を実行することにより、アプリケーション２００は、擬似的に１つのスキャナとして処理を行うことができ、アプリケーション２００、またはスキャナのハードウェアの改修を行わずに、複数のスキャナを制御することができる。
【００３９】
次に、複数バーコードスキャナ制御プログラム３００のソフトウェア構成について説明する。図５は、複数バーコードスキャナ制御プログラム３００のソフトウェア構成の一例を示す図である。
【００４０】
複数バーコードスキャナ制御プログラム３００は、ＰＯＳ端末２１に接続された固定スキャナ４５、タッチスキャナ４８、ＲＦＩＤスキャナ３８を含む複数のスキャナを制御する。具体的には、複数バーコードスキャナ制御プログラム３００は、主制御部３０１と、受信処理中情報処理部３０２と、識別情報通知処理部３０３と、データ受信通知情報格納処理部３０４と、スキャナ状態監視部３０５と、動作情報処理部３０６と、を少なくとも有する。
【００４１】
ＲＡＭ１３２は、受信処理中情報格納領域６０１と、データ受信通知情報格納領域６０２と、動作情報格納領域６０３と、を含む領域が設定されている。
【００４２】
受信処理中情報格納領域６０１には、データ受信処理中フラグ（ＯＮ／ＯＦＦ）情報として、そのスキャナのスキャナ名称の文字列が格納されている。スキャナ名称が格納されている場合がデータ受信処理中フラグＯＮを示す。
【００４３】
データ受信通知情報格納領域６０２には、アプリケーション２００がバーコードデータの取得要求を行った場合に取得対象となるスキャナの情報として、そのスキャナのスキャナ名称の文字列が格納されている。
【００４４】
動作情報格納領域６０３には、固定スキャナ４５、タッチスキャナ４８、ＲＦＩＤスキャナ３８を含む複数のスキャナの動作情報が格納されている。動作情報格納領域６０３の構成について説明する。図６は、ＲＡＭ１３２に格納されている動作情報格納領域６０３の構成の一例を示す図である。
【００４５】
動作情報には、各スキャナの属性の情報、スキャナ名称の情報、ＯＰＥＮ状態の情報、接続状態の情報、排他制御待ちの情報が含まれる。
【００４６】
属性の情報とは、複数バーコードスキャナ制御プログラム３００がアプリケーション２００へ接続を通知するか否かを判断するための情報であり、必須の属性と、オプションの属性と、を有する。複数バーコードスキャナ制御プログラム３００は、属性が必須のスキャナの全てが接続（オンライン）されている場合にＰＯＳ端末２１のスキャナは接続状態であると判別する。これに対し、属性が必須のスキャナの１つでも未接続（オフライン）である場合には、ＰＯＳ端末２１のスキャナは未接続状態であると判別する。なお、オプションの属性のスキャナが接続（オンライン）であっても、属性が必須のスキャナのうち１つでも未接続（オフライン）である場合には、複数バーコードスキャナ制御プログラム３００は、未接続状態であると判別する。即ち、属性が必須に設定されたスキャナのすべてが接続されているか否かに応じて、複数バーコードスキャナ制御プログラム３００は、スキャナの接続状態を判別する。複数のスキャナのうち、何れか１つ以上スキャナに対し必須の属性が設定される。以下、属性が必須に設定されているスキャナを「必須スキャナ」と称する。
【００４７】
スキャナ名称の情報には、該当のスキャナを示す固有の文字列が格納される。例えば、スキャナの名称の情報として、固定スキャナ、ＲＦＩＤスキャナ、タッチスキャナ、を含むスキャナの名称が含まれる。
【００４８】
ＯＰＥＮ状態の情報には、各スキャナ名称のスキャナが未ＯＰＥＮ（ＣＬＯＳＥ）の状態なのかＯＰＥＮ済の状態なのかを示す情報が格納されている。後述のスキャナＯＰＥＮ依頼があったスキャナのＯＰＥＮ状態は、ＯＰＥＮ済となり、後述のスキャナＣＬＯＳＥ依頼があったスキャナのＯＰＥＮ状態は、未ＯＰＥＮ（ＣＬＯＳＥ）となる。
【００４９】
接続状態の情報には、各スキャナがオンラインなのかオフラインなのかを示す情報が格納される。対象のスキャナがＰＯＳ端末２１に接続されている場合には、スキャナの接続情報はオンラインに設定される。これに対し、対象のスキャナがＰＯＳ端末２１に接続されていない場合には、スキャナの接続情報はオフラインに設定される。
【００５０】
排他制御待ちの情報には、０（無）か、１以上（有）の値が含まれる。スキャナ名称が受信処理中情報格納領域６０１に格納されていないスキャナは、排他制御待ちの値が０に設定される。これに対し、スキャナ名称が受信処理中情報格納領域６０１に格納されているスキャナは、排他制御待ちの値が１以上に設定される。既に値が１の状態でさらに排他制御を待つ場合は２となり順次増加する。排他待ちが解除された際、数値の小さいスキャナの処理が実行される。
【００５１】
図５の説明に戻り、主制御部３０１は、複数バーコードスキャナ制御プログラム３００を制御する。
【００５２】
受信処理中情報処理部３０２は、固定スキャナ４５、タッチスキャナ４８、ＲＦＩＤスキャナ３８のうちいずれかのスキャナから、バーコードデータの受信通知を受けると、受信処理中情報格納領域６０１の内容を確認する。データ受信処理中フラグＯＦＦの状態の場合、バーコードデータを取得したスキャナの情報を受信処理中情報格納領域６０１（第１の格納領域）に格納し、データ受信処理中フラグＯＮの状態に遷移させる。
本実施形態においては、受信通知をしたスキャナのスキャナ名称をスキャナの情報として受信処理中情報格納領域６０１に格納し、後述するデータ受信通知情報格納処理部３０４を呼び出す。また、受信処理中情報処理部３０２は、アプリケーション２００から、バーコードデータを受信したことの通知を受けると、受信処理中情報格納領域６０１に格納されているスキャナの情報をクリアする。
【００５３】
また、受信処理中情報処理部３０２は、バーコードデータの受信通知を受けると、受信通知をアプリケーション２００へ通知する。但し、受信処理中情報格納領域６０１にスキャナの情報（スキャナ名称）が格納されている場合には、受信処理中情報処理部３０２は、受信処理中情報格納領域６０１に格納されている情報がクリアされるまで、受信処理中情報格納領域６０１に格納されているスキャナの情報以外のスキャナの受信通知をアプリケーション２００へ通知しない。例えば、受信処理中情報格納領域６０１に、「固定スキャナ」のスキャナ名称が格納されている場合に、この「固定スキャナ」以外のスキャナである「ＲＦＩＤスキャナ」から受信通知が来た場合であっても、受信処理中情報処理部３０２は、ＲＦＩＤスキャナ３８からの受信通知をアプリケーション２００へ通知しない。
【００５４】
データ受信通知情報格納処理部３０４は、スキャナの情報としてスキャナ名称をデータ受信通知情報格納領域６０２（第２の格納領域）に格納する。そして、識別情報通知処理部３０３は、アプリケーション２００から、受信通知に対応するバーコードデータの取得依頼を受けると、データ受信通知情報格納領域６０２に格納されたスキャナ名称のスキャナからバーコードデータを取得し、取得したバーコードデータをアプリケーション２００へ通知する。
【００５５】
スキャナ状態監視部３０５は、固定スキャナ４５、タッチスキャナ４８、ＲＦＩＤスキャナ３８を含む複数のスキャナのうち、必須の属性を有する必須スキャナの接続状態の通知を受けると、必須の属性を有する必須スキャナの接続状態をアプリケーション２００へ通知する。一方で、スキャナ状態監視部３０５は、必須以外の属性（例えば、オプションの属性）を有するスキャナの接続状態の通知を受けた場合は、必須以外の属性を有するスキャナの接続状態をアプリケーション２００へ通知しない。具体的には、スキャナ状態監視部３０５は、固定スキャナ４５、タッチスキャナ４８、ＲＦＩＤスキャナ３８を含む複数のスキャナのうち、スキャナの接続状態の通知を受けると、スキャナの接続状態の情報を動作情報格納領域６０３に格納し、必須の属性を有するスキャナからの情報のみをアプリケーション２００へ通知する。
【００５６】
動作情報処理部３０６は、受信処理中情報格納領域６０１にスキャナ名称が格納されている場合に、受信処理中情報格納領域６０１に格納されているスキャナ名称以外の別のスキャナの受信通知があった場合には、当該別のスキャナの排他制御待ちの情報として動作情報格納領域６０３（第３の格納領域）に所定値を設定する。一方で、受信処理中情報格納領域６０１にスキャナ名称が格納されていない場合には、動作情報処理部３０６は、当該別のスキャナの排他制御待ちの情報として動作情報格納領域６０３に０を設定する。
【００５７】
受信処理中情報処理部３０２は、動作情報格納領域６０３に格納されているスキャナ情報のうち、排他制御待ちの値が最小であるスキャナ情報を、受信処理中情報格納領域６０１に格納する。
【００５８】
次に、アプリケーション２００、複数バーコードスキャナ制御プログラム３００、スキャナ制御プログラム４００の処理の流れについて説明する。本実施形態においては、固定スキャナ４５、タッチスキャナ４８、ＲＦＩＤスキャナ３８のうち、固定スキャナ４５と、ＲＦＩＤスキャナ３８を対象とするスキャナ（以下、「対象スキャナ」とも称する）に設定する。そして、固定スキャナ４５の属性は必須に設定されている。一方でＲＦＩＤスキャナ３８の属性はオプションに設定されている。
【００５９】
複数のスキャナをＯＰＥＮする処理の流れについて説明する。図７は、アプリケーション２００からのスキャナＯＰＥＮ依頼時に対象となる複数のスキャナをＯＰＥＮする処理の流れの一例を示す図である。
【００６０】
はじめに、アプリケーション２００は、複数バーコードスキャナ制御プログラム３００に対し、スキャナＯＰＥＮ依頼を行う（ステップＳ１１）。複数バーコードスキャナ制御プログラム３００は、固定スキャナ制御プログラム４０１に対し、必須の属性が設定されている固定スキャナ４５のスキャナＯＰＥＮ依頼を行う（ステップＳ１２）。固定スキャナ制御プログラム４０１は、固定スキャナＯＰＥＮ処理を行う（ステップＳ１３）。固定スキャナ制御プログラム４０１は、複数バーコードスキャナ制御プログラム３００に対し、ＯＰＥＮ処理結果の通知を行う（ステップＳ１４）。
【００６１】
複数バーコードスキャナ制御プログラム３００は、ＯＰＥＮ処理結果の判定を行う（ステップＳ１５）。複数バーコードスキャナ制御プログラム３００は、結果判定がＮＧである場合には、アプリケーション２００は、異常復帰する（ステップＳ１６）。
【００６２】
これに対し、結果判定がＯＫである場合には、複数バーコードスキャナ制御プログラム３００は、ＲＦＩＤスキャナ制御プログラム４０３に対し、オプションの属性が設定されているＲＦＩＤスキャナ３８のスキャナＯＰＥＮ依頼を行う（ステップＳ１７）。
【００６３】
ＲＦＩＤスキャナ制御プログラム４０３は、ＲＦＩＤスキャナＯＰＥＮ処理を行う（ステップＳ１８）。ＲＦＩＤスキャナ制御プログラム４０３は、複数バーコードスキャナ制御プログラム３００に対し、ＯＰＥＮ処理結果の通知を行う（ステップＳ１９）。複数バーコードスキャナ制御プログラム３００は、ＲＦＩＤスキャナ制御プログラム４０３から通知されたＯＰＥＮ処理結果に関わらず、アプリケーション２００に対し、正常を通知する（ステップＳ２０）。アプリケーション２００は、正常復帰する（ステップＳ２１）。
【００６４】
次に、複数のスキャナをＣＬＯＳＥする処理の流れについて説明する。
図８は、アプリケーション２００からのスキャナＣＬＯＳＥ依頼時に対象となる複数のスキャナをＣＬＯＳＥする処理の流れの一例を示す図である。
【００６５】
はじめに、アプリケーション２００は、複数バーコードスキャナ制御プログラム３００に対し、スキャナＣＬＯＳＥ依頼を行う（ステップＳ３１）。複数バーコードスキャナ制御プログラム３００は、スキャナ制御プログラム４００に対し、必須の属性が設定されている固定スキャナ４５のスキャナＣＬＯＳＥ依頼を行う（ステップS３２）。
【００６６】
固定スキャナ制御プログラム４０１は、固定スキャナＣＬＯＳＥ処理を行う（ステップＳ３３）。固定スキャナ制御プログラム４０１は、複数バーコードスキャナ制御プログラム３００に対し、ＣＬＯＳＥ処理結果の通知を行う（ステップＳ３４）。
【００６７】
複数バーコードスキャナ制御プログラム３００は、ＣＬＯＳＥ処理結果をＲＡＭ１３２に保存する（ステップＳ３５）。複数バーコードスキャナ制御プログラム３００は、ＲＦＩＤスキャナ制御プログラム４０３に対し、オプションの属性が設定されているＲＦＩＤスキャナ３８のスキャナＣＬＯＳＥ依頼を行う（ステップＳ３６）。
【００６８】
ＲＦＩＤスキャナ制御プログラム４０３は、ＲＦＩＤスキャナＣＬＯＳＥ処理を行う（ステップＳ３７）。ＲＦＩＤスキャナ制御プログラム４０３は、複数バーコードスキャナ制御プログラム３００に対し、ＣＬＯＳＥ処理結果の通知を行う（ステップＳ３８）。複数バーコードスキャナ制御プログラム３００は、保存した結果にて復帰する（ステップＳ３９）。そして、アプリケーション２００は、正常復帰または異常復帰する（ステップＳ４０）。
【００６９】
次に、各スキャナの状態をアプリケーション２００へ通知する処理の流れについて説明する。図９は、各スキャナの状態をアプリケーション２００へ通知する処理の流れの一例を示す図である。
【００７０】
はじめに、必須スキャナである固定スキャナ４５がＰＯＳ端末２１に接続された場合について説明する。スキャナ制御プログラム４００の固定スキャナ制御プログラム４０１は、固定スキャナ４５が入出力インタフェース１３６ｂに接続されると、固定スキャナ４５がＰＯＳ端末２１に接続されていることを認識する（ステップＳ５１）。固定スキャナ制御プログラム４０１は、複数バーコードスキャナ制御プログラム３００に固定スキャナ４５の接続の状態を通知する（ステップＳ５２）。複数バーコードスキャナ制御プログラム３００は、必須スキャナからの通知であるか否かを判定する（ステップＳ５３）。固定スキャナ４５は必須スキャナである（ステップＳ５３のＹＥＳ）ので、複数バーコードスキャナ制御プログラム３００は、アプリケーション２００にスキャナの接続の状態を通知する（ステップＳ５４）。必須スキャナでない場合は、ステップＳ６３で後述する。アプリケーション２００は、複数バーコードスキャナ制御プログラム３００からスキャナの接続の状態の通知を受けると、通知されたスキャナの状態を取得してＲＡＭ１３２に保存する割り込み処理を行う（ステップＳ５５）。その後、アプリケーション２００は、スキャナ状態を保存したことを複数バーコードスキャナ制御プログラム３００へ通知する。通知を受けた複数バーコードスキャナ制御プログラム３００は、状態通知の復帰を行う（ステップＳ５６）。固定スキャナ制御プログラム４０１は、状態通知が復帰したことを認識し、この処理は終了となる（ステップＳ５７）。
【００７１】
これに対し、必須スキャナではないＲＦＩＤスキャナ３８がＰＯＳ端末２１に接続された場合について説明する。ＲＦＩＤスキャナ制御プログラム４０３は、ＲＦＩＤスキャナ３８が入出力インタフェース１３６ａに接続されると、ＲＦＩＤスキャナ３８がＰＯＳ端末２１に接続されていることを認識する（ステップＳ６１）。ＲＦＩＤスキャナ制御プログラム４０３は、複数バーコードスキャナ制御プログラム３００にＲＦＩＤスキャナ３８の接続の状態を通知する（ステップＳ６２）。複数バーコードスキャナ制御プログラム３００は、必須スキャナからの通知であるか否かを判定する（ステップＳ６３）。ＲＦＩＤスキャナ３８は必須スキャナではなくオプションの属性のスキャナである（ステップＳ６３のＮＯ）ので、複数バーコードスキャナ制御プログラム３００は、アプリケーション２００に接続状態の通知を行わずに、状態通知の復帰を行う。ＲＦＩＤスキャナ制御プログラム４０３は、状態通知が復帰したことを認識し、この処理は終了となる（ステップＳ６４）。
【００７２】
次に、各スキャナから読み取ったバーコードデータをアプリケーション２００へ通知する処理の流れについて説明する。
【００７３】
図１０は、各スキャナから読み取ったバーコードデータをアプリケーション２００へ通知する処理の流れの一例を示す図である。
【００７４】
はじめに、固定スキャナ制御プログラム４０１は、固定スキャナ４５がバーコードデータを読取ると、データ受信イベントが発生する（ステップＳ７１）。固定スキャナ制御プログラム４０１は、読み取ったバーコードデータを取得する（ステップＳ７２）。固定スキャナ制御プログラム４０１は、データを受信したことを複数バーコードスキャナ制御プログラム３００へ通知する（ステップＳ７３）。
【００７５】
複数バーコードスキャナ制御プログラム３００は、固定スキャナ制御プログラム４０１からデータ受信通知を受けると、データ受信処理中フラグがＯＮであるか否かを判定する（ステップＳ７４）。データ受信処理中フラグとは、ＣＰＵ１３１がデータを受信処理中であることを示す情報である。具体的には、ＲＡＭ１３２の受信処理中情報格納領域６０１にスキャナ名称が格納されている場合をデータ受信処理中フラグＯＮと定義し、受信処理中情報格納領域６０１にスキャナ名称が格納されていない場合を、データ受信処理中フラグＯＦＦと定義する。データ受信処理中フラグＯＮである場合には、複数バーコードスキャナ制御プログラム３００は、受信処理中フラグがＯＦＦになるのを待つ。
【００７６】
これに対し、データ受信処理中フラグＯＦＦである場合（ステップＳ７４のＮＯ）には、複数バーコードスキャナ制御プログラム３００は、データ受信処理中フラグＯＮにする（ステップＳ７５）ため、ＲＡＭ１３２の受信処理中情報格納領域６０１にスキャナ名称として「固定スキャナ」を格納する。複数バーコードスキャナ制御プログラム３００は、データ受信処理中フラグＯＮにした後、該当スキャナのスキャナ名称をＲＡＭ１３２のデータ受信通知情報格納領域６０２に格納する。そして、複数バーコードスキャナ制御プログラム３００は、データを受信したことをアプリケーション２００へ通知する（ステップＳ７６）。
【００７７】
アプリケーション２００は、複数バーコードスキャナ制御プログラム３００からバーコードデータを受信すると、割り込み処理を開始する。そして、アプリケーション２００は、複数バーコードスキャナ制御プログラム３００にバーコードデータ取得依頼を行う（ステップＳ７７）。アプリケーション２００からバーコード取得依頼を受け付けると、複数バーコードスキャナ制御プログラム３００は、スキャナ制御プログラム４００に含まれる複数のスキャナ制御プログラムのうち、バーコードデータの受信通知を受けたスキャナ制御プログラムに対し、バーコードデータの取得依頼を行う（ステップＳ７８）。この処理では、複数バーコードスキャナ制御プログラム３００は、データ受信通知情報格納領域６０２に格納されているスキャナ名称のスキャナに対し、バーコードデータの取得依頼を行う。本例では、データ受信通知情報格納領域６０２には「固定スキャナ」の文字列が格納されているため、複数バーコードスキャナ制御プログラム３００は、固定スキャナ４５を制御する固定スキャナ制御プログラム４０１に対し、バーコードデータの取得依頼を行う。固定スキャナ制御プログラム４０１は、バーコードデータ取得依頼を受けると、複数バーコードスキャナ制御プログラム３００へバーコードデータを通知する（ステップＳ７９）。
【００７８】
複数バーコードスキャナ制御プログラム３００は、バーコードデータの通知を受けると、アプリケーション２００へバーコードデータを通知する（ステップＳ８０）。アプリケーション２００は、バーコードの通知を受けると、バーコードデータをＲＡＭ１３２へ保存する（ステップＳ８１）。そして、アプリケーション２００は、複数バーコードスキャナ制御プログラム３００へデータ受信通知復帰を行う。この処理が終了すると、アプリケーション２００の割り込み処理が終了する。複数バーコードスキャナ制御プログラム３００は、アプリケーション２００からデータ受信通知復帰を受けると、データ受信処理中フラグをＯＦＦにし（ステップＳ８２）、データ受信通知処理を復帰する。具体的には、複数バーコードスキャナ制御プログラム３００は、後述の受信処理中情報にスキャナ名称として格納されていた固定スキャナ４５の文字列をクリアする。そして、複数バーコードスキャナ制御プログラム３００は、データ受信通知処理を復帰したことを固定スキャナ制御プログラム４０１へ通知する。固定スキャナ制御プログラム４０１は、データ受信通知処理が復帰した通知を受けると、データ受信通知を復帰し（ステップＳ８３）、ステップＳ７３のデータ受信通知を再開する。
【００７９】
なお、上述の実施形態では、固定スキャナ制御プログラム４０１により、固定スキャナ４５が読み取ったバーコードデータをアプリケーション２００に通知する例について説明したが、ＲＦＩＤスキャナ３８が読み取ったバーコードデータおよびタッチスキャナ４８が読み取ったバーコードデータをアプリケーション２００へ通知する例についても同様の処理で行われるため、説明を省略する。
【００８０】
次に、複数バーコードスキャナ制御プログラム３００の詳細フローチャートについて説明する。図１１Ａ〜１１Ｅは、複数バーコードスキャナ制御プログラム３００の詳細フローチャートの一例を示す図である。
【００８１】
はじめに、主制御部３０１は、特定のファイルより動作情報を取得する（ステップＳ１０１）。特定のファイルは、例えばＨＤＤ１３３に記憶されている初期情報が記載されたファイルである。主制御部３０１は、取得した動作情報をＲＡＭ１３２に格納する（ステップＳ１０２）。主制御部３０１は、処理依頼待ちを行う（ステップＳ１０３）。主制御部３０１は、依頼処理判定を行う（ステップＳ１０４）。依頼処理判定の結果、アプリケーション２００からスキャナＯＰＥＮ依頼を受けた場合には、主制御部３０１は、ＲＡＭ１３２の動作情報格納領域６０３に格納されている動作情報より必須の属性が設定された最初の対象スキャナ名称を取得する（ステップＳ１０５）。主制御部３０１は、ステップＳ１０５で取得した対象スキャナの属性に必須の設定が有るか否かを判定する（ステップＳ１０６）。対象スキャナの属性に必須の設定がない場合（ステップＳ１０６のＮＯ）には、主制御部３０１は、復帰値に異常を格納し復帰する（ステップＳ１０７）。即ち、必須の属性が設定されているスキャナは１つ以上存在する必要があるため、必須の属性が設定されているスキャナがない場合には、主制御部３０１は異常と判断して処理を復帰する。この処理が終了すると、処理はステップＳ１０３へ戻る。
【００８２】
これに対し、対象スキャナの属性に必須の設定がある場合（ステップＳ１０６のＹＥＳ）には、スキャナ名称をＲＡＭ１３２のデータ受信通知情報格納領域６０２に格納する（ステップＳ１０８）。主制御部３０１は、ステップＳ１０５で取得したスキャナ名称のスキャナにスキャナＯＰＥＮを依頼する（ステップＳ１０９）。主制御部３０１は、対象のスキャナで行われたスキャナＯＰＥＮ処理結果の判定を行う（ステップＳ１１０）。スキャナＯＰＥＮ処理の結果判定がＮＧである場合（ステップＳ１１０のＮＧ）には、主制御部３０１は、ＯＰＥＮ済の全てのスキャナに対してスキャナＣＬＯＳＥを依頼する（ステップＳ１１１）。主制御部３０１は、ＲＡＭ１３２の受信処理中情報格納領域６０１、データ受信通知情報格納領域６０２、動作情報格納領域６０３、に格納されている情報をクリアする（ステップＳ１１２）。主制御部３０１は、復帰値に異常を格納し、復帰する（ステップＳ１１３）。この処理が終了すると、処理はステップＳ１０３へ戻る。
【００８３】
これに対し、スキャナＯＰＥＮ処理の結果判定がＯＫである場合（ステップＳ１１０のＯＫ）には、主制御部３０１は、ＲＡＭ１３２の動作情報格納領域６０３のＯＰＥＮ状態にＯＰＥＮ済、接続状態にオフライン、排他制御待ちに０、をそれぞれ設定する（ステップＳ１１４）。主制御部３０１は、ＲＡＭ１３２の動作情報格納領域６０３より必須の属性が設定された次の対象スキャナ名称を取得する（ステップＳ１１５）。
【００８４】
主制御部３０１は、ステップＳ１１５で取得した対象スキャナの属性に必須の設定が有るか否かを判定する（ステップＳ１１６）。対象スキャナの属性に必須の設定が有る場合（ステップＳ１１６のＹＥＳ）には、処理はステップＳ１０９に戻る。これに対し、対象スキャナの属性に必須の設定がない場合（ステップＳ１１６のＮＯ）には、主制御部３０１は、ＲＡＭ１３２の動作情報格納領域６０３より属性がオプションの最初の対象スキャナ名称を取得する（ステップＳ１１７）。例えば、図６の動作情報格納領域６０３の動作情報に基づいて、主制御部３０１は、属性がオプションに設定されているスキャナ名称のうち、最初の対象スキャナ名称として「ＲＦＩＤスキャナ」を取得する。なお、属性がオプションの対象スキャナがない場合には、この処理は省略される。
【００８５】
主制御部３０１は、ステップＳ１１７で取得した対象スキャナの属性にオプションの設定が有るか否かを判定する（ステップＳ１１８）。対象スキャナの属性にオプションの設定が有る場合（ステップＳ１１８のＹＥＳ）には、主制御部３０１は、取得した名称のスキャナにスキャナＯＰＥＮを依頼する（ステップＳ１１９）。
【００８６】
主制御部３０１は、対象のスキャナで行われたスキャナＯＰＥＮ処理結果の判定を行う（ステップＳ１２０）。スキャナＯＰＥＮ処理の結果判定がＮＧである場合（ステップＳ１２０のＮＧ）には、処理はステップＳ１２２に進む。
【００８７】
これに対し、結果判定がＯＫである場合（ステップＳ１２０のＯＫ）には、主制御部３０１は、動作情報格納領域６０３のＯＰＥＮ状態にＯＰＥＮ済、接続状態にオフライン、排他制御待ちに０、をそれぞれ設定する（ステップＳ１２１）。
【００８８】
主制御部３０１は、ＲＡＭ１３２の動作情報格納領域６０３より属性がオプションの次の対象スキャナ名称を取得する（ステップＳ１２２）。なお、オプションの属性が設定された対象スキャナ名称を最初に取得する場合には、主制御部３０１は、オプションの属性が設定された最初の対象スキャナ名称を取得する。この処理が終了すると、処理はステップＳ１１８に戻る。即ち、動作情報格納領域６０３内にあるオプションの属性が設定されている全てのスキャナに対して、ステップＳ１１８〜ステップＳ１２２の処理が繰り返し実行される。
【００８９】
そして、ステップＳ１１８〜ステップＳ１２２の処理が行われた結果、対象スキャナの属性にオプションの設定がなくなった場合（ステップＳ１１８のＮＯ）には、主制御部３０１は、復帰値に正常を格納し、復帰する（ステップＳ１２３）。この処理が終了すると、処理はステップＳ１０３へ戻る。
【００９０】
ステップＳ１０４の処理に戻り、依頼処理判定の結果、終了指示を受けた場合には、主制御部３０１は、ＲＡＭ１３２の受信処理中情報格納領域６０１、データ受信通知情報格納領域６０２、動作情報格納領域６０３、に格納されている情報をクリアする（ステップＳ１２４）。この処理が終了すると、複数バーコードスキャナ制御プログラム３００の詳細フローチャートの処理は終了となる。
【００９１】
ステップＳ１０４の処理に戻り、依頼処理判定の結果、アプリケーション２００からスキャナＣＬＯＳＥ依頼を受けた場合には、主制御部３０１は、ＲＡＭ１３２の動作情報格納領域６０３より必須の属性が設定された最初の対象スキャナ名称を取得する（ステップＳ１２５）。主制御部３０１は、ステップＳ１２５で取得した対象スキャナの属性に必須の設定が有るか否かを判定する（ステップＳ１２６）。対象スキャナの属性に必須の設定がない場合（ステップＳ１２６のＮＯ）には、主制御部３０１は、復帰値に異常を格納し復帰する（ステップＳ１２７）。即ち、必須の属性が設定されているスキャナは１つ以上存在する必要があるため、必須の属性が設定されたスキャナがない場合には、主制御部３０１は異常と判断して処理を復帰する。この処理が終了すると、処理はステップＳ１０３へ戻る。
【００９２】
これに対し、対象スキャナの属性に必須の設定がある場合（ステップＳ１２６のＹＥＳ）には、主制御部３０１は、ステップＳ１２５で取得したスキャナ名称のスキャナのＯＰＥＮ状態を取得する（ステップＳ１２８）。具体的には、主制御部３０１は、動作情報格納領域６０３のＯＰＥＮ状態を参照して、取得したスキャナのＯＰＥＮ状態を取得する。主制御部３０１は、ステップＳ１２８で取得したスキャナのＯＰＥＮ状態がＯＰＥＮ済であるか否かを判定する（ステップＳ１２９）。スキャナの状態がＯＰＥＮ済ではない場合（ステップＳ１２９のＮＯ）には、主制御部３０１は、復帰値に異常を格納し復帰する（ステップＳ１３０）。この処理が終了すると、処理はステップＳ１０３へ戻る。
【００９３】
これに対し、スキャナのＯＰＥＮ状態がＯＰＥＮ済である場合（ステップＳ１２９のＹＥＳ）には、主制御部３０１は、取得したスキャナ名称のスキャナにスキャナＣＬＯＳＥを依頼する（ステップＳ１３１）。主制御部３０１は、動作情報格納領域６０３のＯＰＥＮ状態に未ＯＰＥＮを設定する（ステップＳ１３２）。主制御部３０１は、ＲＡＭ１３２の動作情報格納領域６０３より必須の属性が設定された次の対象スキャナ名称を取得する（ステップＳ１３３）。
【００９４】
主制御部３０１は、ステップＳ１３３で取得した対象スキャナの属性に必須の設定が有るか否かを判定する（ステップＳ１３４）。対象スキャナの属性に必須の設定が有る場合（ステップＳ１３４のＹＥＳ）には、処理はステップＳ１２８に戻る。これに対し、対象スキャナの属性に必須の設定がない場合（ステップＳ１３４のＮＯ）には、主制御部３０１は、ＲＡＭ１３２動作情報格納領域６０３より属性がオプションに設定されている最初の対象スキャナ名称を取得する（ステップＳ１３５）。
【００９５】
主制御部３０１は、ステップＳ１３５で取得した対象スキャナの属性にオプションの設定が有るか否かを判定する（ステップＳ１３６）。対象スキャナの属性にオプションの設定が有る場合（ステップＳ１３６のＹＥＳ）には、主制御部３０１は、ステップＳ１３５で取得したスキャナ名称のスキャナのＯＰＥＮ状態を取得する（ステップＳ１３７）。
【００９６】
主制御部３０１は、ステップＳ１３７で取得したスキャナのＯＰＥＮ状態がＯＰＥＮ済であるか否かを判定する（ステップＳ１３８）。スキャナの状態がＯＰＥＮ済でない場合（ステップＳ１３８のＮＯ）には、処理はステップＳ１４１に進む。
【００９７】
これに対し、スキャナのＯＰＥＮ状態がＯＰＥＮ済である場合（ステップＳ１３８のＹＥＳ）には、主制御部３０１は、取得したスキャナ名称のスキャナにスキャナＣＬＯＳＥを依頼する（ステップＳ１３９）。主制御部３０１は、動作情報格納領域６０３のＯＰＥＮ状態に未ＯＰＥＮを設定する（ステップＳ１４０）。
【００９８】
主制御部３０１は、ＲＡＭ１３２に格納されている動作情報格納領域６０３よりオプションの属性が設定されている次の対象スキャナ名称を取得する（ステップＳ１４１）。この処理が終了すると、処理はステップＳ１３６に戻る。即ち、動作情報格納領域６０３内にあるオプションの属性が設定されている全てのスキャナに対して、ステップＳ１３６〜ステップＳ１４１の処理が繰り返し実行される。
【００９９】
そして、ステップＳ１３６〜ステップＳ１４１の処理が行われた結果、対象スキャナの属性にオプションの設定がなくなった場合（ステップＳ１３６のＮＯ）には、主制御部３０１は、復帰値に正常を格納し復帰する（ステップＳ１４２）。この処理が終了すると、処理はステップＳ１０３へ戻る。
【０１００】
ステップＳ１０４の処理に戻り、依頼処理判定の結果、該当スキャナからの状態通知を受けた場合には、スキャナ状態監視部３０５は、依頼のあったスキャナ名称のスキャナの接続状態を動作情報格納領域６０３に格納する（ステップＳ１４３）。例えば、該当スキャナが接続されている場合には、動作情報格納領域６０３に接続状態としてオンラインの情報が格納される。また、該当スキャナが接続されていない場合には、動作情報格納領域６０３に接続状態としてオフラインの情報が格納される。スキャナ状態監視部３０５は、依頼のあったスキャナ名称のスキャナの属性をＲＡＭ１３２の動作情報格納領域６０３より取得する（ステップＳ１４４）。
【０１０１】
スキャナ状態監視部３０５は、ステップＳ１４４で取得したスキャナの属性に必須の属性の設定が有るか否かを判定する（ステップＳ１４５）。取得したスキャナの属性に必須の設定が有る場合（ステップＳ１４５のＹＥＳ）には、スキャナ状態監視部３０５は、依頼のあったスキャナの接続状態をアプリケーション２００へ通知する（ステップＳ１４６）。この処理が終了すると、処理はステップＳ１０３へ戻る。これに対し、取得したスキャナの属性に必須の設定が無い場合（ステップＳ１４５のＮＯ）には、スキャナ状態監視部３０５は、依頼のあったスキャナの接続状態をアプリケーション２００へ通知しない。この処理が終了すると、処理はステップＳ１０３へ戻る。
【０１０２】
ステップＳ１０４の処理に戻り、依頼処理判定の結果、アプリケーション２００からの状態通知復帰の通知を受けた場合には、スキャナ状態監視部３０５は、状態通知処理を復帰する（ステップＳ１４７）。即ち、アプリケーション２００において、通知されたスキャナの状態が保存されると、アプリケーション２００から状態通知復帰の通知がされる。その通知を受けると、スキャナ状態監視部３０５は状態通知処理を復帰する。その後、スキャナ状態監視部３０５は、状態通知が復帰したことをスキャナ制御プログラム４００へ通知する。この処理が終了すると、処理はステップＳ１０３へ戻る。
【０１０３】
ステップＳ１０４の処理に戻り、依頼処理判定の結果、アプリケーション２００からのバーコードデータ取得依頼を受けると、識別情報通知処理部３０３は、バーコードデータ取得依頼を受け付け、ＲＡＭ１３２に格納されているデータ受信通知情報格納領域６０２からスキャナ名称を取得する（ステップＳ１４８）。識別情報通知処理部３０３は、ステップＳ１４８の処理で取得したスキャナ名称のスキャナに対し、バーコードデータの取得依頼を行う（ステップＳ１４９）。識別情報通知処理部３０３は、取得したバーコードデータをＲＡＭ１３２に格納して、アプリケーション２００へバーコードデータを通知する（ステップＳ１５０）。この処理が終了すると、処理はステップＳ１３０へ戻る。
【０１０４】
ステップＳ１０４の処理に戻り、依頼処理判定の結果、該当スキャナからのバーコードデータの受信通知を受けた場合には、動作情報処理部３０６は、ＲＡＭ１３２の動作情報格納領域６０３に格納されている属性が必須のスキャナの接続状態を取得する（ステップＳ１５１）。
【０１０５】
動作情報処理部３０６は、ステップＳ１５１で取得した属性が必須のスキャナの接続状態がオンラインであるか否かを判定する（ステップＳ１５２）。属性が必須のスキャナの接続状態がオンラインではない場合（ステップＳ１５２のＮＯ）には、スキャナ状態監視部３０５は、該当スキャナから受信通知を破棄し、処理はステップＳ１０３へ戻る。
【０１０６】
これに対し、属性が必須のスキャナの接続状態がオンラインである場合（ステップＳ１５２のＹＥＳ）には、受信処理中情報処理部３０２は、ＲＡＭ１３２の受信処理中情報格納領域６０１にスキャナ名称が格納されているか否かを判定する（ステップＳ１５３）。受信処理中情報格納領域６０１にスキャナ名称が格納されている場合には、該当スキャナのデータを受信処理中であることを示し、受信処理中情報格納領域６０１にスキャナ名称が格納されていない場合には、該当スキャナのデータを受信処理中ではないことを示す。受信処理中情報格納領域６０１にスキャナ名称が格納されていない場合（ステップＳ１５３のスキャナ名称無）には、受信処理中情報処理部３０２は、該当スキャナのスキャナ名称を受信処理中情報格納領域６０１に格納し、データ受信処理中フラグＯＮの状態に遷移させる（ステップＳ１５４）。
【０１０７】
動作情報処理部３０６は、動作情報格納領域６０３に格納されている該当スキャナの排他制御待ちに０を設定する（ステップＳ１５５）。受信処理中情報処理部は、該当スキャナのスキャナ名称をＲＡＭ１３２のデータ受信通知情報格納領域６０２に格納する（ステップＳ１５６）。受信処理中情報処理部３０２は、データを受信したことをアプリケーション２００へ通知する（ステップＳ１５７）。この処理が終了すると、処理はステップＳ１０３へ戻る。
【０１０８】
ステップＳ１５３の処理に戻り、受信処理中情報格納領域６０１にスキャナ名称が格納されている場合（ステップＳ１５３のスキャナ名称有）には、動作情報処理部３０６は、該当スキャナの動作情報格納領域６０３の排他制御待ちの最大値を獲得する（ステップＳ１５８）。動作情報処理部３０６は、動作情報格納領域６０３の排他制御待ちに最大値＋１の値を設定する（ステップＳ１５９）。動作情報処理部３０６は、設定した排他制御待ちの値でタイマーを起動する（ステップＳ１６０）。これにより、受信処理中情報格納領域６０１に格納されているスキャナ名称以外の他のスキャナは排他制御される。この処理が終了すると、処理はステップＳ１０３へ戻る。
【０１０９】
ステップＳ１０４の処理に戻り、依頼処理判定の結果、アプリケーション２００からのデータ受信通知復帰を受けた場合には、受信処理中情報処理部３０２は、ＲＡＭ１３２に格納されている受信処理中情報格納領域６０１の文字列をクリアする（ステップＳ１６１）。即ち、受信処理中情報処理部３０２は、データ受信処理中フラグをＯＦＦに設定する。そして、受信処理中情報処理部３０２は、データ受信通知処理を復帰する（ステップＳ１６２）。この処理が終了すると、処理はステップＳ１０３へ戻る。
【０１１０】
ステップＳ１０４の処理に戻り、依頼処理判定の結果、排他制御待ちがタイムアウトである通知を受けると、動作情報処理部３０６は、排他制御待ちタイマーを停止する（ステップＳ１６３）。この処理では、ステップＳ１６０で起動した排他制御待ちタイマーを停止する処理が行われる。
【０１１１】
動作情報処理部３０６は、ＲＡＭ１３２の受信処理中情報格納領域６０１にスキャナ名称が格納されているか否かを判定する（ステップＳ１６４）。受信処理中情報格納領域６０１にスキャナ名称が格納されていない場合（ステップＳ１６４のスキャナ名称無）には、受信処理中情報処理部３０２は、ＲＡＭ１３２に格納されている動作情報格納領域６０３の排他制御待ちの最小値を獲得する（ステップＳ１６５）。この処理では、動作情報格納領域６０３に格納されているスキャナのうち、排他制御待ちの値が最小であるスキャナ名称のスキャナを取得する。
【０１１２】
受信処理中情報処理部３０２は、ステップＳ１６５で獲得した排他制御待ちが最小値のスキャナ名称をＲＡＭ１３２の受信処理中情報格納領域６０１に格納する（ステップＳ１６６）。受信処理中情報処理部３０２は、排他制御待ちが最小値のスキャナの動作情報格納領域６０３の排他制御待ちに０を設定する（ステップＳ１６７）。受信処理中情報処理部３０２は、排他制御待ちが最小値のスキャナのスキャナ名称をデータ受信通知情報格納領域６０２に格納する（ステップＳ１６８）。受信処理中情報処理部３０２は、データを受信したことをアプリケーション２００へ通知する（ステップＳ１６９）。この処理が終了すると、処理はステップＳ１０３へ戻る。
【０１１３】
ステップＳ１６４において、受信処理中情報格納領域６０１にスキャナ名称が格納されている場合（ステップＳ１６４のスキャナ名称有）には、動作情報処理部３０６は、排他制御待ちタイマーを起動する（ステップＳ１７０）。この処理では、ステップＳ１６３の処理において停止していた排他制御待ちタイマーが再開される。この処理が終了すると、処理はステップＳ１０３へ戻る。
【０１１４】
このようにして、複数バーコードスキャナ制御プログラム３００は、複数のスキャナから通知された受信通知やバーコードデータの通知を、１つのスキャナから通知された情報として、各スキャナから通知された順にアプリケーション２００へ通知することができる。
【０１１５】
従って、アプリケーション２００側では、擬似的に１つのスキャナとして処理を行うことができ、アプリケーション２００およびスキャナ側のハードウェアの双方の改修を行わずに、複数のスキャナを制御することができる。従って、コストを抑えて精算業務の効率化を図ることができる。
【０１１６】
上述の実施形態では、複数バーコードスキャナ制御プログラム３００は、受信通知やバーコードデータの通知を各スキャナから通知された順にアプリケーション２００へ通知しているがこの限りではない。例えば、各スキャナに優先度をつけて、優先度の高いスキャナからの受信通知やバーコードデータの通知を優先してアプリケーション２００へ通知することもできる。
【０１１７】
また、上述の実施形態では、複数のスキャナ（固定スキャナ４５、タッチスキャナ４８、ＲＦＩＤスキャナ３８）は、ＰＯＳ端末２１に接続されているがこの限りではない。例えば、複数バーコードスキャナ制御プログラム３００は、ネットワークを介して接続されたスキャナも同時に制御することができる。
【０１１８】
なお、本発明は上述した実施形態そのままに限定されるものではなく、実施段階でのその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素を適宜組み合わせても良い。更に、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。このような、発明の趣旨を逸脱しない範囲内において種々の変形や応用が可能であることはもちろんである。
【符号の説明】
【０１１９】
２１  ＰＯＳ端末
３０  キャッシャユニット
３１ａ  制御ユニット
３１ｂ  制御ユニット
３２  自動釣銭機
３３  キャッシュドロア
３４  自動釣札機
３５  キーボード
３６  タッチパネル
３７  ディスプレイ
３８  ＲＦＩＤスキャナ
３９  プリンタ
４０  チェッカユニット
４１  タッチパネル
４２  スピーカ
４３  レーン台
４４  支柱
４５  固定スキャナ
４６  多項目キーボード
４７  ディスプレイ
４８  タッチスキャナ
１３１  ＣＰＵ
１３１ａ  ＣＰＵ
１３１ｂ  ＣＰＵ
１３２  ＲＡＭ
１３２ａ  ＲＡＭ
１３２ｂ  ＲＡＭ
１３４ａ  通信インタフェース
１３４ｂ  通信インタフェース
１３５ａ  グラフィック処理装置
１３５ｂ  グラフィック処理装置
１３６ａ  入出力インタフェース
１３６ｂ  入出力インタフェース
１３７ａ  バス
１３７ｂ  バス
１３８ａ  可搬型記録媒体
１３８ｂ  可搬型記録媒体
２００  アプリケーション
３００  複数バーコードスキャナ制御プログラム
３０１  主制御部
３０２  受信処理中情報処理部
３０３  識別情報通知処理部
３０４  データ受信通知情報格納処理部
３０５  スキャナ状態監視部
３０６  動作情報処理部
４００  スキャナ制御プログラム
４０１  固定スキャナ制御プログラム
４０２  タッチスキャナ制御プログラム
４０３  ＲＦＩＤスキャナ制御プログラム
６０１  受信処理中情報格納領域
６０２  データ受信通知情報格納領域
６０３  動作情報格納領域
【図１】
2019061593.tif 000003
【図２】
2019061593.tif 000004
【図３】
2019061593.tif 000005
【図４】
2019061593.tif 000006
【図５】
2019061593.tif 000007
【図６】
2019061593.tif 000008
【図７】
2019061593.tif 000009
【図８】
2019061593.tif 000010
【図９】
2019061593.tif 000011
【図１０】
2019061593.tif 000012
【図１１Ａ】
2019061593.tif 000013
【図１１Ｂ】
2019061593.tif 000014
【図１１Ｃ】
2019061593.tif 000015
【図１１Ｄ】
2019061593.tif 000016
【図１１Ｅ】
2019061593.tif 000017