(57)【要約】【課題】端末のブラウザーで動作するアプリケーションによって、制御装置に接続されたデバイスの適切な制御を行えるようにする。【解決手段】端末と通信するＨＴＴＰサーバー６１と、デバイスと通信するデバイスインターフェース８１と、デバイスに対応するデバイスドライバー７３を実装した第１デバイス制御部７１と、デバイスに対応可能なドライバー６８を利用する第２デバイス制御部６６と、ＨＴＴＰサーバー６１により端末から受信する制御情報に基づき、第１デバイス制御部７１または第２デバイス制御部６６を選択し、制御情報に基づきコマンドを生成して、生成したコマンドをデバイスインターフェース８１によりデバイスに送信する処理部７０と、を備える制御装置。【選択図】図３
2018206139.tif 000002
【特許請求の範囲】
【請求項１】
端末と通信する第１通信部と、
デバイスと通信する第２通信部と、
前記デバイスに対応する第１制御モジュールを実装した第１デバイス制御部と、
前記デバイスに対応可能な第２制御モジュールを利用する第２デバイス制御部と、
前記第１通信部により前記端末から受信する制御情報に基づき、前記第１デバイス制御部または前記第２デバイス制御部を選択し、前記制御情報に基づきコマンドを生成して、生成した前記コマンドを前記第２通信部により前記デバイスに送信する処理部と、を備える
デバイス制御装置。
【請求項２】
前記デバイスを識別するデバイス識別子と前記第１デバイス制御部または前記第２デバイス制御部との対応を示すデバイス制御管理情報を記憶する記憶部を備え、
前記処理部は、前記端末から受信した前記制御情報に含まれる前記デバイス識別子に基づき、前記記憶部の前記デバイス制御管理情報を参照して、前記第１デバイス制御部または前記第２デバイス制御部を選択し、前記制御情報に含まれる前記デバイス識別子により指定される前記デバイスに前記コマンドを送信する
請求項１記載のデバイス制御装置。
【請求項３】
前記記憶部は、前記デバイス識別子と前記端末との対応を示すデバイス通信管理情報を有し、
前記処理部は、前記端末から受信した前記制御情報に含まれる前記デバイス識別子に基づき、前記記憶部の前記デバイス通信管理情報を参照して、前記制御情報に含まれる前記デバイス識別子により指定される前記デバイスが通信可能か否かを判定し、通信可能と判定した場合に、前記第１デバイス制御部または前記第２デバイス制御部を選択する
請求項２記載のデバイス制御装置。
【請求項４】
前記処理部は、前記第１通信部により前記端末から受信する管理情報に基づき、前記記憶部が記憶する前記デバイス制御管理情報、及び、前記デバイス通信管理情報の追加、更新、及び削除の少なくともいずれかを実行可能である
請求項３記載のデバイス制御装置。
【請求項５】
前記処理部は、
前記第１デバイス制御部及び前記第２デバイス制御部を選択する選択部と、
前記選択部により前記第１デバイス制御部が選択された場合に、前記第１デバイス制御部が実装する前記第１制御モジュールの処理結果に基づき、前記デバイスに前記コマンドを送信する第１処理部と、
前記選択部により前記第２デバイス制御部が選択された場合に、前記端末から受信した前記制御情報に基づく第２デバイス制御情報を前記第２デバイス制御部に送信する通信モジュールと、を備え、
前記第２デバイス制御部は、前記通信モジュールから受信した前記第２デバイス制御情報に基づき、前記第２制御モジュールに対応する制御データを生成する
請求項１から４のいずれか１項に記載のデバイス制御装置。
【請求項６】
前記第２制御モジュール毎の制御データを規定するテーブルを備え、
前記第２デバイス制御部は、前記テーブルを参照して、前記通信モジュールから受信した前記第２デバイス制御情報を前記第２制御モジュールに対応する前記制御データに変換する
請求項５記載のデバイス制御装置。
【請求項７】
前記第２制御モジュールは、前記第２デバイス制御部から入力される前記制御データに基づき、前記デバイスに固有のコマンドを生成する
請求項５または６記載のデバイス制御装置。
【請求項８】
前記通信モジュールは前記処理部と前記第２デバイス制御部との間の通信を仲介するラッパーとして構成される
請求項５から７のいずれか１項に記載のデバイス制御装置。
【請求項９】
端末と通信する第１通信部と、デバイスと通信する第２通信部と、を備えるデバイス制御装置の制御方法であって、
前記第１通信部により前記端末から受信する制御情報に基づき、前記デバイスに対応する第１制御モジュールを実装した第１デバイス制御部、または、前記デバイスに対応可能な第２制御モジュールを利用する第２デバイス制御部を選択し、
前記端末から受信した前記制御情報に基づきコマンドを生成し、
生成した前記コマンドを前記第２通信部により前記デバイスに送信する
デバイス制御装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイス制御装置、および、デバイス制御装置の制御方法に関する。
【背景技術】
【０００２】
従来、制御装置に接続されたデバイスを、制御装置とネットワークを介して接続された機器によって制御するシステムが知られている（例えば、特許文献１参照）。特許文献１記載のシステムは、制御装置にバーコードスキャナー等のデバイスが接続され、制御装置は、タブレット端末と通信を実行する。制御装置は、タブレット端末の要求に基づいて、デバイスを制御するプログラムモジュールである制御オブジェクトを実行する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１４７０４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１記載のシステムでは、デバイスが接続される制御装置が、デバイスと制御装置の両方の仕様に適したプログラムモジュールを有する。制御装置に適した、いわば専用のプログラムモジュールを利用すれば、制御装置における処理の効率化を図ることが可能である。しかしながら、制御装置の専用のモジュールをデバイス毎に用意する必要があり、負担の軽減が望まれていた。
本発明は、上述した事情に鑑みてなされたものであり、デバイスを制御するためのプログラムモジュールを実行し、デバイスを制御するデバイス制御装置において、プログラムモジュールの準備に要する負担を軽減することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明は、端末と通信する第１通信部と、デバイスと通信する第２通信部と、前記デバイスに対応する第１制御モジュールを実装した第１デバイス制御部と、前記デバイスに対応可能な第２制御モジュールを利用する第２デバイス制御部と、前記第１通信部により前記端末から受信する制御情報に基づき、前記第１デバイス制御部または前記第２デバイス制御部を選択し、前記制御情報に基づきコマンドを生成して、生成した前記コマンドを前記第２通信部により前記デバイスに送信する処理部と、を備える。
本発明の構成によれば、デバイス制御装置に接続されたデバイスを制御する際に、第１制御モジュールを実装した第１デバイス制御部と、第２制御モジュールを利用する第２デバイス制御部とを選択できる。第１制御モジュールはデバイスに対応する制御モジュールであり、第２制御モジュールはデバイスに対応可能な制御モジュールであるから、例えば汎用の制御モジュールとすることができる。このため、デバイスを制御するために、例えば汎用のプログラムモジュールである第２制御モジュールと、第１制御モジュールとを利用可能である。このため、デバイスに対応する制御モジュールを調達するための負担を軽減でき、様々なデバイスを利用することが可能となる。
【０００６】
また、本発明は、前記デバイスを識別するデバイス識別子と前記第１デバイス制御部または前記第２デバイス制御部との対応を示すデバイス制御管理情報を記憶する記憶部を備え、前記処理部は、前記端末から受信した前記制御情報に含まれる前記デバイス識別子に基づき、前記記憶部の前記デバイス制御管理情報を参照して、前記第１デバイス制御部または前記第２デバイス制御部を選択し、前記制御情報に含まれる前記デバイス識別子により指定される前記デバイスに前記コマンドを送信する構成であってもよい。
本発明の構成によれば、第１制御モジュールを実装した第１デバイス制御部と、第２制御モジュールを利用する第２デバイス制御部とを、デバイスに対応して適切に選択できる。
【０００７】
また、本発明は、前記記憶部は、前記デバイス識別子と前記端末との対応を示すデバイス通信管理情報を有し、前記処理部は、前記端末から受信した前記制御情報に含まれる前記デバイス識別子に基づき、前記記憶部の前記デバイス通信管理情報を参照して、前記制御情報に含まれる前記デバイス識別子により指定される前記デバイスが通信可能か否かを判定し、通信可能と判定した場合に、前記第１デバイス制御部または前記第２デバイス制御部を選択する構成であってもよい。
本発明の構成によれば、端末が指定したデバイスが通信可能である場合に、第１デバイス制御部または第２デバイス制御部を選択してコマンドを送信するので、デバイスの制御を効率化できる。
【０００８】
また、本発明は、前記処理部は、前記第１通信部により前記端末から受信する管理情報に基づき、前記記憶部が記憶する前記デバイス制御管理情報、及び、前記デバイス通信管理情報の追加、更新、及び削除の少なくともいずれかを実行可能である構成であってもよい。
本発明の構成によれば、制御対象のデバイスに関する情報に対する追加、更新、削除等が可能であるため、デバイスを効率よく制御できる。
【０００９】
また、本発明は、前記処理部は、前記第１デバイス制御部及び前記第２デバイス制御部を選択する選択部と、前記選択部により前記第１デバイス制御部が選択された場合に、前記第１デバイス制御部が実装する前記第１制御モジュールの処理結果に基づき、前記デバイスに前記コマンドを送信する第１処理部と、前記選択部により前記第２デバイス制御部が選択された場合に、前記端末から受信した前記制御情報に基づく第２デバイス制御情報を前記第２デバイス制御部に送信する通信モジュールと、を備え、前記第２デバイス制御部は、前記通信モジュールから受信した前記第２デバイス制御情報に基づき、前記第２制御モジュールに対応する制御データを生成する構成であってもよい。
本発明の構成によれば、第２デバイス制御部が通信モジュールを介して第２デバイス制御情報を受け取るので、第２制御モジュールが第１制御モジュールとは異なる仕様であっても、確実に第２制御モジュールを機能させることができる。
【００１０】
また、本発明は、前記第２制御モジュール毎の制御データを規定するテーブルを備え、前記第２デバイス制御部は、前記テーブルを参照して、前記通信モジュールから受信した前記第２デバイス制御情報を前記第２制御モジュールに対応する前記制御データに変換する構成であってもよい。
本発明の構成によれば、複数の第２制御モジュールの各々について、制御データを対応するデータに変換できる。このため、様々な仕様の第２制御モジュールを機能させることができ、多様なデバイスを制御できる。
【００１１】
また、本発明は、前記第２制御モジュールは、前記第２デバイス制御部から入力される前記制御データに基づき、前記デバイスに固有のコマンドを生成する構成であってもよい。
本発明の構成によれば、固有のコマンドを必要とするデバイスを制御できるので、より幅広い種類のデバイスを利用できる。
【００１２】
また、本発明は、前記通信モジュールは前記処理部と前記第２デバイス制御部との間の通信を仲介するラッパーとして構成されてもよい。
本発明の構成によれば、ラッパーとして実装される通信モジュールによって、第２デバイス制御部に対し、第２制御情報をより適切に入力させることができる。
【００１３】
また、上記課題を解決するため、本発明は、端末と通信する第１通信部と、デバイスと通信する第２通信部と、を備えるデバイス制御装置の制御方法であって、前記第１通信部により前記端末から受信する制御情報に基づき、前記デバイスに対応する第１制御モジュールを実装した第１デバイス制御部、または、前記デバイスに対応可能な第２制御モジュールを利用する第２デバイス制御部を選択し、前記端末から受信した前記制御情報に基づきコマンドを生成し、生成した前記コマンドを前記第２通信部により前記デバイスに送信する。
本発明の構成によれば、デバイス制御装置に接続されたデバイスを制御する際に、第１制御モジュールを実装した第１デバイス制御部と、第２制御モジュールを利用する第２デバイス制御部とを選択できる。第１制御モジュールはデバイスに対応する制御モジュールであり、第２制御モジュールはデバイスに対応可能な制御モジュールであるから、例えば汎用の制御モジュールとすることができる。このため、デバイスを制御するために、例えば汎用のプログラムモジュールである第２制御モジュールと、第１制御モジュールとを利用可能である。このため、デバイスに対応する制御モジュールを調達するための負担を軽減でき、様々なデバイスを利用することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本実施形態に係るＰＯＳシステムの構成を示す図。
【図２】ＰＯＳシステムを構成する各機器の機能的構成を示すブロック図。
【図３】ブラウザー実行部、及び、デバイス制御部の機能ブロック図。
【図４】制御装置の動作を示す模式図。
【図５】デバイス制御部管理テーブルの構成例を示す模式図。
【図６】デバイス通信管理テーブルの構成例を示す模式図。
【図７】ＰＯＳシステムの動作を示すシーケンス図。
【図８】ＰＯＳシステムの動作を示すフローチャート。
【図９】ＰＯＳシステムの動作を示すフローチャート。
【図１０】ＰＯＳシステムの動作を示すフローチャート。
【図１１】ＰＯＳシステムの動作を示すフローチャート。
【図１２】制御装置の動作を示すフローチャート。
【図１３】ＰＯＳシステムの動作を示すフローチャート。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の実施形態について説明する。
図１は、本実施形態に係るＰＯＳ（Ｐｏｉｎｔ  ｏｆ  Ｓａｌｅｓ）システム１（制御システム）の概略構成ブロック図である。また、図２は、ＰＯＳシステム１を構成するタブレット端末１０（端末）、制御装置１１、及び、ＰＯＳサーバー１７の機能的構成を示すブロック図である。
【００１６】
ＰＯＳシステム１は、ショッピングセンターや、百貨店、コンビニエンスストア等の小売店、レストランや、喫茶店、居酒屋等の飲食店、その他の店舗、施設に適用されるシステムである。ＰＯＳシステム１の機能としては、例えば、店舗における商品の販売状況、商品の在庫の状況、売上の状況等を管理する機能が挙げられる。また、店舗に設けられたレジカウンターＬにおいて、顧客が購入した商品に応じた会計を実行する機能、顧客による代金の支払いに応じてレシートを発行する機能、顧客に対し会計に関する情報を提供する機能等が挙げられる。
【００１７】
本実施形態に係るＰＯＳシステム１が適用される店舗には、会計処理を実行するレジカウンターＬが設けられる。そして、１つのレジカウンターＬには、１台の制御装置１１と、制御装置１１と無線通信可能に接続されたタブレット端末１０とが設けられる。
【００１８】
タブレット端末１０は、レジカウンターＬにおいて、会計を担当するレジ担当者が使用する端末であり、例えば携帯型のコンピューターである。本実施形態では、タブレット型（板状）のコンピューターであるタブレット端末１０を用いる例を示す。タブレット端末１０の前面には、画面表示およびタッチ操作の検出が可能なタッチパネル３０が配置され、タッチパネル３０に対するタッチ操作によって各種入力が可能である。
タブレット端末１０は、レジカウンターＬにおける会計に際し、レジ担当者にユーザーインターフェースを提供する。
【００１９】
制御装置１１は、デバイス制御装置としての機能を有する装置である。図２に示すように、制御装置１１には、少なくとも１のデバイスが接続される。デバイスは、商品又は商品の包装に付されたバーコードを読み取るバーコードスキャナー１２（デバイス）を含んでも良い。また、紙幣や、貨幣、金券等を収容し、管理するキャッシュチェンジャー１３（デバイス）を含んでもよい。また、会計に関する情報を顧客に対して表示するディスプレー１４（デバイス）を含んでもよい。バーコードスキャナー１２、キャッシュチェンジャー１３、及びディスプレー１４を区別しない場合はデバイスと総称する。また、後述するプリンターユニット２１をデバイスに含めてもよい。
【００２０】
図２に示すように、制御装置１１は、制御部２０と、プリンターユニット２１（プリンター、印刷部、デバイス）と、記憶部２２と、通信モジュール２３と、を備える。
制御部２０は、制御装置１１の各部を制御するものであり、ＣＰＵ等のプロセッサーを有する。制御部２０は、プロセッサーが実行するプログラムやデータを不揮発的に記憶するＲＯＭ、プロセッサーのためのワークエリアを形成するＲＡＭ等を備えてもよい。また、制御部２０は、その他のプロセッサーの周辺回路を備えてもよい。制御部２０は、デバイス制御部２０ａを備える。デバイス制御部２０ａについては後述する。
【００２１】
プリンターユニット２１は、ロール紙を搬送する搬送機構、サーマルヘッドによってロール紙に文字や画像を印刷する印刷機構、ロール紙を切断する切断機構等を備える。プリンターユニット２１は、レジカウンターＬでレシートを発行するための印刷装置であり、制御装置１１の制御に従って、レシートに係る画像をロール紙に印刷する。
【００２２】
記憶部２２は、半導体メモリーデバイス、磁気的記録装置、光学的記録装置などで構成される記憶装置である。記憶部２２は、制御部２０が実行するプログラム及び／または制御部２０が処理するデータを、書き換え可能に、不揮発的に記憶する。
【００２３】
通信モジュール２３は、所定の通信規格に準拠したネットワークカード等のタブレット端末１０との間で無線通信するモジュール、回路等を備え、制御部２０の制御の下、タブレット端末１０との間で所定の通信規格に準拠した無線通信を実現する。
【００２４】
また、タブレット端末１０は、端末記憶部２５と、端末制御部２６と、通信モジュール２７と、入力検出部２９と、タッチパネル３０と、を備える。また、端末制御部２６は表示制御部２８を備える。
端末記憶部２５は、例えば、ＥＥＰＲＯＭ等の半導体メモリーデバイスにより構成され、各種データを書き換え可能に不揮発的に記憶する。
【００２５】
タッチパネル３０は、タブレット端末１０の前面に配置された表示パネル３０ａと、表示パネル３０ａに重ねて配置されたタッチセンサー３０ｂとが一体となって構成される。
【００２６】
表示パネル３０ａは、液晶表示パネル、有機ＥＬパネル、電子ペーパー等のディスプレーであり、表示制御部２８によって駆動される。タッチセンサー３０ｂは、表示パネル３０ａに重ねて配置され、接触操作及び／または押圧操作を検出するセンサーである。タッチセンサー３０ｂは、例えば、静電容量式もしくは感圧式のセンサーで構成できる。タッチセンサー３０ｂは、ユーザーの手指やペン型操作デバイスによるタッチ操作を検出して、タッチ操作を検出した位置を示す信号を入力検出部２９に出力する。タッチパネル３０は、「ブラウザーを表示する表示部」に該当する。
【００２７】
表示制御部２８は、後述するブラウザー実行部２６ａから入力される表示用のデータに基づいて、表示パネル３０ａを駆動し、表示パネル３０ａに文字や画像等を含む画面を表示する。
【００２８】
入力検出部２９は、タッチセンサー３０ｂが出力する信号に基づいて、タッチパネル３０に対するタッチ操作を検出する。このタッチ操作を検出した場合、入力検出部２９は、操作位置を表示パネル３０ａの表示位置に対応する座標によって示す座標データを生成し、端末制御部２６に出力する。
【００２９】
通信モジュール２７は、所定の通信規格に準拠したネットワークカード等の制御装置１１、及び、ＰＯＳサーバー１７との間で無線通信するモジュール、回路等を備える。通信モジュール２７は、端末制御部２６の制御の下、制御装置１１、及び、ＰＯＳサーバー１７との間で所定の通信規格に準拠した無線通信を実現する。
【００３０】
端末制御部２６は、タブレット端末１０の各部を制御するものであり、ＣＰＵ等のプロセッサーを有する。端末制御部２６は、プロセッサーが実行するプログラムやデータを不揮発的に記憶するＲＯＭ、プロセッサーのためのワークエリアを形成するＲＡＭ等を備えてもよい。また、端末制御部２６は、その他のプロセッサーの周辺回路を備えてもよい。端末制御部２６は、ブラウザープログラムを実行することにより、ブラウザーの機能を実現するブラウザー実行部２６ａを備える。
【００３１】
ブラウザー実行部２６ａは、ウェブブラウザーの機能により、ＨＴＴＰ等のプロトコルによる通信を実行し、ＨＴＭＬ等のマークアップ言語やスクリプト言語で記述されたウェブページ（ＨＴＭＬファイル等）を、ＰＯＳサーバー１７からダウンロードする。ダウンロードされたウェブページのデータは、例えば図示しないＲＡＭに記憶される。ブラウザー実行部２６ａは、ダウンロードされたウェブページのデータを読み込み、このウェブページを表示させる表示データを生成して、表示制御部２８に出力する。表示制御部２８は、入力された表示データに基づいて、表示パネル３０ａに表示データに係るウェブページの画像を表示する。
【００３２】
ブラウザー実行部２６ａは、入力検出部２９によってタッチセンサー３０ｂへのタッチ操作が検出された場合、このタッチ操作に対応して入力検出部２９から入力される座標データ、及び、表示制御部２８に出力した表示用のデータに基づき、入力内容を特定する。ブラウザー実行部２６ａは、適宜、特定した入力内容に基づいて、例えばスクリプトの機能によって適切な処理を実行する。
【００３３】
ＰＯＳサーバー１７は、商品に関する情報を格納したデータベース、売上を管理するデータベース、在庫を管理するデータベース等を記憶するサーバー記憶部３６を備え、これらデータベースを利用して、ＰＯＳシステム１全体を管理する。
ＰＯＳサーバー１７は、サーバー制御部３７と、サーバー記憶部３６と、通信モジュール３８と、を備える。
【００３４】
サーバー制御部３７は、ＰＯＳサーバー１７の各部を制御するものであり、ＣＰＵ等のプロセッサーを有する。サーバー制御部３７は、プロセッサーが実行するプログラムやデータを不揮発的に記憶するＲＯＭ、プロセッサーのためのワークエリアを形成するＲＡＭ等を備えてもよい。また、サーバー制御部３７は、その他のプロセッサーの周辺回路を備えてもよい。
【００３５】
サーバー記憶部３１は、半導体メモリーデバイス、磁気的記録装置、光学的記録装置などで構成される記憶装置である。サーバー記憶部３１は、サーバー制御部３７が実行するプログラム及び／またはサーバー制御部３７が処理するデータを、書き換え可能に、不揮発的に記憶する。
【００３６】
通信モジュール３８は、所定の通信規格に準拠したネットワークカード等のタブレット端末１０との間で無線通信するモジュール、回路等を備え、サーバー制御部３７の制御の下、タブレット端末１０との間で所定の通信規格に準拠した無線通信を実現する。
【００３７】
ＰＯＳサーバー１７には、ＰＯＳアプリケーション３５が、インストールされている。
タブレット端末１０のブラウザー実行部２６ａは、このＰＯＳサーバー１７上のＰＯＳアプリケーション３５の機能を利用して、各種処理を実行する。
【００３８】
具体例を挙げて詳述すると、ブラウザー実行部２６ａは、適宜、ＰＯＳサーバー１７に演算処理の要求を実行し、ＰＯＳアプリケーション３５の機能によって演算処理を実行させ、処理結果を受け取り、適切な処理を実行する。例えば、ブラウザー実行部２６ａは、バーコードスキャナー１２の読み取り結果をＰＯＳサーバー１７に出力して、ＰＯＳアプリケーション３５の機能により商品検索を実行させる。ブラウザー実行部２６ａは、検索結果を受け取った上で、制御装置１１を制御して商品情報をディスプレー１４に表示させる。また、会計の合計金額の算出を要求して、ＰＯＳアプリケーション３５の機能により合計金額の算出を実行させ、算出結果を受け取った上で、制御装置１１を制御して合計金額を含む情報が印刷されたレシートを発行させたりする。
【００３９】
ここで、「ブラウザーで動作するアプリケーション」とは、ブラウザー実行部２６ａが通信可能な他の機器にインストールされたアプリケーションであって、ブラウザー実行部２６ａが、その機能を利用可能なアプリケーションを含む概念である。例えば、ＰＯＳアプリケーション３５が該当する。この場合のアプリケーションは、上記通信可能な他の機器上で実行され動作するものであってもよく、当該他の機器からダウンロードして、タブレット端末１０上で実行され動作するものであってもよい。さらに、「ブラウザーで動作するアプリケーション」は、ブラウザー実行部２６ａが読み出すウェブページ（ＨＴＭＬファイル）に実装されたスクリプト等、ブラウザー実行部２６ａがその機能を利用可能なプログラム、ソフトウェアを含む概念である。
【００４０】
図３は、タブレット端末１０のブラウザー実行部２６ａ（「端末制御部」に対応する機能ブロック）、及び、制御装置１１のデバイス制御部２０ａの機能ブロック図をより詳細に示す図である。また、図３には、デバイス制御部２０ａに関する理解の便宜のため記憶部２２を合わせて図示する。
【００４１】
図３では、説明の便宜のため、プログラム自体や、ソフトウェア的なオブジェクト、プログラムによって実現される機能を概念的に表わすブロック、デバイス等の物理的な装置等を、同一のレベルで表現している。
なお、以下の説明において、「オブジェクト」とは、オブジェクト指向プログラミングにおけるインスタンスを指す。すなわち、データ、及び、メソッドの集合として定義されたソフトウェア的な対象を意味する。この説明は一例であり、「オブジェクト」は、オブジェクト指向プログラミングにおけるインスタンスに限らず、何らかの機能を実現できるソフトウェア的な対象であればよい。
【００４２】
図３に示すように、タブレット端末１０のブラウザー実行部２６ａでは、アプリケーションＡＰが動作する。アプリケーションＡＰは、ブラウザー実行部２６ａが、その機能を利用可能なプログラム、ソフトウェアを含む概念である。具体的には、上述したように、ＰＯＳアプリケーション３５のように他の機器で動作し、又は、他の機器からダウンロードしたアプリケーションや、ブラウザー実行部２６ａが読み出すＨＴＭＬファイルに実装されたスクリプト等を含む。
【００４３】
ブラウザー実行部２６ａでは、制御オブジェクト４１が動作可能である。
制御オブジェクト４１は、制御装置１１に接続されたデバイスを制御するオブジェクトである。例えば、バーコードスキャナー１２を制御するバーコードスキャナーＩ／Ｆ（インターフェース）オブジェクト、キャッシュチェンジャー１３を制御するキャッシュチェンジャーＩ／Ｆオブジェクトが挙げられる。また、ディスプレー１４を制御するディスプレーＩ／Ｆオブジェクト、プリンターユニット２１を制御するプリンターＩ／Ｆオブジェクト等が挙げられる。制御オブジェクト４１は、上述した各オブジェクトの少なくともいずれかを含む。これらのオブジェクトは、タブレット端末１０に対する操作または制御装置１１とタブレット端末１０との間の通信に対応して、適宜生成される。
【００４４】
以下において、「アプリケーションＡＰは、・・・」のように、アプリケーションＡＰを動作の主体とする表現は、アプリケーションＡＰを読み出して実行するプロセッサーが、アプリケーションＡＰの機能を利用して、処理を実行することを意味する。プロセッサーとは、例えば、端末制御部２６、ブラウザー実行部２６ａ等である。同様に、「オブジェクトは、・・・」のように、オブジェクトを動作の主体として処理を説明する場合、プロセッサー（対応する制御部）が、オブジェクトの機能を利用して、処理を実行することを意味する。後述するスクリプトを動作の主体として説明する場合、及び、デバイスドライバー等のプログラムモジュールを動作の主体として説明する場合も同様である。
【００４５】
また、ブラウザー実行部２６ａでは、ＨＴＴＰクライアント４２が動作可能である。ＨＴＴＰクライアント４２は、デバイス制御部２０ａが有するＨＴＴＰサーバー６１との間で、通信経路Ｋ１を確立する。ＨＴＴＰクライアント４２は、通信経路Ｋ１を介してＨＴＴＰサーバー６１との間で所定の通信プロトコル（ＨＴＴＰ）を実行し、各種データを送受信する。ＨＴＴＰクライアント４２とＨＴＴＰサーバー６１との間の通信は、ＷｅｂＳｏｃｋｅｔ通信を採用してもよい。例えば、ブラウザー実行部２６ａは、制御装置１１との通信を行うためにＨＴＴＰクライアント４２により通信経路確立要求をＨＴＴＰサーバー６１に送信する。ＨＴＴＰクライアント４２及びＨＴＴＰサーバー６１は、協働して、ＷｅｂＳｏｃｋｅｔの規格に準拠してコネクションを張り、通信経路Ｋ１を確立する。
【００４６】
アプリケーションＡＰは、レジカウンターＬにおける会計処理のための各種機能を有する。例えば、アプリケーションＡＰは、ＰＯＳサーバー１７から提供される商品の価格等に関する情報を取得する。また、アプリケーションＡＰは、商品の会計に関する処理を実行し、実行結果をＰＯＳサーバー１７に送信する。
【００４７】
アプリケーションＡＰが実行する会計処理において、制御装置１１に接続されるデバイスを動作させる場合、アプリケーションＡＰは、デバイスの制御の要求を出力する。詳細は後述するが、アプリケーションＡＰは、制御装置１１に対してデバイスの制御の開始を要求し、デバイスを使用可能とする。その後、アプリケーションＡＰは、制御装置１１に対し、デバイスを動作させる制御を要求する。また、アプリケーションＡＰは、デバイスの動作によって得られるデータが制御装置１１から出力された場合に、このデータを取得して処理を行う。デバイスが必要な動作を行った後、アプリケーションＡＰは、デバイスの制御の終了を要求する。
【００４８】
ブラウザー実行部２６ａでは、アプリケーションＡＰが、動作させるデバイス、すなわち制御対象のデバイスに対応するオブジェクトを呼び出し、呼び出されたオブジェクトが制御装置１１に対する処理を行う。
【００４９】
制御オブジェクト４１は、アプリケーションＡＰが指定した制御対象のデバイスを示すデータを送信する。このデータはＨＴＴＰクライアント４２及びＨＴＴＰサーバー６１を介してデバイス制御部２０ａに伝達される。デバイスを指定するデータは、例えば、制御装置１１に接続されたデバイスに固有の識別子であるデバイス識別子を用いることができる。デバイス識別子は、適宜に付与されるものであってもよい。また、例えば、デバイス識別子として、ＯＬＥ  ｆｏｒ  Ｒｅｔａｉｌ  ＰＯＳ  Ｃｏｍｍｉｔｔｅｅにおいて標準化されたＯＰＯＳ（ＯＬＥ  ｆｏｒ  Ｒｅｔａｉｌ  ＰＯＳ）の仕様に準拠するＯＰＯＳ論理名を用いることができる。
【００５０】
また、制御オブジェクト４１は、アプリケーションＡＰが要求したデバイスの動作を示すデータをＨＴＴＰクライアント４２によって送信させる。また、制御オブジェクト４１は、デバイスの動作により得られたデータを制御装置１１が送信した場合、このデータを、ＨＴＴＰクライアント４２を介して受信し、取得する。制御オブジェクト４１が取得したデータはアプリケーションＡＰに渡され、アプリケーションＡＰによる会計処理に利用される。
【００５１】
ＰＯＳシステム１の具体的な動作の一例として、会計処理の概要を説明する。
会計に係る処理が行われる前に、タブレット端末１０は、それぞれ、以下の処理を実行する。すなわち、レジの担当者、その他の作業に従事する者は、タブレット端末１０のブラウザーを起動させ、タッチパネル３０へのユーザーインターフェースの表示を指示する。当該指示に応じて、端末制御部２６のブラウザー実行部２６ａは、ＰＯＳサーバー１７上の所定のアドレスにアクセスし、ＨＴＭＬファイル等のウェブページのデータを取得し、当該データに基づいてユーザーインターフェースをタッチパネル３０に表示する。
【００５２】
タッチパネル３０に表示されるユーザーインターフェースは、顧客が購入した商品の名称、商品の単価、及び、商品の数量が一覧表示される表示エリアを有する。また、顧客が購入した商品の合計金額、会計に際して顧客から預かった金銭の金額、及び、顧客に渡すべきお釣りの金額が表示される表示エリアを有する。また、ユーザーインターフェースには、バーコードスキャナー１２によって読み取られたバーコードが表す情報（以下、「バーコード情報」という）が入力され表示されるフィールドが配置される。バーコード情報は、基本的には、商品の種類毎に一意に割り当てられた識別情報である。また、ユーザーインターフェースには、数値をタッチ入力するためのソフトウェアテンキーが配置される。また、ユーザーインターフェースには、タブレット端末１０のアクセス先のアドレスが表示されるフィールドが配置されてもよい。
【００５３】
会計処理では、バーコードスキャナー１２によるバーコードの読み取りが実行された後、読み取られたバーコード情報がユーザーインターフェースのフィールドに表示される。この処理では、バーコード情報をアプリケーションＡＰが取得するために、アプリケーションＡＰにより、制御オブジェクト４１においてバーコードスキャナー１２を制御するオブジェクトが呼び出される。レジカウンターＬにおいて、レジの担当者であるユーザーがバーコードスキャナー１２を操作して、顧客が購入した１の商品に付されたバーコードを読み取る操作を行う。この操作に応じて、読み取ったバーコードに関するバーコード情報が、制御装置１１により制御オブジェクト４１に出力される。制御オブジェクト４１は、制御装置１１が出力するバーコード情報を取得して、アプリケーションＡＰにバーコード情報を出力する。このバーコード情報は、ユーザーインターフェースの所定のフィールドに表示され、アプリケーションＡＰの機能により会計処理に用いられる。
【００５４】
また、会計処理において、キャッシュチェンジャー１３を動作させる場合、アプリケーションＡＰは、キャッシュチェンジャー１３を制御するためのオブジェクトを呼び出す。これに対応して制御オブジェクト４１がキャッシュチェンジャー１３を制御する要求を生成して制御装置１１に送信し、制御装置１１がキャッシュチェンジャー１３を動作させる。また、会計処理において、ディスプレー１４に、合計金額等を表示する場合、アプリケーションＡＰは、ディスプレー１４を制御するためのオブジェクトを呼び出す。これに対応して制御オブジェクト４１がディスプレー１４を制御する要求を生成し、制御装置１１に出力する。制御装置１１は、制御オブジェクト４１が生成した要求に対応して、ディスプレー１４による表示を実行させる。
【００５５】
アプリケーションＡＰがプリンターユニット２１にレシートを発行させる場合、アプリケーションＡＰは、実装された機能により、レシートに印刷する画像を生成する。アプリケーションＡＰは、生成した画像に基づいて、プリンターユニット２１によって発行させるレシートに関する情報が含まれたＸＭＬドキュメント（データ）を生成する。このＸＭＬドキュメントには、ＸＭＬに係るフォーマットに準拠して、レシートに印刷する文字や画像の情報等、レシートを発行する情報が所定の形式で含まれる。
【００５６】
アプリケーションＡＰは、プリンターユニット２１のデバイス識別子、及び、プリンターを制御するためのオブジェクトに実行させる関数を指定する情報、生成したＸＭＬドキュメント等を含むデータを、制御オブジェクト４１に出力する。これに応じて、制御オブジェクト４１は、アプリケーションＡＰから入力されたデータに基づき制御装置１１に対する要求を送信する。この要求に対応して、制御装置１１がプリンターユニット２１を制御してレシートの印刷を実行させ、実行結果を制御オブジェクト４１に出力する。制御オブジェクト４１は、レシートの印刷結果をアプリケーションＡＰに出力する。
【００５７】
上記の動作において、制御装置１１が、キャッシュチェンジャー１３、ディスプレー１４、プリンターユニット２１等の動作状態を示すステータスデータを出力してもよい。この場合、制御オブジェクト４１は、制御装置１１が出力するステータスデータを取得して、アプリケーションＡＰに渡す。
【００５８】
制御オブジェクトとは、デバイスの制御に係る各種メソッドが実装されたオブジェクトであり、対応するハンドラーの機能を利用して、対応するデバイスの制御を実行する。例えば、制御オブジェクト４１がキャッシュチェンジャー１３を制御する制御オブジェクトを生成する。この制御オブジェクトには、キャッシュチェンジャー１３の制御に係る処理を実行するメソッドが実装され、当該オブジェクトは、キャッシュチェンジャーハンドラーの機能を利用して、キャッシュチェンジャー１３の制御を実行する。ハンドラーは、要求に応じて、対応するデバイスに係る処理を実行する関数、サブルーチンを指す。例えば、制御オブジェクト４１がバーコードスキャナー１２を制御する制御オブジェクトを生成した場合、バーコードスキャナーハンドラーが、バーコードスキャナー１２によるバーコードの読み取りが実行された場合に、読み取り結果の入力を受ける。さらに、バーコードスキャナーハンドラーは、割り込み処理を実行して、読み取り結果（例えば、数字の文字列からなるデータ）をバーコードスキャナーの制御オブジェクトに受け渡す。他のデバイスを制御する場合も同様に、制御オブジェクトとハンドラーとが機能する。
【００５９】
また、制御装置１１では、デバイスとのインターフェースであるデバイスインターフェース８１と、各ハンドラーとが協働して、「デバイスと通信する第２通信部」として機能する。
【００６０】
デバイス制御部２０ａは、ＨＴＴＰサーバー６１、ポート制御部６２、処理部７０、及びデバイスインターフェース８１を備える。
【００６１】
ＨＴＴＰサーバー６１は、ブラウザー実行部２６ａのＨＴＴＰクライアント４２と協働して、通信経路Ｋ１を介して通信を実行する。ＨＴＴＰサーバー６１は、処理部７０の制御に従ってＨＴＴＰクライアント４２と通信し、ＨＴＴＰクライアント４２から受信した要求やデータを処理部７０に出力する。ＨＴＴＰサーバー６１は第１通信部として機能する。
【００６２】
処理部７０は、ＨＴＴＰサーバー６１を介して受信した要求に応じて、デバイスインターフェース８１に接続されるデバイスを制御する。
【００６３】
デバイスインターフェース８１は、バーコードスキャナー１２、キャッシュチェンジャー１３、ディスプレー１４、及びプリンターユニット２１を含むデバイスが接続されるインターフェースである。デバイスインターフェース８１は、図において一つの機能ブロックとして示しているが、複数のインターフェースを含んでもよい。例えば、デバイスインターフェース８１は、バーコードスキャナー１２が接続されるＵＳＢインターフェース、キャッシュチェンジャー１３及びディスプレー１４がそれぞれ接続されるシリアルインターフェース等を含んでもよい。また、デバイスインターフェース８１は、同種のインターフェースを複数備えてもよく、具体的な構成は任意に選択されればよい。
【００６４】
また、図中のデバイスインターフェース８１は、各デバイスが接続されるハードウェアとしてのコネクターや信号処理回路に加えて、これらのハードウェアにより各デバイスと信号を入出力する機能を示す。デバイスインターフェース８１は、上述したようにソフトウェアの機能であるハンドラーと協働して、或いは単独で、第２通信部に相当する。
【００６５】
デバイスインターフェース８１においてデバイスが接続されるインターフェースは、ソフトウェア的にポートとして区別される。例えば、デバイスインターフェース８１は、バーコードスキャナー１２が接続されたＵＳＢポート、キャッシュチェンジャー１３が接続されたＣＯＭポート、及び、ディスプレー１４が接続されたＣＯＭポートを有する構成とすることができる。また、デバイスインターフェース８１は、プリンターユニット２１が接続されたＵＳＢポートを有する構成としてもよい。デバイスインターフェース８１が備える各々のポートは、例えば、ポートに付与された番号や記号により識別可能であり、同じ種類の複数のポートを識別および特定できる。
【００６６】
ポート制御部６２は、デバイスインターフェース８１に接続されたデバイスと、各デバイスが接続されたポートを識別する。ポート制御部６２は、処理部７０がデバイスを制御するためにコマンド等を出力する場合に、デバイスインターフェース８１において制御対象のデバイスが接続されたポートを選択し、選択したポートにコマンド等を出力する。ポート制御部６２は、デバイスが出力するデータを取得し、取得したデータを、データを取得したポートを識別（特定）するデータとともに処理部７０に出力する。
【００６７】
処理部７０は、デバイスを制御する制御手段として、第１デバイス制御部７１を有する。第１デバイス制御部７１は、デバイス制御スクリプト７２、及び、デバイスドライバー７３を有する。デバイス制御スクリプト７２はデバイスを制御する場合に呼び出されて実行されるスクリプト（プログラムモジュール）である。
【００６８】
デバイスドライバー７３は、デバイスを制御するためのドライバープログラムであって、デバイス及び制御装置１１の仕様に対応するドライバーである。処理部７０は、デバイスの種類毎に、複数の第１デバイス制御部７１を有する。
【００６９】
例えば、処理部７０が、デバイスドライバー７３によってバーコードスキャナー１２、キャッシュチェンジャー１３、ディスプレー１４及びプリンターユニット２１の各々を制御する場合、これらの各デバイスに対応する第１デバイス制御部７１を備える。この場合、処理部７０は、バーコードスキャナー１２を制御するためのデバイスドライバー７３を有する第１デバイス制御部７１を有する。同様に、処理部７０は、キャッシュチェンジャー１３、ディスプレー１４、及び、プリンターユニット２１を制御するためのデバイスドライバー７３を有する第１デバイス制御部７１を有する。換言すれば、処理部７０は、制御するデバイスの種類のそれぞれに対応するデバイスドライバー７３を備える必要がある。本実施形態では、後述するように、バーコードスキャナー１２、キャッシュチェンジャー１３、ディスプレー１４、及びプリンターユニット２１の少なくとも一部を、ドライバー６８により制御する。このため、処理部７０は、ドライバー６８で制御しないデバイスに対応するデバイスドライバー７３を備える第１デバイス制御部７１を有している。
【００７０】
また、処理部７０は、デバイスインターフェース８１に接続されていないデバイスに対応する第１デバイス制御部７１を有していてもよい。例えば、磁気カードリーダーを制御するデバイスドライバー７３を備える第１デバイス制御部７１を、処理部７０が有していてもよい。
【００７１】
デバイスドライバー７３は、デバイス制御スクリプト７２が出力するデータに基づき、デバイスに適合するコマンドやパラメーターを生成して、出力する。デバイスドライバー７３は、生成したコマンドやパラメーターを、ポート制御部６２によって選択されたポートに出力する。デバイスドライバー７３により制御されるデバイスがデータを出力した場合、このデータは、ポート制御部６２によって、当該デバイスを制御するデバイスドライバー７３に転送される。デバイスドライバー７３は、デバイスが出力したデータを、デバイス制御スクリプト７２の仕様に対応するデータ形式で、デバイス制御スクリプト７２に出力する。このように、デバイスドライバー７３は、デバイスに対応したコマンドやデータ（パラメーター）の生成、出力、及び、デバイス制御スクリプト７２に対応したデータの生成、変換、出力を実行する。
【００７２】
デバイス制御スクリプト７２が入出力するコマンドやデータ形式は、制御装置１１の仕様として予め決められている。デバイスドライバー７３は、制御装置１１の仕様に対応するように作成されている。別の表現では、デバイスドライバー７３は、デバイス制御スクリプト７２と他のプログラムとのインターフェースの仕様に対応している。デバイスドライバー７３は、例えば、制御装置１１を製造した製造事業者が提供するＳＤＫ（Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔ）を用いて作成される。
【００７３】
換言すれば、デバイスドライバー７３は、制御装置１１の仕様に対応した、制御装置１１専用のドライバープログラムである。また、デバイスドライバー７３は、制御対象のデバイスの種類に対応する専用のドライバープログラムである。さらに、多くの場合、デバイスドライバー７３は、デバイスの種類だけでなく、デバイスの機種、製造事業者、あるいは、デバイスのシリーズ（複数の機種の集合）に対応した専用のドライバープログラムである。
【００７４】
例えば、バーコードスキャナー１２を制御するデバイスドライバー７３は、特定の機種のバーコードスキャナー１２が実行及び／または処理可能なコマンドやデータ形式に対応する。或いは、特定の事業者が販売し、共通する仕様を有する複数種類のバーコードスキャナー１２が実行及び／または処理可能なコマンドやデータ形式に対応する。また、このデバイスドライバー７３は、デバイス制御スクリプト７２が入出力するコマンド及びデータ形式に準拠する。
キャッシュチェンジャー１３、ディスプレー１４、及びプリンターユニット２１を、デバイスドライバー７３により制御する場合も同様である。
【００７５】
一方、処理部７０は、第１デバイス制御部７１とは異なる第１デバイス制御部７５を備える。第１デバイス制御部７５は、デバイス制御スクリプト７６を有する。デバイス制御スクリプト７６は、第１デバイス制御部７５がデバイスを制御する場合に呼び出されて起動される。デバイス制御スクリプト７６は、共通通信ライブラリー６５、第２デバイス制御部６６、ヘッダー６７、及びドライバー６８を利用してデバイスを制御するためのプログラムモジュールである。
【００７６】
ヘッダー６７及びドライバー６８は、デバイスを制御するプログラムモジュールであり、制御装置１１に接続されるデバイスに対応するドライバープログラムである。ドライバー６８は、制御対象のデバイスに対してコマンドを出力し、デバイスが出力するデータを取得する。ヘッダー６７は、アプリケーションＡＰの要求に対応してドライバー６８を呼び出し、アプリケーションＡＰが要求するデバイスの動作に対応するコマンドをドライバー６８により生成させる。ドライバー６８は、コマンドをデバイスに送信してデバイスを動作させる。また、ドライバー６８は、デバイスのステータスを監視する。ヘッダー６７は、ドライバー６８により監視中のデバイスのステータスを示すデータを出力する。また、ドライバー６８は、デバイスがデータを出力した場合に、このデータを取得して、ヘッダー６７へ出力する。
【００７７】
ヘッダー６７は、制御装置１１の仕様に限定されない汎用のプログラムモジュールである。例えば、ヘッダー６７は、同一種類のデバイスに対して共通して使用でき、特定のデバイスの機種、製造事業者等に依存しない汎用性を有する。
【００７８】
例えば、ＰＯＳシステム１で使用されるデバイスを、デバイスクラスに分類し、ヘッダー６７を、デバイスクラスに対応するドライバープログラムとして設けることができる。具体的には、バーコードスキャナー１２に対して一組のヘッダー６７を設けることができる。この場合、制御装置１１は、様々な製造事業者が製造した複数のバーコードスキャナー１２を、一組のヘッダー６７により制御できる。キャッシュチェンジャー１３、ディスプレー１４、及びプリンターユニット２１についても同様である。また、磁気カードリーダー、キャッシュドロワー、非接触ＩＣカードリーダー等のデバイスクラスに対しても同様である。従って、同一のデバイスクラスに属する複数のデバイスを、一つの、或いは少数のヘッダー６７により制御することができる。
【００７９】
ヘッダー６７及びドライバー６８の具体的な例として、ＯＰＯＳ仕様に準拠するものが挙げられる。この種のヘッダー６７及びドライバー６８は、デバイスを制御するためのプロパティ、メソッド、イベントをセットで提供する。ここで、プロパティ、メソッド、イベントのそれぞれの語はオブジェクト指向プログラミングで使用される意味に用いられる。
【００８０】
ヘッダー６７は、デバイスクラスごとに、プロパティ、メソッド、イベントのセットを提供するコントロールオブジェクト（ＣＯ）である。ドライバー６８は、ヘッダー６７により呼び出され、ＯＰＯＳにより規定される各種機能をデバイス毎に実行するサービスオブジェクト（ＳＯ）である。ドライバー６８は、ヘッダー６７により呼び出されて、デバイスに対するコマンドの出力やデバイスが出力するデータの取得を実行する。ドライバー６８は、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を実装した構成とすることも可能である。
【００８１】
第２デバイス制御部６６は、汎用のヘッダー６７を動作させるためのプログラムモジュールであり、具体的には実行ファイルである。第２デバイス制御部６６は、アプリケーションＡＰが出力する要求に対応してヘッダー６７を呼び出す。第２デバイス制御部６６は、アプリケーションＡＰが出力する要求を、ヘッダー６７が処理可能なコマンドやデータに変換して、ヘッダー６７に出力する。また、第２デバイス制御部６６は、ドライバー６８により取得されたデータを、アプリケーションＡＰが処理可能なデータ形式に変換して出力する。
【００８２】
第２デバイス制御部６６が実行する変換処理の内容は、例えばＸＭＬで記述された変換テーブル８２（テーブル）により設定できる。変換テーブル８２は、例えば、制御装置１１が有するヘッダー６７が処理可能なデータ形式等を規定する情報を含み、制御装置１１が複数のヘッダー６７を有する場合は第２デバイス制御部６６毎の情報を含む。第２デバイス制御部６６に対して変換テーブル８２を与えることにより、第２デバイス制御部６６は、変換テーブル８２に記述された設定に従って、コマンドの変換やデータ形式の変換を行う。これにより、第１デバイス制御部７５が出力する制御情報を、ヘッダー６７が処理可能なデータに変換して、ヘッダー６７によりコマンドの生成等を実行させることができる。また、ヘッダー６７が出力するデータ等を、第２デバイス制御部６６により変換して第１デバイス制御部７５へ出力できる。
【００８３】
第１デバイス制御部７５は、アプリケーションＡＰに対しては第１デバイス制御部７１と同様に動作し、アプリケーションＡＰの要求を受信し、アプリケーションＡＰに対してデータを出力する。第１デバイス制御部７５は、第２デバイス制御部６６によってデバイスを制御するためのデバイス制御スクリプト７６を有する。デバイス制御スクリプト７６は、アプリケーションＡＰの要求に応じて、第２デバイス制御部６６を呼び出して実行させる。
【００８４】
共通通信ライブラリー６５（通信モジュール）は、第１デバイス制御部７５と第２デバイス制御部６６との間の通信を仲介する。共通通信ライブラリー６５は、処理部７０と第２デバイス制御部６６との間のプロセス間通信を実行させるためのライブラリーであり、例えばＤＬＬ（ダイナミックリンクライブラリー）で構成される。共通通信ライブラリー６５は、第１デバイス制御部７５と第２デバイス制御部６６との間の通信手順をモジュール化したものである。共通通信ライブラリー６５は、第２デバイス制御部６６のラッパーとして機能し、処理部７０と第２デバイス制御部６６との間でソケットによるプロセス間通信を実行する。
【００８５】
共通通信ライブラリー６５は、第１デバイス制御部７５とソケット通信を実行し、タブレット端末１０が送信した情報に基づき第１デバイス制御部７５が出力する情報を受信する。この受信した情報に基づき、共通通信ライブラリー６５は、第２デバイス制御部６６に情報を送信する。共通通信ライブラリー６５が送信する情報は、第２デバイス制御情報に相当する。
【００８６】
共通通信ライブラリー６５は、複数の第２デバイス制御部６６から利用される。すなわち、制御装置１１が、異なるデバイスクラスに対応する複数の第２デバイス制御部６６を有する場合に、これら複数の第２デバイス制御部６６は、共通の共通通信ライブラリー６５を介して第１デバイス制御部７５と通信する。共通通信ライブラリー６５を利用することで、第２デバイス制御部６６と第１デバイス制御部７５との間の通信手順を共通化することができる。このため、各々の第２デバイス制御部６６が第１デバイス制御部７５との通信手順を実装する必要がなく、第２デバイス制御部６６の実装をより容易にする効果がある。
【００８７】
処理部７０は、記憶部２２が記憶するデバイス制御部管理テーブル２２ａにより、第１デバイス制御部７１及び第２デバイス制御部６６を管理する。また、処理部７０は、デバイスの制御を要求したタブレット端末１０と、制御対象のデバイスと、制御対象のデバイスが接続されたポートとを、記憶部２２に記憶されるデバイス通信管理テーブル２２ｂ（デバイス通信管理情報）により管理する。
【００８８】
図４は、制御装置１１の動作を示す模式図であり、特に、デバイス制御部２０ａの動作を示す。
処理部７０（図３）は、選択部７０ａを有する。選択部７０ａは処理部７０の機能の一部を構成するブロックであり、ＨＴＴＰサーバー６１（図３）によりタブレット端末１０と通信する。
【００８９】
選択部７０ａは、タブレット端末１０が制御を要求した場合に、タブレット端末１０が送信するデバイス識別子に基づいて制御対象のデバイスを特定する。選択部７０ａは、特定したデバイスに対応して、制御に使用するデバイス制御部を、第１デバイス制御部７１及び第２デバイス制御部６６の中から選択する。
以下の説明において、第１デバイス制御部７１及び第２デバイス制御部６６を区別せず総称する場合、「デバイス制御部」と記載する。
【００９０】
選択部７０ａは、第１デバイス制御部７１を選択した場合、第１デバイス制御部７１のデバイス制御スクリプト７２（図３）を呼び出す。呼び出されたデバイス制御スクリプト７２は、ポート制御部６２と通信して、制御対象のデバイスが接続されたポートを特定し、特定した結果を戻り値として選択部７０ａに返す。選択部７０ａは、第１デバイス制御部７１の戻り値に基づきポート制御部６２と通信して、デバイスインターフェース８１に接続されたデバイスを制御する。
【００９１】
また、選択部７０ａは、第２デバイス制御部６６を選択した場合、第２デバイス制御部６６に対応する第１デバイス制御部７５のデバイス制御スクリプト７６（図３）を呼び出す。デバイス制御スクリプト７６は、制御対象のデバイスを制御するための情報を第２デバイス制御部６６に対して出力する。
【００９２】
選択部７０ａは、第１デバイス制御部７１及び第２デバイス制御部６６を管理するため、上述したように、デバイス制御部管理テーブル２２ａ（デバイス制御管理情報）を利用する。
【００９３】
図５は、デバイス制御部管理テーブル２２ａの構成例を示す模式図である。
図５に示すように、デバイス制御部管理テーブル２２ａは、デバイス識別子と、デバイス識別子に対応するデバイス制御部を構成するファイルとを対応づける。
【００９４】
デバイス制御部管理テーブル２２ａには、複数の一意のデバイス識別子を設定でき、一つのデバイス識別子に対して、複数のデバイス制御部を登録することができる。デバイス制御部は１つ以上の実行可能なプログラムを含んで構成され、例えば、複数個の実行可能なプログラムを含む構成とすることもできる。この場合、デバイス制御部管理テーブル２２ａによって、デバイス制御部を構成するプログラムのうち、最初に起動すべきプログラムが指定される。具体的には、デバイス制御部管理テーブル２２ａには、デバイス制御部を構成するプログラムである実行ファイルのパスが含まれる。
【００９５】
デバイス制御部管理テーブル２２ａは、デバイス制御部として、プログラムライブラリーや設定ファイルを登録可能な構成であってもよい。例えば、デバイス制御部として機能するプログラムが実行される際に、当該プログラムが、設定ファイルや、二次的に実行されるプログラムのファイルを所定の記憶領域にコピーして実行することがある。このような場合に、設定ファイルや二次的に実行されるプログラムをデバイス制御部管理テーブル２２ａにデバイス制御部として登録することで、必要なファイルを速やかに処理できるという利点がある。デバイス制御部を構成するプログラム、すなわち実行ファイルが、設定ファイル等のコピーを行わない場合には、デバイス制御部管理テーブル２２ａに、最初に呼び出されるプログラム（実行ファイル）の絶対パスのみを登録する構成としてもよい。
【００９６】
選択部７０ａは、アプリケーションＡＰによりデバイスの制御が要求された場合に、制御対象のデバイスのデバイス識別子に対応するファイルをデバイス制御部管理テーブル２２ａにより特定し、特定したファイルを実行させる。これにより、アプリケーションＡＰが指定したデバイスに対応するデバイス制御部を即座に起動できる。
【００９７】
また、デバイス制御部管理テーブル２２ａは、各デバイス制御部を構成する実行ファイルの可否を示すフラグを有する。すなわち、デバイス制御部管理テーブル２２ａにより、制御装置１１にインストールされたデバイス制御部について、実行しない設定とすることが可能である。
【００９８】
図６は、デバイス通信管理テーブル２２ｂの構成例を示す模式図である。
デバイス通信管理テーブル２２ｂは、デバイス制御部によりデバイスを制御する場合の通信先を管理するためのテーブルである。デバイス通信管理テーブル２２ｂは、制御対象のデバイスのデバイス識別子と、デバイスの制御を要求したタブレット端末１０のアドレス（例えば、ＩＰアドレス）とを対応づけて格納する。デバイスの制御を要求したタブレット端末１０は、アプリケーションＡＰを実行したタブレット端末１０を意味する。さらに、デバイス通信管理テーブル２２ｂは、デバイス識別子に対応づけて、デバイス制御部の応答ポート番号（ソケット通信の応答ポート）を格納する。デバイス通信管理テーブル２２ｂに設定されるタブレット端末１０のアドレス（クライアントアドレス）は、タブレット端末１０を特定できればよく、ＩＰアドレスに限定されない。
【００９９】
デバイス通信管理テーブル２２ｂの情報は、デバイスの制御を開始する際に登録され、デバイスの制御が終了すると削除される。このため、デバイス通信管理テーブル２２ｂに登録されたデバイス識別子に対応するデバイスは、タブレット端末１０により制御されている。このため、当該デバイスに対する制御を他のタブレット端末１０が要求しても、選択部７０ａは要求を実行しない。これにより、１つのデバイスに対する制御の重複を防止できる。
【０１００】
第１デバイス制御部７１及び第２デバイス制御部６６は、常時実行されるものではなく、アプリケーションＡＰの要求に応じて、選択部７０ａが第１デバイス制御部７１または第２デバイス制御部６６を選択して起動させる。このため、処理部７０を構成するプロセッサーやメモリー等の制御装置１１のリソースを効率よく利用できる。
【０１０１】
図５に示すデバイス制御部管理テーブル２２ａに登録される情報は、詳細は後述するが、選択部７０ａの機能によって追加、更新、或いは削除される。また、デバイス制御部管理テーブル２２ａに登録される情報を、タブレット端末１０が送信する管理情報に基づいて、制御装置１１が追加、更新、或いは削除する構成であってもよい。この場合、タブレット端末１０が、デバイス制御部管理テーブル２２ａに対する処理（追加、更新、削除等）と処理する情報とを含む管理情報を制御装置１１に送信する。処理部７０は、タブレット端末１０が送信する管理情報に従って、記憶部２２が記憶するデバイス制御部管理テーブル２２ａに対して処理を行い、デバイス制御部管理テーブル２２ａを更新する。
【０１０２】
図６に示すデバイス通信管理テーブル２２ｂについても同様である。デバイス通信管理テーブル２２ｂに登録される情報は、詳細は後述するが、選択部７０ａの機能によって追加、更新、或いは削除される。デバイス通信管理テーブル２２ｂに登録される情報を、タブレット端末１０が送信する管理情報に基づいて、制御装置１１が追加、更新、或いは削除する構成であってもよい。この場合、タブレット端末１０が、デバイス通信管理テーブル２２ｂに対する処理（追加、更新、削除等）と処理する情報とを含む管理情報を制御装置１１に送信する。処理部７０は、タブレット端末１０が送信する管理情報に従って、記憶部２２が記憶するデバイス通信管理テーブル２２ｂに対して処理を行い、デバイス通信管理テーブル２２ｂを更新する。
【０１０３】
図７は、ＰＯＳシステム１の動作を示すシーケンス図である。図７において、制御装置１１に接続される制御対象のデバイスを、「デバイス」と表記する。図７の「デバイス」は、具体的には、バーコードスキャナー１２、キャッシュチェンジャー１３、ディスプレー１４、及びプリンターユニット２１のいずれかである。
【０１０４】
図７には、タブレット端末１０が制御を要求したデバイスが、第２デバイス制御部６６により制御されるデバイスである場合の動作を示す。すなわち、選択部７０ａが、デバイスに対応するデバイス制御部として、第２デバイス制御部６６を選択する場合の動作を示す。
【０１０５】
タブレット端末１０は、ＨＴＴＰクライアント４２の機能によりＨＴＴＰサーバー６１とＴＣＰ通信を確立する（ステップＳＡ１）。ステップＳＡ１の処理は、タブレット端末１０と制御装置１１との間に通信経路Ｋ１を形成するステップを含んでもよい。或いは、形成済みの通信経路Ｋ１においてＴＣＰのコネクションを確立する処理であってもよい。
【０１０６】
タブレット端末１０は、ユーザーの操作に応じてアプリケーションＡＰを実行し、会計処理を行う。この処理で、タブレット端末１０は、制御装置１１に接続されたデバイスの制御を開始するデバイス制御開始要求を、制御装置１１に送信する（ステップＳＡ２）。デバイス制御開始要求は、バーコードスキャナー１２、キャッシュチェンジャー１３、ディスプレー１４またはプリンターユニット２１のいずれかに対する制御の開始を、制御装置１１に要求するメッセージである。デバイス制御開始要求は、制御対象のデバイスを指定するデバイス識別子を含む。
【０１０７】
ＨＴＴＰサーバー６１は、タブレット端末１０が送信するデバイス制御開始要求を受信して転送する（ステップＳＡ３）。ＨＴＴＰサーバー６１がデバイス制御開始要求を転送する送信先は、選択部７０ａが、デバイス制御開始要求に含まれるデバイス識別子に基づいて選択する。選択部７０ａは、デバイス識別子に対応する第１デバイス制御部７１または第２デバイス制御部６６を選択する。選択部７０ａは、デバイス識別子に対応する第２デバイス制御部６６を選択した場合、この第２デバイス制御部６６と通信する第１デバイス制御部７５を、ＨＴＴＰサーバー６１の通信先として選択する。図７の動作例では、選択部７０ａにより第１デバイス制御部７５が選択され、ＨＴＴＰサーバー６１から第１デバイス制御部７５にデバイス制御開始要求が転送される。
【０１０８】
第１デバイス制御部７５は、デバイス制御スクリプト７６を起動し（ステップＳＡ４）、デバイス制御スクリプト７６の機能により第２デバイス制御部６６に対してデバイス制御開始要求を送信する（ステップＳＡ５）。第２デバイス制御部６６は、デバイス制御スクリプト７６が送信するデバイス制御開始要求に応じて起動し（ステップＳＡ６）、ヘッダー６７を介してドライバー６８を呼び出して、ドライバー６８を初期化する（ステップＳＡ７）。これによりドライバー６８が初期化され（ステップＳＡ８）、ドライバー６８が制御対象のデバイスを初期化するための初期化コマンドを、デバイスに送信する（ステップＳＡ９）。制御対象のデバイスは、初期化コマンドに基づき初期化され（ステップＳＡ１０）、この制御対象のデバイスを制御装置１１が制御可能となる。
【０１０９】
ステップＳＡ２〜ＳＡ１０の一連の動作において、デバイスの初期化が完了したことをドライバー６８が検出し、ドライバー６８から第２デバイス制御部６６へデバイスの初期化完了の通知を送信してもよい。この場合、第２デバイス制御部６６が第１デバイス制御部７５に対し、デバイスの制御開始が完了したことを通知し、この通知を第１デバイス制御部７５がＨＴＴＰサーバー６１を介してタブレット端末１０へ転送してもよい。
【０１１０】
続いて、デバイスを動作させる必要に応じて、タブレット端末１０が、デバイス制御要求を送信する（ステップＳＢ１）。デバイス制御要求は、制御対象のデバイスのデバイス識別子、及び、デバイスに実行させる動作の内容を指定するデータを含む。
【０１１１】
ＨＴＴＰサーバー６１は、タブレット端末１０が送信するデバイス制御要求を受信して転送する（ステップＳＢ２）。ＨＴＴＰサーバー６１がデバイス制御要求を転送する送信先は、デバイス識別子に対応して選択部７０ａがステップＳＡ２〜ＳＡ３で選択した送信先である。図７の動作例では、ＨＴＴＰサーバー６１から第１デバイス制御部７５にデバイス制御要求が転送される。
【０１１２】
第１デバイス制御部７５は、ステップＳＡ４で起動したデバイス制御スクリプト７６により、第２デバイス制御部６６に対してデバイス制御要求を送信する（ステップＳＢ３）。第２デバイス制御部６６は、デバイス制御要求に含まれるデータを、ドライバー６８のＡＰＩに渡すデータに変換する（ステップＳＢ４）。第２デバイス制御部６６は、ドライバー６８のＡＰＩにデバイスを制御する内容を示すデータを渡す（ステップＳＢ５）。
【０１１３】
ドライバー６８は、デバイスを動作させるコマンドを生成してデバイスに実行させ（ステップＳＢ６）、これによりデバイスが、アプリケーションＡＰにより要求された動作を実行する（ステップＳＢ７）。
【０１１４】
ステップＳＢ１〜ＳＢ７の一連の動作において、ドライバー６８がデバイスの監視を実行し、デバイスの動作が完了したことを、デバイスのステータスとしてドライバー６８から第２デバイス制御部６６へ通知してもよい。この場合、第２デバイス制御部６６が第１デバイス制御部７５に対し、デバイスの動作が完了したことを通知し、この通知を第１デバイス制御部７５がタブレット端末１０へ転送してもよい。
【０１１５】
タブレット端末１０がデバイスを使用しない状態となった場合（例えば、会計処理のアプリケーションＡＰが終了した場合）、タブレット端末１０は、デバイスの制御を終了するため、デバイス制御解除要求を送信する（ステップＳＣ１）。ＨＴＴＰサーバー６１は、デバイス制御解除要求を転送する（ステップＳＣ２）。図７の例では、デバイス制御解除要求は、選択部７０ａが選択した第１デバイス制御部７５へ転送される。
【０１１６】
第１デバイス制御部７５は、デバイス制御解除要求を、第２デバイス制御部６６に転送し（ステップＳＣ３）、第２デバイス制御部６６はドライバー６８に対し、デバイス制御の解除を要求する（ステップＳＣ４）。これにより、ドライバー６８は、デバイスの制御を終了する処理を行い（ステップＳＣ５）、デバイスが動作を停止する（ステップＳＣ６）。
【０１１７】
ステップＳＣ１〜ＳＣ６の一連の動作において、ドライバー６８がデバイスの監視を実行し、デバイスが停止したことを、デバイスのステータスとしてドライバー６８から第２デバイス制御部６６へ通知してもよい。この場合、第２デバイス制御部６６が第１デバイス制御部７５に対し、デバイスの制御が解除されたことを通知し、この通知を第１デバイス制御部７５がタブレット端末１０へ転送してもよい。
【０１１８】
続いて、制御装置１１にデバイス制御部を登録（インストール）及び削除する動作、デバイス制御部を利用する動作等について説明する。
【０１１９】
図８は、ＰＯＳシステム１の動作を示すフローチャートであり、デバイス制御部を制御装置１１に登録する動作を示す。図８の符号Ａはタブレット端末１０の動作を示し、符号Ｂは制御装置１１の動作を示す。
【０１２０】
タブレット端末１０が、デバイス制御部の登録を求める登録要求を制御装置１１に送信すると（ステップＳ１１）、制御装置１１は、登録要求を受信して、選択部７０ａからタブレット端末１０に登録フォームを送信する（ステップＳ２１）。登録フォームは、登録に必要な情報を送信するためのテンプレートであり、登録フォームに基づき入力用のユーザーインターフェースをタブレット端末１０が表示することにより、ユーザーが、情報を容易に入力できる。登録に必要な情報は、登録するデバイス制御部により制御されるデバイスのデバイス識別子、デバイス制御部を構成するファイルのパスを含む。
【０１２１】
タブレット端末１０は、登録フォームに基づいて入力された情報を制御装置１１に送信する（ステップＳ１２）。制御装置１１は、タブレット端末１０から送信される情報を受信して、受信した情報を選択部７０ａにより取得する（ステップＳ２２）。選択部７０ａは、ステップＳ２２で取得した情報が、すでに登録されているデバイス制御部と重複するか否かを判定する（ステップＳ２３）。選択部７０ａは、ステップＳ２３で、例えばデバイス制御部管理テーブル２２ａを参照して、登録済みのデバイス制御部と重複するか否かを判定する。例えば、選択部７０ａは、ステップＳ２２で取得したファイル名やパス等の情報が、デバイス制御部管理テーブル２２ａに登録されている情報と一致するか否かに基づき、判定を行う。
【０１２２】
登録済みのデバイス制御部と重複すると判定した場合（ステップＳ２３；Ｙｅｓ）、選択部７０ａはステップＳ２１に戻る。
登録済みのデバイス制御部と重複しないと判定した場合（ステップＳ２３；Ｎｏ）、選択部７０ａは、取得したデバイス識別子に対応して実行可能なデバイス制御部が１つであるか否かを判定する（ステップＳ２４）。例えば、選択部７０ａは、ステップＳ２４で、デバイス制御部管理テーブル２２ａにおいて、実行可能フラグがＯＮに設定されたデバイス制御部に対応するデバイス識別子を参照することにより、判定を行う。
【０１２３】
デバイス識別子に対応するデバイス制御部が１つでない場合（ステップＳ２４；Ｎｏ）、選択部７０ａはステップＳ２１に戻る。これにより、１つのデバイス識別子に対応づけて複数のデバイス制御部が登録される状態を防ぐことができる。
【０１２４】
デバイス識別子に対応するデバイス制御部が１つある場合（ステップＳ２４；Ｙｅｓ）、選択部７０ａは、デバイス制御部を構成するファイルを格納するためのフォルダーを、記憶部２２に作成する（ステップＳ２５）。ステップＳ２５で作成されるフォルダーには、ステップＳ２２で取得したファイルのファイル名やパスに関連づけたフォルダー名等が付与される。
【０１２５】
続いて、選択部７０ａは、ステップＳ２５で作成したフォルダーに、デバイス制御部を構成するファイルを移動する（ステップＳ２６）。選択部７０ａは、デバイス制御部管理テーブル２２ａに、登録したデバイス制御部に関する情報を登録する（ステップＳ２７）。すなわち、選択部７０ａは、デバイス制御部管理テーブル２２ａに、デバイス識別子と、デバイス制御部を構成するファイルの情報とを登録する。また、ステップＳ２７で、デバイス制御部の実行可能フラグをＯＮに設定してもよい。
【０１２６】
図９は、ＰＯＳシステム１の動作を示すフローチャートであり、制御装置１１からデバイス制御部を削除する動作を示す。図９において、符号Ａはタブレット端末１０の動作を示し、符号Ｂは制御装置１１の動作を示す。
【０１２７】
タブレット端末１０が、削除するデバイス制御部に対応するデバイス識別子を制御装置１１に送信すると（ステップＳ３１）、制御装置１１は、デバイス識別子を受信し、選択部７０ａにより取得する（ステップＳ４１）。選択部７０ａは、ステップＳ４１で取得したデバイス識別子がデバイス制御部管理テーブル２２ａに登録されていることを確認する（ステップＳ４２）。
【０１２８】
ステップＳ４１で取得したデバイス識別子がデバイス制御部管理テーブル２２ａに登録されていない場合（ステップＳ４３；Ｎｏ）、選択部７０ａは、タブレット端末１０に対しデバイス識別子が存在しないことを通知し（ステップＳ４４）、本処理を終了する。
【０１２９】
デバイス識別子がデバイス制御部管理テーブル２２ａに登録されている場合（ステップＳ４３；Ｙｅｓ）、選択部７０ａは、対象のデバイス識別子に対応づけてデバイス制御部管理テーブル２２ａに登録されたデバイス制御部を削除する（ステップＳ４５）。ステップＳ４５では、デバイス制御部を構成するファイルを削除する。
【０１３０】
続いて、選択部７０ａは、対象のデバイス識別子に対応するデバイス制御部のファイルを格納していたフォルダーを、記憶部２２から削除する（ステップＳ４６）。さらに、選択部７０ａは、デバイス制御部管理テーブル２２ａから、対象のデバイス識別子、デバイス制御部のファイル名やパス等の情報を削除する（ステップＳ４７）。ステップＳ４７で、選択部７０ａは、実行可能フラグ等、デバイス識別子に対応づけてデバイス制御部管理テーブル２２ａに登録された各種の情報を削除してもよい。選択部７０ａは、削除を実行したことをタブレット端末１０に通知し（ステップＳ４８）、本処理を終了する。
【０１３１】
図８及び図９に示す動作は、デバイス制御部を構成するプログラムやデータのファイルを、タブレット端末１０から制御装置１１に送信（アップロード）して制御装置１１に登録する構成を例示した。この方法では、図８の動作でデバイス制御部を登録する際に、制御装置１１が、ファイルを取得して記憶部２２に記憶する。
【０１３２】
ＰＯＳシステム１の態様としては、上記の構成のほかに、デバイス制御部を構成するファイルを予め記憶部２２に記憶しておき、この予め記憶されたファイルを用いてデバイス制御部を登録する構成が挙げられる。
この場合、図８の動作において、ステップＳ２５〜Ｓ２６の処理が省略される。また、図８のステップＳ１２で、タブレット端末１０は、デバイス制御部を構成するファイルのパス等の情報を送信し、ファイルは送信しない。また、図９の動作においてはステップＳ４６の処理が省略される。この構成では、デバイス制御部を構成するファイルを移動することなく、デバイス制御部の登録および削除を行うことができる。また、デバイス制御部を削除してもデバイス制御部を構成するファイルが記憶部２２に記憶されているので、削除されたデバイス制御部を再び登録する処理が容易になる。
【０１３３】
図１０は、ＰＯＳシステム１の動作を示すフローチャートであり、制御装置１１のデバイスの利用を開始する動作を示す。図１０において、符号Ａはタブレット端末１０の動作を示し、符号Ｂは制御装置１１の動作を示す。
【０１３４】
タブレット端末１０が、アプリケーションＡＰの動作に基づき、利用開始するデバイス識別子を制御装置１１に送信すると（ステップＳ５１）、制御装置１１は、デバイス識別子を受信し、選択部７０ａにより取得する（ステップＳ６１）。選択部７０ａは、ステップＳ６１で取得したデバイス識別子がデバイス制御部管理テーブル２２ａに登録されていることを確認する（ステップＳ６２）。
【０１３５】
ステップＳ６１で取得したデバイス識別子がデバイス制御部管理テーブル２２ａに登録されていない場合（ステップＳ６３；Ｎｏ）、選択部７０ａはタブレット端末１０に対し、デバイス識別子が存在しないことを通知し（ステップＳ６４）、本処理を終了する。
【０１３６】
デバイス識別子がデバイス制御部管理テーブル２２ａに登録されている場合（ステップＳ６３；Ｙｅｓ）、選択部７０ａは、対象のデバイス識別子に対応づけてデバイス制御部管理テーブル２２ａに登録されたデバイス制御部を起動する（ステップＳ６５）。ここで、選択部７０ａがデバイス制御部を起動する際に、選択部７０ａに引数が与えられる構成としてもよい。例えば、選択部７０ａが複数のデバイス制御部と通信する場合に、デバイス制御部を識別する情報（例えばソケット通信のポート番号が与えられる構成とすることができる。また、一つのデバイス制御部が異なる複数のデバイスを制御する場合に、ステップＳ６５で、デバイスを識別するための情報（デバイス識別子等）が引数として選択部７０ａに与えられる構成であってもよい。これらの構成によれば、選択部７０ａが複数のデバイス制御部、或いは複数のデバイスの中から、制御対象のデバイスと、そのデバイスを制御するデバイス制御部とを特定できる。
【０１３７】
選択部７０ａは、起動したデバイス制御部の機能により、デバイスの初期化を実行する（ステップＳ６６）。デバイス制御部（例えば、第２デバイス制御部６６）は、デバイスの初期化が完了した場合に、初期化の完了を示す通知を行う（ステップＳ６７）。ステップＳ６７では、選択部７０ａがデバイス制御部と通信するポート宛てに通知が行われる。例えば、デバイスの初期化が完了した場合、初期化完了から一定時間内に、デバイス制御部が選択部７０ａに対して通信を実行する構成とし、この通信の実行を、初期化完了の通知とみなす構成であってもよい。この構成では、例えば、共通通信ライブラリー６５を初期化する処理を行うことにより、デバイスの初期化完了を通知できる。従って、デバイス初期化完了を示す電文を選択部７０ａに送信する必要がなく、手順を簡略化できる。
【０１３８】
選択部７０ａは、初期化完了の通知を受け取った後、デバイス制御部に応答通信を行い（ステップＳ６８）、デバイス通信管理テーブル２２ｂに情報を登録する（ステップＳ６９）。ステップＳ６９では、例えば、ステップＳ６１で取得したデバイス識別子、起動したデバイス制御部が通信するタブレット端末１０のアドレス、及び、ポート番号をデバイス通信管理テーブル２２ｂに登録する。
【０１３９】
その後、選択部７０ａは、ステップＳ５１で送信されたデバイス識別子に対応するデバイスが利用可能であることを、タブレット端末１０に通知し（ステップＳ７０）、本処理を終了する。
【０１４０】
図１１は、ＰＯＳシステム１の動作を示すフローチャートであり、制御装置１１のデバイス制御部を利用する動作を示す。図１１において、符号Ａはタブレット端末１０の動作を示し、符号Ｂは制御装置１１の動作を示す。
【０１４１】
タブレット端末１０は、アプリケーションＡＰの動作に基づき、制御対象のデバイス識別子と、デバイスに実行させる動作内容を示す情報とを含む電文を制御装置１１に送信する（ステップＳ７１）。ステップＳ７１で送信される電文は、例えば、ＨＴＴＰクライアント４２とＨＴＴＰサーバー６１とが送受信するＸＭＬ形式のデータである。
【０１４２】
制御装置１１は、デバイス識別子を受信し、選択部７０ａにより取得する（ステップＳ８１）。選択部７０ａは、ステップＳ８１で取得したデバイス識別子がデバイス通信管理テーブル２２ｂに登録されていることを確認する（ステップＳ８２）。
【０１４３】
ステップＳ８１で取得したデバイス識別子がデバイス通信管理テーブル２２ｂに登録されていない場合（ステップＳ８３；Ｎｏ）、選択部７０ａは、タブレット端末１０に対し、デバイスが利用可能でないことを通知し（ステップＳ８４）、本処理を終了する。
【０１４４】
ステップＳ８１で取得したデバイス識別子がデバイス通信管理テーブル２２ｂに登録されている場合（ステップＳ８３；Ｙｅｓ）、選択部７０ａは、デバイス制御部の通信ポートを取得する（ステップＳ８５）。詳細には、選択部７０ａは、対象のデバイス識別子に対応づけてデバイス制御部管理テーブル２２ａに登録されたデバイス制御部の通信ポートの情報を取得する。
【０１４５】
選択部７０ａは、取得した通信ポートあてに、ステップＳ８１で受信した電文を送信する（ステップＳ８６）。デバイス制御部は、選択部７０ａから送信された電文を、デバイスを制御するためのデバイス制御命令に変換する（ステップＳ８７）。そして、変換されたデバイス制御命令に従って、デバイスドライバー７３或いはドライバー６８が、デバイスに対応するコマンドを生成して、デバイスを制御する（ステップＳ８８）。
【０１４６】
デバイス制御部は、デバイスの制御の結果を検出または取得し、制御の結果を示す電文を生成して、選択部７０ａに送信する（ステップＳ８９）。選択部７０ａは、デバイスの制御の結果をタブレット端末１０に通知し（ステップＳ９０）、本処理を終了する。
【０１４７】
図１２は、制御装置１１の動作を示すフローチャートである。図１２は、特に、制御装置１１がデバイスのイベントを検出する動作を示す。
図１２の動作は、選択部７０ａにより起動されたデバイス制御部が実行する。デバイス制御部は、図１０に示した動作により起動され、制御対象のデバイスを初期化した後、デバイスのイベントを待ち受けする（ステップＳ１０１）。デバイス制御部は、デバイスで発生したイベントを受信すると（ステップＳ１０２）、イベント内容を、選択部７０ａが読み取り可能な電文に変換して、選択部７０ａに送信する（ステップＳ１０３）。選択部７０ａは、デバイス通信管理テーブル２２ｂを参照し（ステップＳ１０４）、デバイス通信管理テーブル２２ｂに設定されたタブレット端末１０のアドレス宛に、電文を送信する（ステップＳ１０５）。これにより、利用可能なデバイスでイベントが発生した場合に、イベントの内容を、タブレット端末１０に対して通知できる。
【０１４８】
図１３は、ＰＯＳシステム１の動作を示すフローチャートであり、制御装置１１のデバイスの利用を停止する動作を示す。図１３において、符号Ａはタブレット端末１０の動作を示し、符号Ｂは制御装置１１の動作を示す。
【０１４９】
タブレット端末１０が、アプリケーションＡＰの動作に基づき、利用停止するデバイス識別子を制御装置１１に送信すると（ステップＳ１１１）、制御装置１１は、デバイス識別子を受信し、選択部７０ａにより取得する（ステップＳ１２１）。選択部７０ａは、ステップＳ１２１で取得したデバイス識別子に基づき、デバイス通信管理テーブル２２ｂを参照する（ステップＳ１２２）。
【０１５０】
選択部７０ａは、ステップＳ１２１で取得したデバイス識別子に対応するデバイス制御部に対し、利用停止を指示する電文を送信する（ステップＳ１２３）。
デバイス制御部は、デバイスを制御して利用を停止する処理を行い（ステップＳ１２４）、デバイス制御部から選択部７０ａへ通信する通信経路を閉じる処理を行う（ステップＳ１２５）。ここで、デバイス制御部は、デバイスの利用停止をする処理の結果に関わらず、デバイス制御部と選択部７０ａとの通信を切断してもよい。具体的には、共通通信ライブラリー６５が、デバイス制御部からデバイスの利用停止を示す通知を受け取ったときに、デバイス選択部への通信を切断する仕様により実現できる。
【０１５１】
選択部７０ａは、デバイス通信管理テーブル２２ｂにおいて、利用停止したデバイス識別子に対応づけて登録されている情報を削除する（ステップＳ１２６）。例えば、選択部７０ａは、対象のデバイス識別子に対応づけてデバイス通信管理テーブル２２ｂに登録されたアドレスやパスを削除する。
【０１５２】
このように、制御装置１１は、ヘッダー６７及びドライバー６８のような汎用のデバイスドライバーを、第２デバイス制御部６６により利用可能としている。このため、デバイスドライバープログラムが公開されているデバイスを制御装置１１に接続する場合、このデバイスを速やかに利用でき、例えばデバイスの仕様に合わせて専用のデバイスドライバー７３を用意する手間を省略できる。また、デバイスドライバー７３を作成するための仕様が公開されていないデバイスであっても、制御装置１１に接続して利用できる。
【０１５３】
また、制御装置１１が、汎用ＡＰＩ仕様に適合する第２デバイス制御部６６を用いれば、このＡＰＩ仕様に適合するデバイスを制御できる。例えば、第２デバイス制御部６６が、ＯＰＯＳバーコードスキャナーＡＰＩに対応する構成である場合、異なる製造事業者（ベンダー）から提供されるバーコードスキャナーを、ＯＰＯＳバーコードスキャナーＡＰＩにより利用できる。すなわち、製造事業者Ａ社が製造または販売するバーコードスキャナー「Ａ」と、製造事業者Ｂ社が製造または販売するバーコードスキャナー「Ｂ」との両方を、第２デバイス制御部６６、及びＯＰＯＳバーコードスキャナーＡＰＩにより制御できる。さらに、制御装置１１により制御可能なデバイスは、デバイスのインターフェースに依存しないので、デバイスを制御装置１１に接続する方法は限定されず、様々なデバイスを利用できるという利点がある。
【０１５４】
以上説明したように、本発明を適用した実施形態に係る制御装置１１は、タブレット端末１０と通信する第１通信部としてのＨＴＴＰサーバー６１と、デバイスと通信する第２通信部としてのデバイスインターフェース８１と、を備える。制御装置１１は、デバイスに対応する第１制御モジュールを実装した第１デバイス制御部７１と、デバイスに対応可能な第２制御モジュールを利用する第２デバイス制御部６６と、を備える。第１制御モジュールは、例えば、デバイスドライバー７３であり、第２制御モジュールは、例えばドライバー６８、または、ヘッダー６７とドライバー６８の組合せである。制御装置１１は、ＨＴＴＰサーバー６１によりタブレット端末１０から受信する制御情報に基づき、第１デバイス制御部７１または第２デバイス制御部６６を選択する処理部７０を備える。処理部７０は、制御情報に基づきコマンドを生成して、生成したコマンドをデバイスインターフェース８１によりデバイスに送信する。
【０１５５】
タブレット端末１０が送信する制御情報は、制御対象のデバイスを示すデバイス識別子を含む。また、制御情報は、制御開始の要求、制御終了の要求、デバイス識別子で指定されるデバイスに対する制御の内容等のいずれかを含んでもよい。
【０１５６】
本発明のデバイス制御装置、及び、デバイス制御装置の制御方法を適用した構成によれば、デバイスを制御する際に、第１制御モジュールを実装した第１デバイス制御部７１と、第２制御モジュールを利用する第２デバイス制御部６６とを選択できる。第１制御モジュールは、デバイスドライバー７３について上述したように、デバイスに対応する制御モジュールであり、デバイスの機種、種類、製造事業者等に対応する、いわば専用の制御プログラムである。これに対し、第２制御モジュールはデバイスに対応可能な制御モジュールであって、このデバイスを含む複数の機種または複数種類のデバイスを制御できる汎用的なプログラムであってもよい。例えば、デバイスクラスに対応して提供される、公知の汎用制御モジュールとすることができる。
【０１５７】
従って、デバイスを制御するために、例えば汎用のプログラムモジュールである第２制御モジュールと、第１制御モジュールとを利用可能である。容易に入手可能な汎用の第２制御モジュールを実装可能であれば、専用の第１制御モジュールが開発中であるなどの未対応の場合、必ずしも専用の第１制御モジュールを実装しなくて済む。このため、デバイスに対応する制御モジュールを調達するための負担を軽減でき、様々なデバイスを利用することが可能となる。
【０１５８】
制御装置１１は、デバイスを識別するデバイス識別子と第１デバイス制御部７１または第２デバイス制御部６６との対応を示すデバイス制御部管理テーブル２２ａを記憶する記憶部２２を備える。処理部７０は、タブレット端末１０から受信した制御情報に含まれるデバイス識別子に基づき、記憶部２２のデバイス制御部管理テーブル２２ａを参照して、第１デバイス制御部７１または第２デバイス制御部６６を選択する。処理部７０は、選択したデバイス制御部により、制御情報に含まれるデバイス識別子により指定されるデバイスにコマンドを送信する。この構成によれば、デバイス制御部管理テーブル２２ａに基づき、第１制御モジュールを実装した第１デバイス制御部７１と、第２制御モジュールを利用する第２デバイス制御部６６とを、デバイスに対応して適切に選択できる。
【０１５９】
記憶部２２は、デバイス識別子とタブレット端末１０との対応を示すデバイス通信管理テーブル２２ｂを有する。処理部７０は、タブレット端末１０から受信した制御情報に含まれるデバイス識別子に基づき、記憶部２２のデバイス通信管理テーブル２２ｂを参照して、制御情報に含まれるデバイス識別子により指定されるデバイスが通信可能か否かを判定する。処理部７０は、通信可能と判定した場合に、第１デバイス制御部７１または第２デバイス制御部６６を選択する。この構成によれば、タブレット端末１０が指定したデバイスが通信可能である場合に、第１デバイス制御部７１または第２デバイス制御部６６を選択してコマンドを送信するので、デバイスの制御を効率化できる。
【０１６０】
処理部７０は、ＨＴＴＰサーバー６１によりタブレット端末１０から受信する管理情報に基づき、デバイス制御部管理テーブル２２ａ、及び／または、デバイス通信管理テーブル２２ｂの追加、更新、及び削除の少なくともいずれかを実行可能であってもよい。この構成によれば、制御対象のデバイスに関する情報に対する追加、更新、削除等が可能であるため、デバイスを効率よく制御できる。
【０１６１】
処理部７０は、第１デバイス制御部７１及び第２デバイス制御部６６を選択する選択部７０ａを有する。また、処理部７０は、選択部７０ａにより第１デバイス制御部７１が選択された場合に、第１デバイス制御部７１が実装する第１制御モジュールの処理結果に基づき、デバイスにコマンドを送信する第１処理部としてのポート制御部６２を有する。また、処理部７０は、選択部７０ａにより第２デバイス制御部６６が選択された場合に、タブレット端末１０から受信した制御情報に基づく第２デバイス制御情報を第２デバイス制御部６６に送信する共通通信ライブラリー６５を備える。第２デバイス制御部６６は、共通通信ライブラリー６５から受信した第２デバイス制御情報に基づき、第２制御モジュールに対応する制御データを生成する。この構成によれば、第２デバイス制御部６６が通信モジュールを介して第２デバイス制御情報を受け取るので、第２制御モジュールが第１制御モジュールとは異なる仕様であっても、確実に第２制御モジュールを機能させることができる。
【０１６２】
制御装置１１は、ドライバー６８毎の制御データを規定する変換テーブル８２を有する。第２デバイス制御部６６は、変換テーブル８２を参照して、共通通信ライブラリー６５から受信した第２デバイス制御情報をドライバー６８に対応する制御データに変換する。この構成によれば、複数の第２制御モジュールの各々について、制御データを対応するデータに変換できる。このため、様々な仕様の第２制御モジュールを機能させることができ、多様なデバイスを制御できる。
【０１６３】
第２制御モジュールとしてのドライバー６８は、第２デバイス制御部６６から入力される制御データに基づき、デバイスに固有のコマンドを生成する。この構成によれば、固有のコマンドを必要とするデバイスを制御できるので、より幅広い種類のデバイスを利用できる。
また、共通通信ライブラリー６５は処理部７０と第２デバイス制御部６６との間の通信を仲介するラッパーとして構成されるので、第２デバイス制御部６６に対し、第２制御情報をより適切に入力させることができる。
【０１６４】
なお、上述した実施の形態は、あくまでも本発明の一態様を示すものであり、本発明の範囲内で任意に変形および応用が可能である。
例えば、上述した実施形態では、レジカウンターＬを有する店舗に、ＰＯＳシステム１が適用された場合を例にして、本発明を説明した。ＰＯＳシステムの使用の態様はこの例に限らず、例えば、喫茶店や、レストラン等の飲食店に対して適用することも可能である。また例えば、制御装置１１と、ＰＯＳサーバー１７とは、別個の装置であったが、制御装置１１にＰＯＳサーバー１７の機能を持たせてもよい。また例えば、制御装置１１はサーマルプリンターであったが、記録形式は何であってもよい。
また例えば、図２〜図４に示す各機能ブロックはハードウェアとソフトウェアの協働により任意に実現可能であり、特定のハードウェア構成を示唆するものではない。また、各機器は、外部接続される記憶媒体に記憶させたプログラムを実行することにより、各種動作を実行してもよい。
【符号の説明】
【０１６５】
１…ＰＯＳシステム（制御システム）、１０…タブレット端末（端末）、１１…制御装置（デバイス制御装置）、１２…バーコードスキャナー（デバイス）、１３…キャッシュチェンジャー（デバイス）、１４…ディスプレー（デバイス）、２０ａ…デバイス制御部、２１…プリンターユニット（デバイス）、２２…記憶部、２２ａ…デバイス制御部管理テーブル（デバイス制御管理情報）、２２ｂ…デバイス通信管理テーブル（デバイス通信管理情報）、４１…制御オブジェクト、４２…ＨＴＴＰクライアント、６１…ＨＴＴＰサーバー（第１通信部）、６２…ポート制御部、６５…共通通信ライブラリー、６６…第２デバイス制御部、６７…ヘッダー、６８…ドライバー（第２制御モジュール）、７０…処理部、７０ａ…選択部、７１…第１デバイス制御部、７２…デバイス制御スクリプト、７３…デバイスドライバー（第１制御モジュール）、７５…第１デバイス制御部、７６…デバイス制御スクリプト、８１…デバイスインターフェース（第２通信部）、８２…変換テーブル（テーブル）、ＡＰ…アプリケーション、Ｋ１…通信経路。
【図１】
2018206139.tif 000003
【図２】
2018206139.tif 000004
【図３】
2018206139.tif 000005
【図４】
2018206139.tif 000006
【図５】
2018206139.tif 000007
【図６】
2018206139.tif 000008
【図７】
2018206139.tif 000009
【図８】
2018206139.tif 000010
【図９】
2018206139.tif 000011
【図１０】
2018206139.tif 000012
【図１１】
2018206139.tif 000013
【図１２】
2018206139.tif 000014
【図１３】
2018206139.tif 000015