以下、実施形態について図面を参照して説明する。
[第1の実施形態]
まず、第1の実施形態のPOSシステムについて図1を用いて説明する。図1は、第1の実施形態のPOSシステムの構成の一例を示す図である。
POSシステム1は、小売店等における取引の会計処理に用いられるシステムである。取引は、小売店等における商品の購入や、娯楽施設等におけるサービスの提供等を含む。
POSシステム1は、1以上のPOS端末装置2aと1以上の情報処理装置4aとを含んで構成される。
情報処理装置4aは、POS端末装置2aに接続されたデバイス2eについて保守や点検等のメンテナンスの作業を実行するためのコンピュータである。情報処理装置4aは、メンテナンスプログラム4bによって、メンテナンス作業を実行する。
メンテナンスプログラム4bは、保守員からメンテナンスの作業の処理の入力を受け付け、第2のポート3bを介して排他制御プログラム2cにメンテナンスの作業の要求電文を送信する。また、メンテナンスプログラム4bは、メンテナンスの作業の要求電文に対する応答電文を排他制御プログラム2cから受信する。
POS端末装置2aは、商品のバーコードをスキャナで読み取り、商品の会計処理を行い、会計情報をディスプレイに表示し、会計情報をプリンタでレシートに印刷して出力し、POSサーバにネットワーク7を介して取引に関する情報を送信する機能を有している。POS端末装置2aは、デバイス2eと接続している。デバイス2eは、POS端末装置2aに接続する周辺機器であり、スキャナやディスプレイやプリンタ等を含む。
POS端末装置2aは、複数のプログラムが協働することによりデバイス2eに各種の処理を実行させる。POS端末装置2aで実行するプログラムには、アプリケーション2b、排他制御プログラム2c、デバイスアクセスプログラム2dがある。なお、POS端末装置2aおよび情報処理装置4aで実行するプログラムには、ユーザインタフェースプログラムやオペレーティングシステムやデバイスドライバ等も含むが、これらについては図示を省略する。
アプリケーション2bは、POS端末装置2aで実行するプログラムであり、ユーザインタフェースプログラム等を介してタッチパネルから会計処理の入力や、スキャナでのバーコード読み取り等を受け付ける。アプリケーション2bは、受け付けた内容に基づき、デバイス2eに対する処理を実行するための要求電文を第1のポート3aを介して排他制御プログラム2cに送信する。アプリケーション2bは、排他制御プログラム2cから要求電文に対応する応答電文を受信する。
排他制御プログラム2cは、アプリケーション2bやメンテナンスプログラム4bからデバイス2eに対する処理を実行するための要求電文を受信し、デバイス2eに対する排他制御を行う。排他制御プログラム2cは、デバイスアクセスプログラム2dが生成したデバイス排他制御コード6dを取得し、デバイス2eに対する処理を実行する要求をデバイスアクセスプログラム2dに送信する。デバイス排他制御コード6dは、デバイスに対する命令を実行する権限(排他制御権)を示す値である。また、排他制御プログラム2cは、デバイス2eに対するメンテナンスの作業を実行する権限である第2の排他制御コードを生成し、メモリ等の記憶部に記憶する。
デバイスアクセスプログラム2dは、デバイス排他制御コード6dが設定された要求を受け付け、デバイスドライバ等を介してデバイス2eに対し処理の実行を要求する。
なお、これらのプログラムは、POS端末装置2a、情報処理装置4aが備える図示しないCPU(Central Processing Unit)等の制御部によって実行されることにより、その処理機能が実現される。
ここで、POS端末装置2aにおける排他制御プログラム2cが実行する排他制御について説明する。
POS端末装置2aは、第1のポート3a又は第2のポート3bのいずれかのポートを介して要求電文を受信する。要求電文とは、POS端末装置2aに接続されたデバイス2eに対する処理を実行するための要求電文である。
POS端末装置2aは、第1のポート3aを介して要求電文を受信した場合、要求電文に設定された第1の排他制御コード6aとデバイス2eに対する命令とを読み取る。
POS端末装置2aは、第1の排他制御コード6aがデバイス2eに対する命令を実行する権限である命令実行権限を有するか否かを判定し、第1の排他制御コード6aがデバイスに対する命令実行権限を有する場合、デバイス2eがメンテナンスの作業中の状態であるか否かを判定する。
例えば、メンテナンスの作業中の状態であるか否かは、デバイス2eがメンテナンスの作業中の状態であるか否かを判定するための値であるメンテナンスフラグ6cを予めメモリ等の記憶部に記憶し、メンテナンスフラグ6cの値により判定できる。
POS端末装置2aは、第2のポート3bを介してデバイス2eに対する処理を開始する命令(メンテナンスの作業を開始する要求)を受信した場合に、デバイス2eがメンテナンスの作業中の状態であることを示す値「ON」をメンテナンスフラグ6cに設定する。メンテナンス作業を開始する要求を受信した場合とは、第2の排他制御コード6bとデバイス2eに対する処理を開始する命令とを設定した要求電文を第2のポート3bを介して排他制御プログラム2cが受信した場合である。
POS端末装置2aは、第2のポート3bを介してデバイス2eに対する処理を終了する命令(メンテナンスの作業を終了する要求)を受信した場合に、デバイス2eがメンテナンスの作業中の状態でないことを示す値「OFF」をメンテナンスフラグ6cに設定する。メンテナンスの作業を終了する要求を受信した場合とは、第2の排他制御コード6bとデバイス2eに対する処理を終了する命令とを設定した要求電文を第2のポート3bを介して排他制御プログラム2cが受信した場合である。
POS端末装置2aは、デバイス2eがメンテナンスの作業中の状態である場合、デバイス2eが使用中であることを示す値(ビジー状態値)を設定した応答電文を生成する。
POS端末装置2aは、デバイス2eがメンテナンスの作業中の状態でない場合、第1の排他制御コード6aを用いてデバイス2eに対する命令を実行し、命令を実行した結果と第1の排他制御コード6aとを設定した応答電文を生成する。POS端末装置2aは、応答電文を要求電文の送信元に送信する。
要求電文の要求元がアプリケーション2bである場合、POS端末装置2aの排他制御プログラム2cは、アプリケーション2bに応答電文を送信する。
アプリケーション2bは、ビジー状態値を有する応答電文を受信した後、第1の排他制御コード6aを用いて排他制御プログラム2cを介してデバイス2eに対する処理を実行する要求電文を再度送信することが可能である。アプリケーション2bは、要求電文を送信後に異常値(エラー状態値)を有する応答電文を受信した場合、要求電文に設定した第1の排他制御コード6aが無効な値として認識する。しかし、ビジー状態値を有する応答電文を受信した場合、デバイス2eが使用中であると認識し、第1の排他制御コード6aは有効な値として認識する。また、排他制御プログラム2cは、第1の排他制御コード6aが命令実行権限を有する場合、メンテナンスの作業中においても、第1の排他制御コード6aを廃棄せず記憶部に記憶することで保持するからである。
これにより、アプリケーション2bは、デバイス2eに対してメンテナンスの作業が発生した場合であっても、継続して同一のデバイス2eに対する命令実行権限(排他制御権限)である第1の排他制御コード6aを用いることができる。
このようにして、POS端末装置2aの周辺機器について実行中の処理を継続しつつメンテナンスの作業が可能なPOS端末装置、POS端末排他制御方法及びPOSシステムを提供できる。
[第2の実施形態]
次に、第2の実施形態のPOSシステムについて図2を用いて説明する。図2は、第2の実施形態のPOSシステムの構成の一例を示す図である。
POSシステム100は、POSサーバ400と1台または複数台のメンテナンス端末500(図2では2台のメンテナンス端末500,510を図示)と1台または複数台のPOS端末装置200(図2では3台のPOS端末装置200,210,220を図示)を備え、販売時点情報管理を行う。
POSサーバ400とPOS端末装置200,210,220とメンテナンス端末500,510とは、ネットワーク150を介して通信可能に接続される。ネットワーク150は、有線ネットワークであってもよいし、無線ネットワークであってもよい。
POSサーバ400は、POS端末装置200,210,220により登録された販売情報等を管理する。
POS端末装置200,210,220は、各種のデバイス(プリンタやスキャナやディスプレイ等)が接続されている。POS端末装置200,210,220の詳細について、図3,図4および図5を用いて後で説明する。
メンテナンス端末500,510は、POS端末装置200,210,220に対し保守や点検等のメンテナンスを行うためのコンピュータであり、携帯端末やタブレット等であってもよい。メンテナンスを行う保守員は、メンテナンス端末500,510を用いてPOS端末装置200,210,220の不具合の有無の確認や、故障の修理等を行うために用いる。
次に、POS端末装置の外観について図3を用いて説明する。図3は、第2の実施形態のPOS端末装置の外観の一例を示す図である。
POS端末装置200は、キャッシャユニット102と、チェッカユニット103とを有する。
キャッシャユニット102は、主として販売代金の受領作業を行うためのユニットである。キャッシャユニット102は、制御ユニット140と、キーボード105、自動釣銭機106、キャッシュドロア107、自動釣札機108、磁気カードリーダ109、タッチパネル110、ディスプレイ111、カスタマディスプレイ112、プリンタ113を有する。
制御ユニット140は、キャッシャユニット102を制御すると共に、POS端末装置200を統括的に制御するコンピュータである。
自動釣銭機106は、顧客から受け取った硬貨の入金と、釣銭の出金とを行う。自動釣札機108は、顧客から受け取った紙幣の入金と、釣札の出金とを行う。キャッシュドロア107は、硬貨及び紙幣を収納する収納庫である。
ディスプレイ111は、取引作業を行うための所定のGUI(Graphical User Interface)を表示する。また、ディスプレイ111は、例えば、液晶ディスプレイである。ディスプレイ111は、タッチパネル110の下層に位置している。ディスプレイ111の表示する画像は、タッチパネル110を透過して、オペレータから視認可能である。オペレータは、ディスプレイ111によって表示された画像を見ながら、タッチパネル110に対するタッチ操作を行うことができる。キーボード105は、ディスプレイ111に表示されたGUIを操作するための入力装置である。カスタマディスプレイ112は、顧客側に取引情報を表示する表示装置であり、例えば、商品購入代金の合計額、顧客からの預かり金額、釣銭金額等を表示する。磁気カードリーダ109は、クレジットカード、会員カード等が備える磁気ストライプに記録された情報を読み取る。プリンタ113は、顧客の精算処理結果をロール紙に印字してレシートを発行する印字手段である。
チェッカユニット103は、主として商品コードの入力作業を行うためのユニットである。チェッカユニット103は、レーン台115と、支柱116、スキャナ123、スピーカ118、多項目キーボード119、ディスプレイ120、カスタマディスプレイ121、タッチパネル122を有する。
レーン台115は、支柱116を支持する。また、レーン台115には、顧客が持参した買い物かごや、買い物かごに投入された商品が載置される。支柱116は、スキャナ123と、スピーカ118、多項目キーボード119、ディスプレイ120、カスタマディスプレイ121、タッチパネル122を支持する。
スキャナ123は、商品に付与されたバーコードを読み取るための装置である。オペレータは、商品に付されたバーコードをスキャナ123に向けてかざすことで、スキャナ123を入力装置とした商品コードの入力を行う。商品コードの入力結果は、ディスプレイ120に表示されて、オペレータが商品コードの入力結果を確認することができる。
タッチパネル122は、バーコードの付されていない商品(例えば、ばら売りの野菜や魚等の生鮮食料品や、惣菜等)をディスプレイ120に表示される商品群から選択する入力装置である。カスタマディスプレイ121は、顧客側に取引情報を表示する表示装置であり、例えば、商品コードを入力した商品の名称、単価等を表示する。また、スピーカ118により音声で入力結果を報知する。例えば、スピーカ118は、入力が正常になされたときと、入力についてオペレータに注意喚起をする必要があるとき等状態に応じて異なる態様の音声出力を行う。多項目キーボード119は、オペレータの操作を受け付ける。例えば、多項目キーボード119は、スピーカ118からの音声出力で注意喚起されたときに、操作の誤りを識別したオペレータによる訂正操作を受け付ける。
次に、キャッシャユニットのハードウェア構成について図4を用いて説明する。
図4は、第2の実施形態のキャッシャユニットのハードウェア構成の一例を示す図である。
キャッシャユニット102は、制御ユニット140に各種入出力装置を接続する。制御ユニット140は、CPU140aによって装置全体が制御されている。CPU140aには、バス140gを介してRAM(Random Access Memory)140bと、HDD(Hard Disk Drive:ハードディスクドライブ)140c、通信インタフェース140d、グラフィック処理装置140e、入出力インタフェース140fが接続されている。
RAM140bには、CPU140aに実行させるOS(Operating System)のプログラム、POS業務を実行するためのアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM140bにはCPU140aによる処理に必要な各種データが格納される。HDD140cにはOS、アプリケーションプログラムが格納される。
グラフィック処理装置140eには、ディスプレイ111及びカスタマディスプレイ112が接続されている。グラフィック処理装置140eはCPU140aからの命令に応じて、画像をディスプレイ111及びカスタマディスプレイ112の画面に表示させる。
入出力インタフェース140fには、キーボード105と、自動釣銭機106、キャッシュドロア107、自動釣札機108、磁気カードリーダ109、タッチパネル110、プリンタ113が接続されている。また、入出力インタフェース140fは、可搬型記録媒体123への情報の書込み、並びに、可搬型記録媒体123への情報の読出しが可能な可搬型記録媒体インタフェースと接続可能になっている。入出力インタフェース140fは、キーボード105と、自動釣銭機106、キャッシュドロア107、自動釣札機108、磁気カードリーダ109、タッチパネル110、プリンタ113、可搬型記録媒体インタフェースからそれぞれ送られてくる信号をバス140gを介してCPU140aに送信する。
通信インタフェース140dは、例えば、RS−232C(Recommended Standard 232 version C)、USB(Universal Serial Bus)接続の接続形式でチェッカユニット103に接続されている。通信インタフェース140dは、チェッカユニット103との間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
次に、チェッカユニットのハードウェア構成の一例について図5を用いて説明する。
図5は、第2の実施形態のチェッカユニットのハードウェア構成の一例を示す図である。
チェッカユニット103は、制御ユニット104を備え、制御ユニット104によって各種入出力装置を統括的に制御している。制御ユニット104は、CPU104aによって装置全体が制御されている。CPU104aには、バス104gを介してRAM104bと、HDD104c、通信インタフェース104d、グラフィック処理装置104e、入出力インタフェース104fが接続されている。なお、RAM104bと、HDD104c、通信インタフェース104d、グラフィック処理装置104e、入出力インタフェース104fは、キャッシャユニット102が備えるRAM140bと、HDD140c、通信インタフェース140d、グラフィック処理装置140e、入出力インタフェース140fと同様の構成であるために、これらの詳細な説明については省略する。
但し、入出力インタフェース104fには、スキャナ123と、スピーカ118、多項目キーボード119、タッチパネル122が接続されている。
スキャナ123は、例えば、撮像素子(CCD(Charge Coupled Device)イメージセンサ、CMOS(Complementary Metal Oxide Semiconductor)イメージセンサ等)を備え、撮像素子が出力する画像情報から各種情報を取得する。また、入出力インタフェース104fは、可搬型記録媒体124への情報の書込み、及び可搬型記録媒体124への情報の読出しが可能な可搬型記録媒体インタフェースと接続可能になっている。入出力インタフェース104fは、スキャナ123と、スピーカ118、多項目キーボード119、タッチパネル122、並びに、可搬型記録媒体インタフェースから送られてくる信号を、バス104gを介してCPU104aに送信する。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
また、キャッシャユニット102及びチェッカユニット103は、それぞれFPGA(Field Programmable Gate Array)やDSP(Digital Signal Processer)等からなるモジュールを含んで構成することもでき、CPU140a,104aを有しない構成とすることもできる。その場合、制御ユニット140,104は、それぞれ不揮発性メモリ(例えば、EEPROM(Electrically Erasable and Programmable Read Only Memory)、フラッシュメモリ、フラッシュメモリ型メモリカード等)を備え、モジュールのファームウェアを記憶する。不揮発性メモリは、可搬型記録媒体123,124、あるいは通信インタフェース140d,104dを介してファームウェアを書き込むことができる。このように制御ユニット140,104は、不揮発性メモリに記憶されているファームウェアを書き換えることにより、ファームウェアの更新をすることもできる。
なお、POS端末装置210,220と、POSサーバ400と、メンテナンス端末500,510も、このようなキャッシャユニット102及びチェッカユニット103と同様のハードウェア構成で実現できる。
次に、POSシステムのソフトウェア構成について、図6を用いて説明する。図6は、第2の実施形態のPOSシステムのソフトウェア構成の一例を示す図である。
図6では、POSシステム100に含まれるPOS端末装置210,220と、メンテナンス端末500に着目して、POSシステム100のソフトウェア構成について説明する。
POS端末装置210において、業務アプリケーション310aと、POS入出力サービスプログラム320aが実行される。POS端末装置220において、業務アプリケーション310bと、POS入出力サービスプログラム320bと、POSメンテナンスプログラム350が実行される。メンテナンス端末500において、端末メンテナンスプログラム580が実行される。POS端末装置210,220およびメンテナンス端末500において、オペレーティングシステムやデバイスドライバ等のプログラムも実行されるが、記載を省略する。
業務アプリケーション310a,310bは、POS端末装置210,220で実行されるアプリケーションプログラムであり、ユーザインタフェースプログラムやミドルウェア等と協働するプログラムである。
POS入出力サービスプログラム320a,320bは、POS端末装置210,220でミドルウェアとして実行されるプログラムである。POS入出力サービスプログラム320a,320bは、業務アプリケーション310a,310bと電文の送受信を行い、デバイスドライバ等を介してデバイスへの要求や、デバイスへのアクセスを排他制御するために用いるコードの生成等を行う。
POSメンテナンスプログラム350は、POS端末装置220において、デバイスに対する要求を受け付け、排他制御を行う機能を有するミドルウェアである。POSメンテナンスプログラム350は、業務アプリケーション310a,310bと端末メンテナンスプログラム580から同一のデバイスに対するアクセスの要求が発生し、アクセスが競合した場合に排他制御を行う。POSメンテナンスプログラム350は、業務アプリケーション310a,310bと電文の送受信を行い、POS入出力サービスプログラム320bを介してデバイスへの要求の送信を行い、POS入出力サービスプログラム320bが付与するコードを受信する。POSメンテナンスプログラム350の処理については、後で図8〜図12を用いて説明する。
POSシステム100においては、TCP/IP(Transmission Control Protocol / Internet Protocol)の通信プロトコルを用いて通信を行う。例えば、POS端末装置210のIPアドレスは「192.168.0.1」であり、POS端末装置220のIPアドレスは「192.168.0.2」であり、メンテナンス端末500のIPアドレスは「192.168.0.5」である。各POS端末装置210,220およびメンテナンス端末500のアクセスは、IPアドレスとポートを指定して行う。POS端末装置210に対するアクセスは、IPアドレス「192.168.0.1」ポート番号「7000」というようにIPアドレスとポート番号を指定する。例えば、POS端末装置210,220について、POSシステム100における通常の業務(プリンタでレシート印刷、スキャナで商品のバーコードをスキャン等)を行うためのアクセスはポート番号「7000」を指定して行う。また、POS端末装置210,220について、メンテナンスを行うためのアクセスはポート番号「8000」を指定して行う。メンテナンスを行うために用いるポートを、メンテナンスポート450とする。通常の業務を行うために用いるポートを、通常ポート400,410とする。なお、IPアドレスおよびポート番号は一例に過ぎず、他のアドレスおよびポートであってもよい。
ここで、POSシステム100における、POS端末装置210,220が備えるデバイスに対するアクセスを要求する電文の流れ(R11,R21,R31,R51)について説明する。リクエスト電文250は、業務アプリケーション310a,310bが送信するアクセスを要求する電文である。リクエスト電文550は、端末メンテナンスプログラム580が送信するアクセスを要求する電文である。また、レスポンス電文260,560は、POSメンテナンスプログラム350が送信するアクセスの要求に応答する電文である。電文の内容については、後で図7を用いて説明する。
まず、POS端末装置210が、自機のデバイスであるプリンタ113aにアクセスする場合の電文の流れ(R11)について説明する。業務アプリケーション310aは、通常ポート400を介し、POS入出力サービスプログラム320aにプリンタ113aに対するアクセスを要求する電文を送信する。POS入出力サービスプログラム320aは、アクセスを要求する電文を受信したことに伴い、プリンタ113aに対するアクセスが競合しない場合、デバイスに対する排他制御を行うために用いるコードであるPOS入出力利用コードを生成する。POS入出力サービスプログラム320aは、応答する電文にPOS入出力利用コードを設定し、業務アプリケーション310aに送信する。業務アプリケーション310aは、POS入出力サービスプログラム320aから受信した電文に設定されたPOS入出力利用コードを用いて、プリンタ113aにアクセスする。業務アプリケーション310aは、POS入出力利用コードを取得することで、プリンタ113aに対するアクセス権限を得られる。例えば、業務アプリケーション310aは、レシートの印刷を要求する電文にPOS入出力利用コードを含めてプリンタ113aに送信することにより、プリンタ113aを用いたレシートの印刷が実行できる。このように、POS端末装置210において、POS入出力サービスプログラム320aが付与するPOS入出力利用コードを有するアクセスが、排他制御権を有するアクセスとして許可され、デバイスにアクセスできる。
次に、POS端末装置220が、自機のデバイスであるプリンタ113bにアクセスする場合の電文の流れ(R21)について説明する。POS端末装置210における電文の流れ(R11)との違いは、業務アプリケーション310bとPOS入出力サービスプログラム320bとの間にPOSメンテナンスプログラム350が介在する点である。POSメンテナンスプログラム350は、業務アプリケーション310bからプリンタ113bに対するアクセスを要求する電文を通常ポート410を介して受信する。POSメンテナンスプログラム350は、アクセスを要求する電文を受信したことに伴い、POS入出力サービスプログラム320bからPOS入出力利用コードを取得する。POSメンテナンスプログラム350は、POS入出力利用コードを電文に設定し、業務アプリケーション310bに送信する。以降は、上述(R11)と同様に、業務アプリケーション310bは、電文に設定されたPOS入出力利用コードを用いてプリンタ113bにアクセスする。
次に、POS端末装置210からPOS端末装置220のスキャナ123bにアクセスする場合の電文の流れ(R31)について説明する。POS端末装置210の業務アプリケーション310aは、通常ポート410を介してPOS端末装置220のスキャナ123bにアクセスを要求する電文を送信する。POSメンテナンスプログラム350は、業務アプリケーション310aからスキャナ123bに対するアクセスを要求する電文を通常ポート410を介して受信する。以降は、上述した電文の流れ(R21)とほぼ同様であるため説明を省略する。
次に、メンテナンス端末500からPOS端末装置220のスキャナ123bにアクセスする場合の電文の流れ(R51)について説明する。メンテナンス端末500は、保守員がPOS端末装置220のデバイスの保守や点検をするために用いるコンピュータである。端末メンテナンスプログラム580は、メンテナンスポート450を介してスキャナ123bにアクセスを要求する電文を送信する。POSメンテナンスプログラム350は、電文を受信したことに伴い、スキャナ123bへのアクセスを試みるがスキャナ123bは既に業務アプリケーション310aによって使用中であり、排他制御を要する。この場合のPOSメンテナンスプログラム350の処理については、後で図8〜図12を用いて説明する。
次に、電文のフォーマットについて図7を用いて説明する。図7は、第2の実施形態の電文のフォーマットの一例を示す図である。
図7(A)は、POS端末装置210からPOS端末220に送信するリクエスト電文250のフォーマットの一例である。リクエスト電文250は、通常排他制御コード251、リクエストコマンド252、コマンド対応データ253を含む。
図7(B)は、POS端末装置220からPOS端末装置210に送信するレスポンス電文260のフォーマットの一例である。レスポンス電文260は、通常排他制御コード261、レスポンスコード262、コマンド対応データ263を含む。
図7(C)は、メンテナンス端末500からPOS端末220に送信するリクエスト電文550のフォーマットの一例である。リクエスト電文550は、メンテナンス排他制御コード551、リクエストコマンド552、コマンド対応データ553を含む。
図7(D)は、POS端末220からメンテナンス端末500に送信するレスポンス電文560のフォーマットの一例である。レスポンス電文560は、メンテナンス排他制御コード561、レスポンスコード562、コマンド対応データ563を含む。
通常排他制御コード251,261は、POSシステム100における通常の業務を行う場合に、デバイスに対するアクセスを制御するために用いるコードである。
通常排他制御コード251の初期値は「0」である。初期値とは、デバイスに対しアクセスを開始するために最初に送信されるリクエスト電文250に含まれる通常排他制御コード251の値である。POSメンテナンスプログラム350は、アクセスを開始するためのリクエスト電文250を通常ポート410を介して受信したことに伴い、POS入出力サービスプログラム320bが生成したPOS入出力コードをレスポンス電文260の通常排他制御コード261に設定する。POSメンテナンスプログラム350は、リクエスト電文の送信元である業務アプリケーション310a,310bに通常排他制御コード261を設定したレスポンス電文260を送信する。
リクエスト電文の送信元である業務アプリケーション310a,310bは、レスポンス電文260を受信し、受信したレスポンス電文260に設定された通常排他制御コード261を取得する。業務アプリケーション310a,310bは、取得した通常排他制御コード261を新たなリクエスト電文250の通常排他制御コード251に設定し、デバイスへのアクセスを要求する新たなリクエスト電文260を送信する。
このようにして、通常ポート410を介して排他制御のためのコードを設定したリクエスト電文250とレスポンス電文260を送受信することにより、デバイスに対して処理を実行するための排他制御が可能となる。
通常ポート410を介して2回目以降の電文を送受信する場合、言い換えると、通常の業務を実行中である場合、通常排他制御コード251,261の値は、POS入出力サービスプログラム320a,320bが生成した入出力コードの値と同じ値である。通常排他制御コード251,261は、デバイスに対しアクセスを終了するための電文が送信されアクセスが終了する際に廃棄される。
メンテナンス排他制御コード551,561は、POSシステム100におけるメンテナンスの業務を行う場合に、アクセスを制御するためにPOSメンテナンスプログラム350が生成し、電文に設定するコードである。メンテナンス排他制御コード551の初期値は「0」である。初期値とは、デバイスに対し、メンテナンスを開始するために最初に送信されるリクエスト電文550に含まれるメンテナンス排他制御コード551の値である。
POSメンテナンスプログラム350は、メンテナンスポート450を介してメンテナンスを行うに際しアクセスを開始するためのリクエスト電文550を受信したことに伴い、メンテナンス排他制御コードを生成し、レスポンス電文560のメンテナンス排他制御コード561に設定する。リクエスト電文550の送信元である端末メンテナンスプログラム580は、レスポンス電文560を受信し、受信したレスポンス電文560に設定されたメンテナンス排他制御コード561を取得する。端末メンテナンスプログラム580は、取得したメンテナンス排他制御コード561を新たなリクエスト電文550のメンテナンス排他制御コード551に設定する。端末メンテナンスプログラム580は、メンテナンスポート450を介してメンテナンスのためのアクセスを要求する新たなリクエスト電文550をPOSメンテナンスプログラム350に送信する。
このようにして、メンテナンスポート450を介してメンテナンスのための排他制御のコードを設定したリクエスト電文550とレスポンス電文560を送受信することにより、メンテナンスのための排他制御が可能となる。
メンテナンスポート450を介して2回目以降の電文を送受信する場合、言い換えると、メンテナンスの作業を実行中である場合、メンテナンス排他制御コード551,561の値は、POSメンテナンスプログラム350が生成したメンテナンス排他制御コードの値となる。メンテナンス排他制御コード551,561は、メンテナンスを終了するための電文を送信された際に廃棄される。
リクエストコマンド252,552は、リクエストコマンドとして用いられるコードであり、POS端末装置に接続したデバイスの名前やデバイスに対する要求を含む。例えば、POSシステムにおける通常の業務においてリクエストコマンドとして用いられるコードの例として以下の(1)〜(3)がある。(1)スキャナの使用開始コード「0x1010」、(2)スキャナの使用終了コード「0x1020」、(3)プリンタの使用開始コード「0x2010」。また、POSシステムにおけるメンテナンスの業務においてリクエストコマンドとして用いられるコードの例として以下の(4)〜(7)がある。(4)スキャナのメンテナンス開始コード「0x9010」、(5)プリンタのメンテナンス開始コード「0xA010」、(6)スキャナの使用開始コード「0x1010」、(7)プリンタの使用開始コード「0x2010」。
レスポンスコード262,562は、POS入出力サービスプログラム320a,320bからの戻り値が格納される。例えば、POS入出力サービスプログラム320a,320bにおいて、要求された処理が正常に実行された場合は「正常」、エラーが生じた場合は「異常」を示す値が格納される。
コマンド対応データ253,553は、リクエストコマンド252,552に対応して各種のデータが格納される。また、コマンド対応データ263,563は、レスポンスコード262,562に対応して各種のデータが格納される。例えば、プリンタのライト関数(印刷を実行する命令)のコマンドがリクエストコマンド252,552に格納された場合、コマンド対応データ253には印字データが格納される。また、レスポンスコード262,562に「異常」を示す値が格納された場合、コマンド対応データ263,563にエラーコードが格納される。
次に、POS排他制御処理について図8を用いて説明する。図8は、第2の実施形態のPOS排他制御処理のフローチャートを示す図である。
POS排他制御処理は、POS端末装置に接続されたデバイスにアクセスするための排他制御をPOSメンテナンスプログラム350が行う処理である。POS排他制御処理は、POSメンテナンスプログラム350がインストールされたPOS端末装置220の制御部(CPU140aまたはCPU104a)が実行する処理である。
[ステップS11]制御部は、リクエスト電文を受信したか否かを判定する。制御部は、リクエスト電文を受信した場合にステップS12にすすみ、受信しない場合にステップS11にもどる。
[ステップS12]制御部は、リクエスト電文を受信したポートがメンテナンスポート450であるか否かを判定する。制御部は、ポートがメンテナンスポート450でない場合にステップS13にすすみ、メンテナンスポート450である場合にステップS14にすすむ。
制御部は、リクエスト電文を通常ポート410で受信したか、メンテナンスポート450で受信したかを判定することで、通常のアクセスであるかメンテナンスの作業のためのアクセスであるかを判定できる。なお、一例として、通常ポート410のポート番号は「7000」、メンテナンスポート450のポート番号は「8000」と予め定め、ポート番号により受信したポートの判定をするが、これらは一例でありその他のものでもよい。
[ステップS13]制御部は、通常排他制御処理を実行する。通常排他制御処理は、通常ポート410を介してリクエスト電文を受信した場合に、デバイスに対する排他制御を行う処理である。通常排他制御処理は、後で図9および図10を用いて説明する。
[ステップS14]制御部は、メンテナンス排他制御処理を実行する。メンテナンス排他制御処理は、メンテナンスポート450を介してリクエスト電文550を受信した場合に、デバイスに対する排他制御を行う処理である。メンテナンス排他制御処理は、後で図11を用いて説明する。
[ステップS15]制御部は、リクエスト電文250,550を送信した送信元(POS端末装置またはメンテナンス端末)に対して、レスポンス電文260,560を送信する。
[ステップS16]制御部は、自機であるPOS端末装置に対してシャットダウンの指示があるか否かを判定する。制御部は、シャットダウンの指示が無い場合にステップS11にもどり、シャットダウンの指示がある場合にPOS排他制御処理を終了する。
なお、通常排他制御処理、メンテナンス排他制御処理およびメンテナンス排他制御処理から呼び出す処理において、5つの変数(データA,データB,データC,データD,データE)を用いる。変数については、最初に用いる際に適宜説明をする。変数は、RAM104b,140b等の記憶部に記憶される。変数の初期値は、全て「0」である。
次に、通常排他制御処理について図9および図10を用いて説明する。図9は、第2の実施形態の通常排他制御処理のフローチャートを示す図である(その1)。図10は、第2の実施形態の通常排他制御処理のフローチャートを示す図である(その2)。
通常排他制御処理は、POSメンテナンスプログラム350が通常ポート410を介してリクエスト電文を受信した場合に、デバイスに対する排他制御を行う処理である。通常排他制御処理は、POS排他制御処理のステップS13でPOSメンテナンスプログラム350がインストールされたPOS端末装置220の制御部(CPU140aまたはCPU104a)が実行する処理である。
[ステップS21]制御部は、受信したリクエスト電文に含まれる通常排他制御コードをデータAに設定する。
データAは、原則として、リクエスト電文に含まれている通常排他制御コードを記憶する変数である。なお、データAは、後で説明するステップS31,S35においては、レスポンス電文の通常排他制御コードにPOS入出力コードを設定するためにも用いられる。
[ステップS22]制御部は、データAが初期値「0」であるか否かを判定する。制御部は、データAが初期値である場合にステップS26にすすみ、初期値でない場合にステップS23にすすむ。
なお、リクエスト電文250において、デバイスに対するオープンコマンドの発行である初回のアクセス要求(デバイス開始要求)においては、通常排他制御コードは必ず初期値「0」となる。
[ステップS23]制御部は、データAとデータCの値が等しいか否かを判定する。言い換えると、制御部は、受信したリクエスト電文に含まれる通常排他制御コードとPOS入出力サービスプログラムが生成した通常排他制御コード(POS入出力コード)とが同一の値であるか否かを判定する。制御部は、データAとデータCの値が等しい場合にステップS26にすすみ、等しくない場合にステップS24にすすむ。
データCは、後で説明するステップS30において、POS入出力サービスプログラムが生成したPOS入出力コードを記憶する変数である。POS入出力コードは、POS端末装置に接続しているデバイスにアクセスする際に用いる排他制御を行うためのコードである。
[ステップS24]制御部は、データAとデータEの値が等しいか否かを判定する。制御部は、データAとデータEの値が等しい場合にステップS26にすすみ、等しくない場合にステップS25にすすむ。
データEは、後で図12を用いて説明するメンテナンス作業中処理のステップS66において、メンテナンス作業中にデバイスへのアクセスに用いられていたPOS入出力コードを記憶するための変数である。
このように、制御部は、ステップS23およびS24において受信した通常排他制御コードとデータCまたはデータEに保存していたコードとを比較することで、受信したリクエスト電文に係る要求がデバイスへの排他制御の権限を有しているか否かを判定できる。
[ステップS25]制御部は、レスポンス電文のレスポンスコードに異常値を設定する。また、制御部は、レスポンス電文のコマンド対応データにエラー番号等を設定できる。
[ステップS26]制御部は、メンテナンスフラグがONであるか否かを判定する。言い換えると、制御部は、受信したリクエスト電文によってアクセスの要求を受けたデバイスがメンテナンスの作業中であるか否かを判定する。
制御部は、メンテナンスフラグがONでない場合にステップS27にすすみ、ONである場合にステップS28にすすむ。
メンテナンスフラグは、メンテナンスが行われているか否かの状態を示すフラグであり、RAM104b,140b等の記憶部に記憶される。メンテナンスフラグの初期値は、「OFF」である。メンテナンスフラグが「ON」の場合、対象となるデバイスについてメンテナンスを実行している状態(メンテナンスの作業中)であることを示す。メンテナンスフラグが「OFF」の場合、対象となるデバイスについてメンテナンスを実行していない状態であることを示す。メンテナンスフラグの値の変更は、後で図11を用いて説明するメンテナンス排他制御処理のステップS43およびステップS46で行われる。
メンテナンスフラグは、デバイス毎に設定することができる。デバイス毎にメンテナンスフラグを設定することにより、制御部は、複数のデバイスそれぞれについてメンテナンスの作業が実行されている状態か否かを判定することができる。
[ステップS27]制御部は、データCをパラメータ(排他制御を行うためのコード)として設定し、POS入出力サービスプログラムを呼び出し、ステップS29にすすむ。言い換えると、制御部は、データCに格納されていたPOS入出力コードを用いて、受信したリクエスト電文に基づきPOS入出力サービスプログラムに対しデバイスへのアクセスを要求する。
例えば、制御部は、リクエスト電文250にプリンタ113bに対しアクセスを開始するコマンドが含まれる場合、POS入出力サービスプログラムに対しプリンタ113bへのアクセスの開始を要求する。また、制御部は、リクエスト電文250にプリンタ113bに対しアクセスを終了するコマンドが含まれる場合、POS入出力サービスプログラムに対しプリンタ113bへのアクセスの終了を要求する。また、制御部は、リクエスト電文250にプリンタ113bに対しレシートの印刷を実行するコマンドが含まれる場合、POS入出力サービスプログラムに対しプリンタ113bにレシートの印刷の実行を要求する。
[ステップS28]制御部は、レスポンス電文のレスポンスコードにビジー状態値を設定する。言い換えると、制御部は、アクセスの要求を受けたデバイスがメンテナンスの作業中のため、使用できない状態(ビジー状態)である旨を示す値をレスポンスコードに設定する。
[ステップS29]制御部は、POS入出力サービスプログラムの応答の種別を判定する。言い換えると、制御部は、ステップS27においてPOS入出力サービスプログラムに要求を発行しており、要求に応じた応答をPOS入出力サービスプログラムから受信し、応答の種別を判定する。
制御部は、応答の種別がデバイス開始要求に対するものである場合にステップS30にすすみ、デバイス終了要求に対するものである場合にステップS32にすすみ、その他である場合にステップS34にすすむ。
なお、応答の種別がデバイス開始要求に対するものである場合とは、ステップS27でデバイスへのアクセスの開始をPOS入出力サービスプログラムに対して要求し、その要求に対する応答を受信した場合であることを意味する。また、応答の種別がデバイス終了要求に対するものである場合とは、ステップS27でデバイスへのアクセスの終了をPOS入出力サービスプログラムに対して要求し、その要求に対する応答を受信した場合であることを意味する。また、応答の種別がその他である場合とは、ステップS27でデバイスへのアクセスの開始または終了以外についてPOS入出力サービスプログラムに対して要求し、その要求に対する応答を受信した場合であり、例えば、デバイスを実行する要求に対する応答を受信した場合である。デバイスへのアクセスの開始または終了以外の要求とは、デバイスの実行、例えば、プリンタによるレシートの印刷やスキャナによるバーコード読み取り等である。
[ステップS30]制御部は、POS入出力サービスプログラムが生成したPOS入出力コードをデータCに設定する。
なお、POS入出力コードは、POS入出力サービスプログラムが生成し、POS入出力サービスプログラムからPOSメンテナンスプログラムに渡される値である。POS入出力コードは、同一のデバイスに対するアクセスの開始要求から終了要求に至るまで、同一の値が用いられる。言い換えると、アクセスの要求の対象となるデバイスが異なる場合には、異なるPOS入出力コードが生成される。これにより、デバイス毎の排他制御が可能となる。
[ステップS31]制御部は、データCをデータAに設定する。言い換えると、制御部は、生成したPOS入出力コードをデータAに保存する。
[ステップS32]制御部は、データEを初期化する。言い換えると、制御部は、データEに「0」を設定する。
[ステップS33]制御部は、データCを初期化する。言い換えると、制御部は、データCに「0」を設定する。
[ステップS34]制御部は、レスポンス電文のレスポンスコードにPOS入出力サービスプログラムの戻り値(正常値または異常値)を設定する。
なお、POS入出力サービスプログラムの戻り値が正常値となる場合は、デバイスに対する要求が正常に実行された場合である。また、POS入出力サービスプログラムの戻り値が異常値(エラー)となる場合は、デバイスに対する要求が正常に実行されなかった場合である。
[ステップS35]制御部は、データAをレスポンス電文の通常排他制御コードに設定する。言い換えると、制御部は、POS入出力サービスプログラムが生成したPOS入出力コードを通常排他制御コードとしてレスポンス電文に設定する。これにより、当該レスポンス電文を受信した業務アプリケーションは、次回からデバイスへのアクセスを要求するリクエスト電文の通常排他制御コードに、レスポンス電文に設定された通常排他制御コードを用いてデバイスにアクセスをすることができる。
次に、メンテナンス排他制御処理について図11を用いて説明する。図11は、第2の実施形態のメンテナンス排他制御処理のフローチャートを示す図である。
メンテナンス排他制御処理は、POSメンテナンスプログラム350がメンテナンスポート450を介してリクエスト電文550を受信した場合に、デバイスに対する排他制御を行う処理である。
メンテナンス排他制御処理は、POS排他制御処理のステップS14でPOSメンテナンスプログラム350がインストールされたPOS端末装置220の制御部(CPU140aまたはCPU104a)が実行する処理である。
[ステップS41]制御部は、受信したリクエスト電文のメンテナンス排他制御コードをデータBに設定する。
データBは、リクエスト電文に含まれているメンテナンス排他制御コードを記憶する変数である。
[ステップS42]制御部は、リクエスト電文の種別を判定する。言い換えると、制御部はリクエスト電文に含まれるリクエストコマンドの内容に基づき、リクエスト電文の種別を判定する。
制御部は、リクエスト電文の種別がメンテナンス開始である場合にステップS43にすすみ、種別がメンテナンス終了である場合にステップS46にすすみ、種別がその他である場合にステップS50にすすむ。
なお、種別がその他の場合のリクエストコマンドとは、メンテナンス作業中において、プリンタ113でレシートを試し印刷をする場合の印刷を要求するコマンドや、ディスプレイ120を点検するための画面を表示する場合の画面表示を要求するコマンド等が含まれる。
[ステップS43]制御部は、メンテナンスフラグをONに設定する。
[ステップS44]制御部は、メンテナンス排他制御コードを生成し、データDに設定する。データDは、メンテナンス排他制御コードを記憶するための変数である。
[ステップS45]制御部は、データDをレスポンス電文のメンテナンス排他制御コードに設定する。
[ステップS46]制御部は、メンテナンスフラグをOFFに設定する。
[ステップS47]制御部は、データDをレスポンス電文のメンテナンス排他制御コードに設定する。
[ステップS48]制御部は、データBを初期化する。言い換えると、制御部は、データBに「0」を設定する。
[ステップS49]制御部は、データDを初期化する。言い換えると、制御部は、データDに「0」を設定する。
[ステップS50]制御部は、メンテナンス作業中処理を実行する。メンテナンス作業中処理は、POSメンテナンスプログラム350がメンテナンスポート450を介してメンテナンスの作業を行うリクエスト電文550を受信した場合に、デバイスに対する排他制御を行う処理である。メンテナンス作業中処理は、後で図12を用いて説明する。
[ステップS51]制御部は、レスポンス電文の戻り値に正常値を設定し、メンテナンス排他制御処理を終了する。言い換えると、制御部は、メンテナンスの開始または終了の処理が正常に処理されたことを示す値をレスポンス電文の戻り値に設定する。
なお、メンテナンス開始を示すリクエスト電文を送信した端末メンテナンスプログラム580は、レスポンス電文を受信し、レスポンス電文に含まれる排他制御コードを用いてメンテナンス作業を開始することができる。
次に、メンテナンス作業中処理について図12を用いて説明する。図12は、第2の実施形態のメンテナンス作業中処理のフローチャートを示す図である。
メンテナンス作業中処理は、POSメンテナンスプログラム350がメンテナンスポート450を介してメンテナンスの作業を行うリクエスト電文550を受信した場合に、デバイスに対する排他制御を行う処理である。メンテナンス排他制御処理は、メンテナンス排他制御処理のステップS50でPOSメンテナンスプログラム350がインストールされたPOS端末装置220の制御部(CPU140aまたはCPU104a)が実行する処理である。
[ステップS61]制御部は、データBとデータDが等しいか否かを判定する。言い換えると、制御部は、受信したリクエスト電文に含まれるメンテナンス排他制御コードと、データDに保存されているメンテナンス排他制御コードとが、等しいか否かを判定する。制御部は、データBとデータDが等しい場合にステップS62にすすみ、等しくない場合にステップS70にすすむ。
なお、データBとデータDが等しい場合とは、メンテナンスの作業中の端末メンテナンスプログラム580から、メンテナンスの開始時に生成したメンテナンス排他制御コードを設定したリクエスト電文を制御部が受信した場合である。制御部は、データBとデータDとが等しい場合、端末メンテナンスプログラム580から、メンテナンスのための排他制御の権限を有するリクエスト要求を受信したと判定できる。
[ステップS62]制御部は、データCをパラメータ(排他制御を行うためのコード)として設定し、POS入出力サービスプログラムを呼び出し、ステップS63にすすむ。言い換えると、制御部は、データCに格納されていたPOS入出力コードを用いて、受信したリクエスト電文に基づきPOS入出力サービスプログラムに対しデバイスへのアクセスを要求する。
リクエスト電文に基づきアクセスを要求するとは、例えば、制御部は、リクエストコマンド552にスキャナ123bに対しメンテナンスのためのアクセスを開始するコマンドが含まれる場合、POS入出力サービスプログラムに対しスキャナ123bへのアクセスの開始を要求することである。
[ステップS63]制御部は、POS入出力サービスプログラムの応答の種別を判定する。言い換えると、制御部は、ステップS62においてPOS入出力サービスプログラムに要求を発行しており、要求に応じた応答をPOS入出力サービスプログラムから受信し、応答の種別を判定する。
制御部は、応答の種別がデバイス開始要求に対するものである場合にステップS64にすすみ、デバイス終了要求に対するものである場合にステップS65にすすみ、その他である場合にステップS68にすすむ。
なお、応答の種別がデバイス開始要求に対するものである場合とは、ステップS62でデバイスへのアクセスの開始を要求し、その要求に対する応答を受信した場合であることを意味する。
また、応答の種別がデバイス終了要求に対するものである場合とは、ステップS62でデバイスへのアクセスの終了を要求し、その要求に対する応答を受信した場合であることを意味する。
また、応答の種別がその他である場合とは、ステップS62でデバイスへのアクセスの開始または終了以外の要求を行い、その要求に対する応答を受信した場合である。例えば、メンテナンスのためのデバイス実行の要求に対する応答を受信した場合である。
[ステップS64]制御部は、POS入出力サービスプログラムが生成したPOS入出力コードを受信し、POS入出力コードをデータCに設定する。
なお、制御部は、デバイスへアクセスを開始し、デバイスの実行を行い、デバイスへのアクセスを終了するまで、同一のデバイスに対して同一のPOS入出力コードを用いる。
[ステップS65]制御部は、データEが初期値「0」であるか否かを判定する。言い換えると、制御部は、データEが初期値であるか、または、データEにPOS入出力コードが設定されているかを判定する。
制御部は、データEが初期値である場合にステップS66にすすみ、初期値でない場合にステップS67にすすむ。
[ステップS66]制御部は、データCをデータEに設定する。言い換えると、データCにはPOS入出力コードが設定されており、POS入出力コードはデバイスに対するアクセスの開始要求から終了要求に至るまで同一の値が用いられる。このため、制御部は、データCの値をデータEに設定することにより、デバイスへのアクセスに使用していたPOS入出力コードをデータEに保存することができる。
[ステップS67]制御部は、データCを初期化する。言い換えると、制御部は、データCに「0」を設定する。
[ステップS68]制御部は、レスポンス電文のレスポンスコードにPOS入出力サービスプログラムの戻り値(正常値または異常値)を設定する。
なお、POS入出力サービスプログラムの戻り値が正常値となる場合は、デバイスに対する要求が正常に実行された場合である。また、POS入出力サービスプログラムの戻り値が異常値となる場合は、デバイスに対する要求が正常に実行されなかった場合である。また、制御部は、異常値である場合、デバイスへのアクセスエラー等エラーの内容に応じたエラー番号を設定できる。
[ステップS69]制御部は、データDをレスポンス電文のメンテナンス排他制御コードに設定する。言い換えると、制御部は、データDに保存されているメンテナンス排他制御コードをレスポンス電文のメンテナンス排他制御コードとして設定する。
[ステップS70]制御部は、レスポンス電文のレスポンスコードに異常値を設定する。また、制御部は、レスポンス電文にエラー番号等を設定できる。
なお、制御部がレスポンスコードに異常値を設定する場合とは、受信したメンテナンス排他制御コードが誤りである場合である。
[ステップS71]制御部は、データBをレスポンス電文のメンテナンス排他制御コードに設定する。言い換えると、制御部は、受信したリクエスト電文に含まれるメンテナンス排他制御コードをレスポンス電文のメンテナンス排他制御コードに設定する。制御部は、メンテナンス作業中処理を終了する。
ここで、メンテナンス作業中処理に関連する排他制御の概要について図6を用いて説明する。業務アプリケーション310aからスキャナ123bに対してアクセスが発生した後、端末メンテナンスプログラム580からスキャナ123bに対しメンテナンスの作業を開始するリクエスト電文が送信され、メンテナンス作業中であることを前提とする。
POSメンテナンスプログラム350は、メンテナンスの作業中において、端末メンテンスプログラム580からスキャナ123bのデバイスを終了させる要求があった場合について説明する。POSメンテナンスプログラム350は、メンテナンス開始前に業務アプリケーション310aが用いていたスキャナ123bを排他制御するためのPOS入出力コードであるデータCをデータEに保存する(ステップS66)。
POSメンテナンスプログラム350は、業務アプリケーション310aから通常ポート410を介しリクエスト電文を受信した場合に、リクエスト電文に含まれるPOS入出力コードであるデータAと保存したPOS入出力コードであるデータEとを比較する(ステップS24)。
POSメンテナンスプログラム350は、データAとデータEが等しい場合(ステップS24のYES)、言い換えると通常の業務のリクエスト電文に含まれる通常排他制御コードとデータEに保存したPOS入出力コードが等しい場合、メンテナンス作業中であるか否かを判定する(ステップS26)。
POSメンテナンスプログラム350は、メンテナンス作業中である場合(ステップS26のYES)、レスポンス電文のレスポンスコードにビジー状態値を設定(ステップS28)することで、通常ポート410からの要求元のPOS端末装置220を待ち状態とする。
また、POSメンテナンスプログラム350は、メンテナンス作業中でない場合(ステップS26のNO)、通常ポート410からのリクエスト電文を受け付け、POS入出力サービスプログラム320bを介してスキャナ123bへの要求を処理する(ステップS27)。
POSメンテナンスプログラム350は、業務アプリケーション310aがスキャナ123bへのアクセスのために用いているPOS入出力コードを保存し、スキャナ123bに対するメンテナンスの作業の実行を受け付ける。これにより、POSメンテナンスプログラム350は、業務アプリケーション310aから同じPOS入出力コードを用いて継続してスキャナ123bに対するアクセスの受け付けが可能になる。
言い換えると、業務アプリケーション310aは、新たな排他制御コードを取得する事を要せず、同一のPOS入出力コードを通常排他制御コードとして用いてスキャナ123bに対しアクセスすることが可能となる。業務アプリケーション310aは、ビジー状態値を有するレスポンス電文を受信したとしても、POS端末装置220に同一のPOS入出力コードを設定したリクエスト電文を送信することで、再度のアクセスが可能となる。
このようにして、POS端末装置220は、POSメンテナンスプログラム350の機能を用いることで、メンテナンス端末500からのメンテナンスの業務を行う要求を、POS端末装置210からの通常の業務を行う要求を中断させることなく受け付けることができる。また、POS端末装置210の業務アプリケーション310aは、通常の業務を実行中にメンテナンス作業が発生した場合でも、同一の通常排他制御コードを継続して使用可能であり、通常の業務を中断することを要しない。
POS端末装置220には複数のデバイスが接続されており、各デバイスが実行中であるか否かを保守員が判別し、実行中でないデバイスを探してメンテナンスを行うのは労力と時間を要する。しかし、POSメンテナンスプログラム350の機能を用いることで、実行中のデバイスに対し、デバイスで実行中の業務を継続しながらメンテナンスの作業を行うことが可能となる。
また、POS端末装置220は、POSメンテナンスプログラム350の機能を用いることで、既存の業務アプリケーション310a,310bやPOS入出力サービスプログラム320a,320bやデバイスドライバ等に改変を加えることなく、メンテナンスのための排他制御を実行できる。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、POS端末装置2a,200,210,220、情報処理装置4a、メンテナンス端末500,510が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体には、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等がある。磁気記録装置には、HDD、フレキシブルディスク(FD)、磁気テープ(MT)等がある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc - Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等がある。光磁気記録媒体には、MO(Magneto - Optical disk)等がある。半導体メモリには、USB(Universal Serial Bus)メモリ等のフラッシュメモリがある。
上記プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータに格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
上記プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラム若しくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
また、プログラムで記述された処理の一部または全てを、電子回路に置き換えることが可能である。例えば、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)等の電子回路で実現してもよい。