(57)【特許請求の範囲】
【請求項１】
制御装置に接続可能な記録装置であって、
第１記憶領域と、
この第１記憶領域と異なる第２記憶領域と、
前記第１記憶領域と前記第２記憶領域とを制御する制御部と、を備え、
前記制御部は、
前記制御装置からコマンドを受信すると、前記第１記憶領域に書き込み、
前記第１記憶領域に書き込んだ前記コマンドを読み出し、
読み出した前記コマンドが通常コマンドであると判別した場合には、当該読み出しに応じて前記通常コマンドを実行することなく、読み出した前記通常コマンドを前記第２記憶領域に書き込み、
読み出した前記コマンドが前記通常コマンドよりも優先して実行することが求められる即時実行コマンドであると判別した場合には、当該読み出しに応じて前記即時実行コマンドを実行し、また、
前記即時実行コマンドを実行しない間、前記第２記憶領域に書き込まれた前記通常コマンドを順次読み出して実行することを特徴とする記録装置。
【請求項２】
前記制御部は、
前記第２記憶領域の空き領域が所定値以下となったと判別した場合、
前記制御装置に、前記第２記憶領域の空き領域が所定値以下となった旨の通知を送信し、
前記第１記憶領域から読み出した前記コマンドが前記通常コマンドであると判別した場合には、当該通常コマンドの前記第２記憶領域への書き込みを行わないことを特徴とする請求項１に記載の記録装置。
【請求項３】
制御装置に接続可能な記録装置であって、
第１記憶領域と、
この第１記憶領域と異なる第２記憶領域と、
前記第１記憶領域と前記第２記憶領域とを制御する制御部と、を備え、
前記制御部は、
前記制御装置からコマンドを受信すると、前記第１記憶領域の第１ライトポインターが示す位置に書き込み、前記第１ライトポインターを、次のコマンドを書き込む位置に移動し、
前記第１記憶領域の前記第１ライトポインターに追従する第１リードポインターが示す位置に書き込まれた前記コマンドを読み出し、読み出した前記コマンドが通常コマンドであると判別した場合には、当該読み出しに応じて前記通常コマンドを実行することなく、読み出した前記通常コマンドを前記第２記憶領域の第２ライトポインターが示す位置に書き込み、前記第２ライトポインターを、次の前記通常コマンドを書き込む位置に移動し、
読み出した前記コマンドが前記通常コマンドよりも優先して実行することが求められる即時実行コマンドであると判別した場合には、当該読み出しに応じて前記即時実行コマンドを実行して、前記第１リードポインターを、次のコマンドが書き込まれた位置に移動し、また、
前記即時実行コマンドを実行しない間、前記第２記憶領域の前記第２ライトポインターに追従する第２リードポインターが示す位置に書き込まれた前記通常コマンドを読み出して実行し、前記第２リードポインターを、次の前記通常コマンドが書き込まれた位置に移動することを特徴とする記録装置。
【請求項４】
前記制御部は、
前記第２記憶領域の空き領域が所定値以下となったと判別した場合、
前記制御装置に、前記第２記憶領域の空き領域が所定値以下となった旨の通知を送信し、
前記第１記憶領域の前記第１リードポインターが示す位置から読み出した前記コマンドが、前記通常コマンドであると判別した場合には、当該通常コマンドを前記第２記憶領域へ書き込みを行わず、前記第１リードポインターを、次の前記コマンドが書き込まれた位置に移動することを特徴とする請求項３に記載の記録装置。
【請求項５】
制御装置に接続可能であり、第１記憶領域と、この第１記憶領域と異なる第２記憶領域と、を備える記録装置の制御方法であって、
前記制御装置からコマンドを受信すると前記第１記憶領域に書き込み、前記第１記憶領域に書き込んだ前記コマンドを読み出し、読み出した前記コマンドが通常コマンドであると判別した場合には、当該読み出しに応じて前記通常コマンドを実行することなく、読み出した前記通常コマンドを前記第２記憶領域に書き込み、
読み出した前記コマンドが前記通常コマンドよりも優先して実行することが求められる即時実行コマンドであると判別した場合には、当該読み出しに応じて前記即時実行コマンドを実行し、また、
前記即時実行コマンドを実行しない間、前記第２記憶領域に書き込まれた前記通常コマンドを順次読み出して実行することを特徴とする記録装置の制御方法。
【請求項６】
前記第２記憶領域の空き領域が所定値以下となった場合、
前記制御装置に、前記第２記憶領域の空き領域が所定値以下となった旨の通知を送信し、
前記第１記憶領域から読み出した前記コマンドが前記通常コマンドである場合には、当該通常コマンドの前記第２記憶領域への書き込みを行わないことを特徴とする請求項５に記載の記録装置の制御方法。
【請求項７】
制御装置に接続可能であり、第１記憶領域と、この第１記憶領域と異なる第２記憶領域と、を備える記録装置の各部を制御する制御部により実行されるプログラムであって、
前記制御部に、
前記制御装置からコマンドを受信すると前記第１記憶領域に書き込ませ、前記第１記憶領域に書き込ませた前記コマンドを読み出させ、読み出させた前記コマンドが通常コマンドである場合には、当該読み出しに応じて前記通常コマンドを実行させることなく、読み出させた前記通常コマンドを前記第２記憶領域に書き込ませ、
読み出させた前記コマンドが前記通常コマンドよりも優先して実行することが求められる即時実行コマンドである場合には、当該読み出しに応じて前記即時実行コマンドを実行させ、また、
前記即時実行コマンドを実行しない間、前記第２記憶領域に書き込まれた前記通常コマンドを順次読み出して実行させることを特徴とするプログラム。
【請求項８】
前記制御部に、
前記第２記憶領域の空き領域が所定値以下となった場合、
前記制御装置に、前記第２記憶領域の空き領域が所定値以下となった旨の通知を送信し、
前記第１記憶領域から読み出した前記コマンドが前記通常コマンドである場合には、当該通常コマンドの前記第２記憶領域への書き込みを行わないように実行させることを特徴とする請求項７に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置に接続可能な記録装置、当該記録装置の制御方法、及び、プログラムに関する。
【背景技術】
【０００２】
従来、制御装置（ホストコンピューター）から受信したコマンドに従って動作する記録装置（画像形成装置）が知られている（例えば、特許文献１参照）。
この種の記録装置では、制御装置から受信したコマンドをバッファー（記憶領域）に一時的に書き込み、バッファーに書き込まれたコマンドを順次実行していくものがある。
また、この種の記録装置が制御装置から受信するコマンドには、画像などを記録するための通常のコマンドとは別に、記録装置のステータス応答指示やリセット指示のコマンドなど、即座に実行することを要求する即時実行コマンド（リアルタイムコマンド）がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−２６０４３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述した記録装置では、バッファーに格納された各コマンドについて、即時実行コマンドを即時実行するという要求を満たしつつ、未実行の通常コマンドを管理する必要があるため、バッファーにおけるコマンドの管理に係る処理が複雑化する傾向にある。
本発明は、上述した事情に鑑みてなされたものであり、即時実行コマンドを即時実行するという要求を満たしつつ、バッファーにおけるコマンドの管理を容易化することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明は、制御装置に接続可能な記録装置であって、第１記憶領域と、この第１記憶領域と異なる第２記憶領域と、前記第１記憶領域と前記第２記憶領域とを制御する制御部と、を備え、前記制御部は、前記制御装置からコマンドを受信すると、前記第１記憶領域に書き込み、前記第１記憶領域に書き込んだ前記コマンドを読み出し、読み出した前記コマンドが通常コマンドであると判別した場合には、当該読み出しに応じて前記通常コマンドを実行することなく、読み出した前記通常コマンドを前記第２記憶領域に書き込み、読み出した前記コマンドが前記通常コマンドよりも優先して実行することが求められる即時実行コマンドであると判別した場合には、当該読み出しに応じて前記即時実行コマンドを実行し、また、前記即時実行コマンドを実行しない間、前記第２記憶領域に書き込まれた前記通常コマンドを順次読み出して実行することを特徴とする。
この構成によれば、第１記憶領域に書き込まれたコマンドのうち、即時実行コマンドは、読み出した後、通常コマンドに優先して即時実行されることとなるため、即時実行コマンドを即時（リアルタイム）に実行するという要求を満たすことができる。さらに、第２記憶領域では、即時実行コマンドを含まない通常コマンドが、受信した順に書き込まれることとなり、即時実行コマンドを実行しない間、第２記憶領域に書き込まれたコマンドを順次読み出して実行する、という即時実行コマンドの存在を考慮しない単純な作業を継続して実行すれば、通常コマンドを順次実行できるため、通常コマンドに即時実行コマンドが挿入された状態で受信したとしても、記憶領域におけるコマンドの管理や実行が容易化する。
【０００６】
また、上記発明の記録装置であって、本発明は、前記制御部は、前記第２記憶領域の空き領域が所定値以下となったと判別した場合、前記制御装置に、前記第２記憶領域の空き領域が所定値以下となった旨の通知を送信し、前記第１記憶領域から読み出した前記コマンドが前記通常コマンドであると判別した場合には、当該通常コマンドの前記第２記憶領域への書き込みを行わないことを特徴とする。
この構成によれば、即時実行コマンドを即時実行するという要求を満たした上で、いわゆるバッファーフルなど、第２記憶領域の空き領域が所定値以下となった後に、その旨を制御装置に通知したにもかかわらず、制御装置からコマンドが送られてきた場合、即時実行コマンドは実行する一方で、通常コマンドのみを読み飛ばすことが可能となる。ここで、所定値とは、その旨を制御装置に通知するタイミングと、制御装置がコマンドを送るタイミングがほぼ同時となる場合もあるので、少なくとも即時実行コマンド１つ分を読み込むことを可能とし、コマンド１つ分の空き領域に至った値とすることができる。空き領域の大きさを即時実行コマンドが複数送られてくることを考慮し、即時実行コマンド１つ分以上、例えば２つ分としてもよい。
【０００７】
また、上記目的を達成するために、本発明は、制御装置に接続可能な記録装置であって、第１記憶領域と、この第１記憶領域と異なる第２記憶領域と、前記第１記憶領域と前記第２記憶領域とを制御する制御部と、を備え、前記制御部は、前記制御装置からコマンドを受信すると、前記第１記憶領域の第１ライトポインターが示す位置に書き込み、前記第１ライトポインターを、次のコマンドを書き込む位置に移動し、前記第１記憶領域の前記第１ライトポインターに追従する第１リードポインターが示す位置に書き込まれた前記コマンドを読み出し、読み出した前記コマンドが通常コマンドであると判別した場合には、当該読み出しに応じて前記通常コマンドを実行することなく、読み出した前記通常コマンドを前記第２記憶領域の第２ライトポインターが示す位置に書き込み、前記第２ライトポインターを、次の前記通常コマンドを書き込む位置に移動し、読み出した前記コマンドが前記通常コマンドよりも優先して実行することが求められる即時実行コマンドであると判別した場合には、当該読み出しに応じて前記即時実行コマンドを実行して、前記第１リードポインターを、次のコマンドが書き込まれた位置に移動し、また、前記即時実行コマンドを実行しない間、前記第２記憶領域の前記第２ライトポインターに追従する第２リードポインターが示す位置に書き込まれた前記通常コマンドを読み出して実行し、前記第２リードポインターを、次の前記通常コマンドが書き込まれた位置に移動することを特徴とする。
ここで、上記構成では、記憶領域におけるコマンドを書き込む領域、及び、コマンドを読み出す領域をポインターによって管理する。この場合、ポインターの管理に係る処理が容易化できれば、記憶領域におけるコマンドの管理に係る処理の容易化へとつながり、また、ポインターの管理に係る処理を実現するプログラム等の簡易化へつながり、開発容易性の向上、製造コストの削減を図ることが可能となる。
以上を踏まえ、上記構成によれば、第１ライトポインターについて、制御部は、他のポインターとの関係を考慮することなく、受信したコマンドの書き込みに応じて、その位置を移動させればよいため、管理が容易である。また、第１リードポインターについて、制御部は、当該ポインターを、第１ライトポインターに追従させた状態を維持した上で、第１記憶領域に書き込まれたコマンドの読み出しに応じて、その位置を移動させればよいため、管理が容易である。また、第２ライトポインターについて、制御部は、他のポインターとの関係を考慮することなく、第２記憶領域に対する書き込みに応じて、その位置を移動させればよいため、管理が容易である。また、第２リードポインターについて、制御部は、当該ポインターを、第２ライトポインターに追従させた状態を維持した上で、第２記憶領域に書き込まれたコマンドの読み出しに応じて、その位置を移動させればよいため、管理が容易である。これらの管理の容易化は、即時実行コマンドを即時実行するという要求を満たした上で、実現されるものである。
【０００８】
また、上記発明の制御装置であって、本発明は、前記制御部は、前記第２記憶領域の空き領域が所定値以下となったと判別した場合、前記制御装置に、前記第２記憶領域の空き領域が所定値以下となった旨の通知を送信し、前記第１記憶領域の前記第１リードポインターが示す位置から読み出した前記コマンドが、前記通常コマンドであると判別した場合には、当該通常コマンドを前記第２記憶領域へ書き込みを行わず、前記第１リードポインターを、次の前記コマンドが書き込まれた位置に移動することを特徴とする。
この構成によれば、即時実行コマンドを即時実行するという要求を満たした上で、第２記憶領域の空き領域が所定値以下となった後に、その旨を制御装置に通知したにもかかわらず、制御装置からコマンドが送られてきた場合、即時実行コマンドは実行する一方で、通常コマンドのみを読み飛ばすことが可能となる。
【０００９】
また、上記目的を達成するために、本発明は、制御装置に接続可能であり、第１記憶領域と、この第１記憶領域と異なる第２記憶領域と、を備える記録装置の制御方法であって、前記制御装置からコマンドを受信すると前記第１記憶領域に書き込み、前記第１記憶領域に書き込んだ前記コマンドを読み出し、読み出した前記コマンドが通常コマンドであると判別した場合には、当該読み出しに応じて前記通常コマンドを実行することなく、読み出した前記通常コマンドを前記第２記憶領域に書き込み、読み出した前記コマンドが前記通常コマンドよりも優先して実行することが求められる即時実行コマンドであると判別した場合には、当該読み出しに応じて前記即時実行コマンドを実行し、また、前記即時実行コマンドを実行しない間、前記第２記憶領域に書き込まれた前記通常コマンドを順次読み出して実行することを特徴とする。
この構成によれば、第１記憶領域に書き込まれたコマンドのうち、即時実行コマンドは、読み出した後、通常コマンドに優先して即時実行されることとなるため、即時実行コマンドを即時（リアルタイム）に実行するという要求を満たすことができる。さらに、第２記憶領域では、即時実行コマンドを含まない通常コマンドが、受信した順に書き込まれることとなり、即時実行コマンドを実行しない間、第２記憶領域に書き込まれたコマンドを順次読み出して実行する、という即時実行コマンドの存在を考慮しない単純な作業を継続して実行すれば、通常コマンドを順次実行できるため、通常コマンドに即時実行コマンドが挿入された状態で受信したとしても、記憶領域におけるコマンドの管理や実行が容易化する。
本発明の記録装置の制御方法は、前記第２記憶領域の空き領域が所定値以下となった場合、前記制御装置に、前記第２記憶領域の空き領域が所定値以下となった旨の通知を送信し、前記第１記憶領域から読み出した前記コマンドが前記通常コマンドである場合には、当該通常コマンドの前記第２記憶領域への書き込みを行わないことを特徴とする。
【００１０】
また、上記目的を達成するために、本発明は、制御装置に接続可能であり、第１記憶領域と、この第１記憶領域と異なる第２記憶領域と、を備える記録装置の各部を制御する制御部により実行されるプログラムであって、前記制御部に、前記制御装置からコマンドを受信すると前記第１記憶領域に書き込ませ、前記第１記憶領域に書き込ませた前記コマンドを読み出させ、読み出させた前記コマンドが通常コマンドである場合には、当該読み出しに応じて前記通常コマンドを実行させることなく、読み出させた前記通常コマンドを前記第２記憶領域に書き込ませ、読み出させた前記コマンドが前記通常コマンドよりも優先して実行することが求められる即時実行コマンドである場合には、当該読み出しに応じて前記即時実行コマンドを実行させ、また、前記即時実行コマンドを実行しない間、前記第２記憶領域に書き込まれた前記通常コマンドを順次読み出して実行させることを特徴とする。
このプログラムを実行すれば、第１記憶領域に書き込まれたコマンドのうち、即時実行コマンドは、読み出した後、通常コマンドに優先して即時実行されることとなるため、即時実行コマンドを即時（リアルタイム）に実行するという要求を満たすことができる。さらに、第２記憶領域では、即時実行コマンドを含まない通常コマンドが、受信した順に書き込まれることとなり、即時実行コマンドを実行しない間、第２記憶領域に書き込まれたコマンドを順次読み出して実行する、という即時実行コマンドの存在を考慮しない単純な作業を継続して実行すれば、通常コマンドを順次実行できるため、通常コマンドに即時実行コマンドが挿入された状態で受信したとしても、記憶領域におけるコマンドの管理や実行が容易化する。
本発明のプログラムは、前記制御部に、前記第２記憶領域の空き領域が所定値以下となった場合、前記制御装置に、前記第２記憶領域の空き領域が所定値以下となった旨の通知を送信し、前記第１記憶領域から読み出した前記コマンドが前記通常コマンドである場合には、当該通常コマンドの前記第２記憶領域への書き込みを行わないように実行させることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、即時実行コマンドを即時実行するという要求を満たしつつ、バッファーにおけるコマンドの管理を容易化することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】ＰＯＳ端末の構成を示す図である。
【図２】プリンターの機能的構成を示すブロック図である。
【図３】受信バッファーを示す図である。
【図４】受信バッファーを示す図である。
【図５】プリンターの動作を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、図面を参照して本発明の実施形態について説明する。
図１は、本発明を適用した実施形態に係るＰＯＳ端末１の概略構成を示す図である。
ＰＯＳ端末１は、例えば小売店等の店頭に設置され、売上げ精算を行うレジスターであり、販売時点管理システム（ＰＯＳシステム）を構成する。
ＰＯＳ端末１は、売上登録処理及び精算処理を行うホストコンピューター４（制御装置）に、レシート１０１を発行するプリンター２（記録装置）を接続して構成される。ホストコンピューター４は、売上登録した情報を収集するＰＯＳサーバーに、通信回線を介して接続されている。ホストコンピューター４は、売上登録処理及び精算処理の処理内容を表示するディスプレー４１、売上登録処理時に商品に付されたバーコードを読み取るバーコードスキャナー４２、売上登録キー等の各種キーを備えたキー入力部４３、精算用の現金を収容するキャッシュドロワー４４等を備えている。キャッシュドロワー４４は、後述するようにプリンター２に接続され、プリンター２から入力されるドロワーオープン信号を受信したときに開く構成となっている。
【００１４】
プリンター２は、本体１１に記録媒体としての感熱ロール紙を収容し、記録ヘッドによりロール紙に画像を印刷（記録）して、レシート１０１を出力する。プリンター２は、ロール紙を搬送するローラー形状のプラテン（図示略）と、このプラテンに対向配置された記録ヘッドとを備え、排紙口１４の近傍には、ロール紙を切断するカッターユニット（図示略）が配置されている。本実施形態のプリンター２が備える記録ヘッドは、例えば、発熱体（図示略）をロール紙の幅方向に、一列または複数列で並べて構成されるラインサーマルヘッドである。各々の発熱体には後述するプリントエンジン２０により個別に通電され、ロール紙の印刷面（記録面）に密着する発熱体によってロール紙に熱エネルギーを与えることによって、ロール紙を発色させる。
記録ヘッドによって印刷されたロール紙は、本体１１の上面に形成された排紙口１４から外に向けて搬送され、カッターユニットにより切断され、レシート１０１として出力される。レシート１０１には、店名や売り上げた商品名、商品数量、金額、合計金額等の文字、ロゴの画像等が印刷される。
【００１５】
また、図１に示すように、プリンター２の本体１１には開閉可能なカバー１２が設けられる。本体１１には、カバー１２を開くためのレバー１３が設けられ、カバー１２を開くと、ロール紙を収容する空間が露出し、ロール紙の補充や交換が可能になる。また、本体１１には、プリンター２の電源をオン／オフさせる電源スイッチ１６、ロール紙の紙送り動作を指示し、また制御時の所定の条件下で動作モードの切り替え等を指示する操作を行うための紙送りスイッチ１７、及び、プリンター２の動作状態等を表示するためのＬＥＤ表示部１８が設けられている。
プリンター２は、プラテンローラーを回転させてロール紙を搬送する搬送モーター、カッターユニットを駆動してロール紙を切断するカッター駆動モーター、記録ヘッドを駆動させて、ロール紙に対して文字や画像を記録する。
【００１６】
図２は、プリンター２の機能的構成を示すブロック図である。
プリンター２は、実際の印刷を行うプリントエンジン２０と、プリンター２の全体を制御する制御部２１と、制御部２１が実行する基本制御プログラムを記憶したＲＯＭ２２と、制御部２１が実行する制御プログラム２４Ａ及びコマンド２４Ｂ等を記憶した不揮発性のメモリーであるＥＥＰＲＯＭ２４と、制御部２１の制御の下、ホストコンピューター４や、キャッシュドロワー４４との間で各種データの送受信を行うインターフェイス部２５と、紙送りスイッチ１７（図１）における操作を検出する入力部２７と、ＬＥＤ表示部１８を制御して各種表示を行わせる表示部２８と、プリンター２の各部の動作状態を監視するステータス監視部３０と、ホストコンピューター４から受信した受信データを一時的に循環的に格納するリングバッファーであるＲＡＭからなる受信バッファー３１（第１バッファー３１１（第１記憶領域）、第２バッファー３１２（第２記憶領域））と、を備えている。リングバッファーとは、アドレスの先端から順次データを記憶し、後端に至ると再び先端にアドレスを戻して記憶していくものであり、メモリーを効率的に使用できる。
【００１７】
プリントエンジン２０は、制御部２１の制御に従って、ホストコンピューター４から送信された印刷データに基づき、記録媒体としてのロール紙に印刷する文字や画像を作成し、用紙端センサーや用紙残量センサー等の各種センサーの検出値を監視しながら、プリンター２が備える記録ヘッド、カッター駆動モーター及び搬送モーターを動作させ、ロール紙への印刷を実行する。
このように、プリンター２は、紙や合成樹脂製の記録媒体（ロール紙、カット紙、複写紙等）の印刷面にインクやトナーを付着させ、或いは記録媒体の印刷面に熱を与える記録ヘッド、記録媒体に対して記録ヘッドを移動させる記録ヘッド駆動機構、記録媒体を搬送する搬送機構等を備え、これら記録ヘッド及び各種機構がプリントエンジン２０によって制御される。
また、プリントエンジン２０は、制御部２１の制御に従って、入力部２７によって紙送りスイッチ１７の操作を検出した場合は搬送モーターを動作させてロール紙を所定量搬送し、プリンター２の動作状態等に合わせて表示部２８を介してＬＥＤ表示部１８の各ＬＥＤの点灯状態を変化させる。
【００１８】
制御部２１は、ＣＰＵや、実行するプログラムやデータ等を一時的に記憶するワークエリアとしてのメモリーを内蔵し、マイクロコンピューターとして機能し、ＲＯＭ２２に記憶された基本制御プログラムや、ＥＥＰＲＯＭ２４に記憶された制御プログラム２４Ａを実行する。
ＲＯＭ２２は、制御部２１によってプリンター２の各部を初期化するとともに、これらの各部を制御するための基本制御プログラム、及び、この基本制御プログラムに係るデータ等を不揮発的に記憶する。
ＥＥＰＲＯＭ２４は、書き換え可能な不揮発性の記憶装置であり、制御プログラム２４Ａ、及びコマンド２４Ｂを含む各種のプログラムやデータを記憶する。
インターフェイス部２５は、ＵＳＢやＲＳ２３２Ｃインターフェイス等の各種インターフェイスを備え、制御部２１の制御の下、ホストコンピューター４との間で所定の規格に準拠した、有線または無線通信を行う。
【００１９】
プリンター２が備えるステータス監視部３０には、外部からプリンター２に供給される電源電圧を検出、カバー１２の開閉状態、ロール紙の有無等を検出する各検出部が接続され、これらの検出部における検出状態に基づき、たとえば、プリンター２における電源電圧の異常、用紙補充やインクカートリッジの交換時に開閉されるプリンター２のカバー１２が開いたこと、プリンター２の用紙切れ、紙送りスイッチ１７の操作等のプリンター２における事象（イベント）の発生を示す検出信号を、制御部２１に割り込み信号として出力する。
【００２０】
ホストコンピューター４には、プリンター２の制御用のプログラムであるプリンタードライバーが記憶されている。そして、ホストコンピューター４は、プリンター２を制御して、レシート１０１の発行に係る各種処理を実行させる場合、プリンタードライバーを読み出して実行することにより、プリンター２を制御するためのコマンドを生成し、生成したコマンドをプリンター２に、順次、送信する。
コマンドを受信したプリンター２の制御部２１は、詳細は後述するが、基本的には、受信したコマンドを、受信した順に、受信バッファー３１に一時的に書き込み、受信バッファー３１に書き込まれたコマンドを、順次実行し、これにより、レシート１０１の発行に係る各種処理を、順次、実行する。
【００２１】
ここで、プリンター２の動作モードには、ホストコンピューター４との通信および印刷等を実行可能なオンラインモード（通常モード）と、必要最小限の動作しか行わないオフラインモード（バッファーフルモード）とがある。
オフラインモードは、印字動作の続行が不適当な場合には、印字ヘッドを含む印字メカニズムを停止し、且つホストコンピューター４との間でのコマンドのやり取りを制限し、印字装置および通信データの保全及び使用者の安全を確保する。
オフラインモードへの移行は、カバー１２が開いたり、用紙が無くなったりする等の所定のオフライン要因が発生したことのほか、後述するように第２バッファー３１２がバッファーフルとなったことをトリガーとして実行される。なお、オフラインモードへ移行した後、例えば、ステータス監視部３０がオフライン要因が解消したことを検出した場合に、制御部２１は、動作モードをオンラインモードに移行する。
オフラインモードに移行した場合、制御部２１は、ホストコンピューター４に対してオフラインモードに移行していることを通知する。ホストコンピューター４は、プリンター２がオフラインモードへ移行している間、プリンター２に対し、通常コマンドの出力を一時的に停止し、必要に応じて、通常コマンドよりも緊急性の高い所定の処理について即時実行することを求める即時実行コマンドを出力する。
本実施形態に係るプリンター２は、後述するように、第２バッファー３１２がバッファーフルとなったことに起因して、動作モードがオフラインモード（本実施形態では、この場合のオフラインモードを、バッファーフルモードという）へ移行した場合であっても、即時実行コマンドを受信した場合には、当該即時実行コマンドについては、即時実行する。
以下、本実施形態に係るプリンター２による、ホストコンピューター４から受信したコマンドの管理に係る処理について詳述する。
【００２２】
図３（Ａ）は、第１記憶領域たる第１バッファー３１１の構造を模式的に示す図であり、図３（Ｂ）は、第２記憶領域たる第２バッファー３１２の構造を模式的に示す図である。
本字紙形態に係るプリンター２は、受信バッファー３１として、それぞれ異なる領域に形成された第１バッファー３１１、及び第２バッファー３１２の２つのバッファーを備えている。
なお、図３では、第１バッファー３１１、及び、第２バッファー３１２の構造を、発明の説明の便宜を考慮して、発明の説明に適した構造としている。
図３に示すように、本実施形態に係る第１バッファー３１１の容量は、４２２４バイトである。そして、第１バッファー３１１の記憶領域は、６４ビットを１ワードとして、ワードに対応する領域毎に領域が区分されると共に、区分された領域ごとにアドレスが割り当てられている。以下、ワード毎に区分された領域のことを「ワード領域」称するものとする。
第２バッファー３１２の構造は、第１バッファー３１１と同様であるため、その説明を省略する。
これらバッファーは、リングバッファーであり、データの書き込みは、ワード領域単位で、循環的に行われる。
【００２３】
次いで、上述した構造の第１バッファー３１１、及び、第２バッファー３１２におけるコマンドの管理に係る処理について説明する。
なお、以下の説明では、説明の簡易化、及び、発明の明確化のため、１つのコマンドは、６４ビットからなり、１つのワード領域には、１つのコマンドが書き込まれるものとし、さらに、ホストコンピューター４からプリンター２に対して、通常コマンド、及び、即時実行コマンドのいずれかのコマンドが送信され、他のデータ類は送信されないものとする。
また、以下の説明において、制御部２１、第１ライトポインター管理部５０、第１リードポインター管理部５１、第２ライトポインター管理部５２、及び、第２リードポインター管理部５３の機能は、ＣＰＵがプログラムを実行する等、ハードウェアとソフトウェアとの協働により実現される。
【００２４】
制御部２１は、ホストコンピューター４からコマンドを受信すると、第１ライトポインターＷ１が示すワード領域に、受信したコマンドを、順次、書き込む。
第１ライトポインターＷ１とは、第１バッファー３１１において、コマンドを書き込むべきワード領域を示すポインターであり、制御部２１が備える第１ライトポインター管理部５０によって管理される。
ポインターとは、ワード領域に割り当てられた１のアドレスを保持することにより、当該１のアドレスに対応するワード領域を特定するものである。ポインターは、例えば、ポインターを管理するためのプログラム（例えば、ファームウェアに含まれるプログラムのうち、第１ライトポインター管理部５０の機能を実現するプログラム）上に定義された変数であってもよく、また、ＲＡＭ等の所定の記憶領域に記憶されたデータであってもよい。
【００２５】
第１ライトポインター管理部５０の動作について詳述すると、制御部２１が、第１ライトポインターＷ１が示すワード領域に、受信したコマンドを書き込んだとする。この場合、第１ライトポインター管理部５０は、第１ライトポインターＷ１が示すワード領域を、コマンドが書き込まれたワード領域の、次のワード領域とする。具体的には、第１ライトポインター管理部５０は、第１ライトポインターＷ１が保持するワード領域のアドレスを、コマンドが書き込まれたワード領域の、次のワード領域のアドレスとする。
このように、第１ライトポインター管理部５０が、制御部２１により第１ライトポインターＷ１が示す１のワード領域へのコマンドの書き込みが終了した後、第１ライトポインターＷ１が示すワード領域を、当該１のワード領域の次のワード領域とすることにより、ホストコンピューター４から新たにコマンドを受信した場合、制御部２１は、当該新たに受信したコマンドを、直近でコマンドの書き込みが行われたワード領域の次のワード領域に書き込むこととなり、第１バッファー３１１に、受信した順に、順次、コマンドが書き込まれることとなる。
【００２６】
図４は、受信バッファー３１におけるコマンドの管理に係る処理の説明に利用するため、第１バッファー３１１、及び、第２バッファー３１２を模式的に示す図である。
図４では、第１バッファー３１１における、第１ライトポインターＷ１を示す図形の位置によって、第１ライトポインターＷ１が示すワード領域を表現している。
図４を用いて第１ライトポインター管理部５０の動作を説明すると、第１ライトポインターＷ１がワード領域ＷＡ１を示している場合（位置ＰＡ１）において、通常コマンドＴ１を受信した場合、制御部２１は、ワード領域ＷＡ１に、通常コマンドＴ１を書き込む。すると、第１ライトポインター管理部５０は、第１ライトポインターＷ１が示すワード領域を、ワード領域ＷＡ２とする（位置ＰＡ２）。
ここで、上述したように、ホストコンピューター４から受信されるコマンドには、通常コマンドのほか、即時実行コマンドが存在するが、本実施形態では、コマンドの種類にかかわらず、受信したコマンドは、一旦、第１バッファー３１１に書き込まれる。
なお、以下の説明において、ポインターが示すワード領域を、現時点で示しているワード領域の次のワード領域へと変更することを、適宜、「ポインターの位置を次のワード領域へ移動する」と表現するものとする。
【００２７】
されに、制御部２１は、第１バッファー３１１に書き込まれたコマンド対して、以下の処理を実行する。
すなわち、制御部２１は、第１リードポインターＲ１が示すワード領域に書き込まれたコマンドを読み出す。第１リードポインターＲ１とは、第１バッファー３１１において、コマンドを読み出すべきワード領域を示すポインターであり、第１リードポインター管理部５１により管理される。第１リードポインターＲ１は、第１バッファー３１１に既に書き込まれたコマンドについて、コマンドを読み出すべき領域を示すポインターであるため、第１ライトポインターＷ１に追従して移動する。
次いで、制御部２１は、読み出したコマンドを解析し、当該コマンドが、通常コマンドであるか、即時実行コマンドであるかを判別する。なお、本実施形態では、各コマンドには、各コマンドが通常コマンドであるか、即時実行コマンドであるかを示すデータが含まれており、制御部２１は、当該データに基づいて、読み出したコマンドの種類を判別する。なお、各コマンドに、各コマンドが通常コマンドであるか、即時実行コマンドであるかを示すフラグを設け、このフラグの状態により、制御部２１は、コマンドの種類を判別するようにしてもよいことは勿論である。
そして、読み出したコマンドが即時実行コマンドである場合、制御部２１は、当該即時実行コマンドを、直ちに、実行する。すなわち、通常コマンドに優先して当該即時実行コマンドを事項する。これにより、即時実行コマンドは、受信に応じて即時実行されることとなる。次いで、第１リードポインター管理部５１は、第１リードポインターＲ１の位置を次のワード領域へ移動する。ここで、「即時実行コマンドを、直ちに（即時、又は、リアルタイムで。）、実行する」とは、通常コマンドに優先して、即時実行コマンドを実行することを意味している。上述したように、即時実行コマンドは、通常コマンドと比して緊急性が高く、即時実行が求められるコマンドであるため、通常コマンドよりも優先的に即時実行コマンドを実行することにより、即時実行コマンドの即時実効性を担保する必要があるからである。
【００２８】
一方、読み出したコマンドが通常コマンドである場合、制御部２１は、当該通常コマンドを実行することなく、第２バッファー３１２において、第２ライトポインターＷ２が示すワード領域に、当該通常コマンドを書き込む（コピーする）。第２ライトポインターＷ２とは、第２バッファー３１２において、コマンドを書き込むべきワード領域を示すポインターであり、第２ライトポインター管理部５２により管理される。次いで、第１リードポインター管理部５１は、第１リードポインターＲ１の位置を次のワード領域へ移動し、かつ、第２ライトポインター管理部５２は、第２ライトポインターＷ２の位置を次のワード領域へ移動する。
つまり、第１バッファー３１１から読み出したコマンドが通常コマンドである場合、制御部２１は、当該通常コマンドを実行することなく、読み飛ばす。
【００２９】
図４を用いて具体的に説明すると、通常コマンドＴ１→通常コマンドＴ２→即時実行コマンドＲＴ１→通常コマンドＴ３の順に、ホストコンピューター４からコマンドを受信したとする。
この場合、制御部２１により各コマンドが第１バッファー３１１に順次書き込まれ、最後のコマンドである通常コマンドＴ４を受信した時点では、第１ライトポインターＷ１は、ワード領域ＷＡ５を示した状態（位置ＰＡ５）となる。
各コマンドの第１バッファー３１１への書き込みに応じて、制御部２１は、第１バッファー３１１に書き込まれたコマンドを順次読み出していき、各コマンドについて、コマンドの種類に応じた処理を実行する。
具体的には、図４を参照し、制御部２１は、第１バッファー３１１において、まず、位置ＰＡ１の第１リードポインターＲ１が示すワード領域ＷＡ１に書き込まれた通常コマンドＴ１を読み出して解析し、当該通常コマンドＴ１が通常コマンドであると判別する。次いで、制御部２１は、通常コマンドＴ１を実行することなく、データとしての通常コマンドＴ１をそのまま、第２バッファー３１２において、位置ＰＢ１に位置する第２ライトポインターＷ２が示すワード領域ＷＢ１に書き込む（コピーする）。
次いで、第１リードポインター管理部５１は、第１リードポインターＲ１を、位置ＰＡ２へ移動し、かつ、第２ライトポインター管理部５２は、第２ライトポインターＷ２を、位置ＰＢ２へ移動する。
このように、制御部２１は、第１バッファー３１１から読み出したコマンドが通常コマンドである場合は、当該通常コマンドを実行することなく、当該通常コマンドを、第２バッファー３１２に書き込む（コピーする）。このため、読み出したコマンドが通常コマンドである場合は、読み出したコマンドを実行する場合と比較して、読み出しを開始してから、次のコマンドの読み出しを開始するまでに要する時間（第１リードポインター管理部５１、及び、第２ライトポインター管理部５２の処理に要する時間を含む）が、非常に短時間となる。例えば、通常コマンドＴ１が、搬送モーターの駆動を指示するコマンドであったとする。この場合、本実施形態では、制御部２１は、通常コマンドＴ１を実行することなく、第２バッファー３１２に書き込むため、通常コマンドＴ１を読み出して実行する（搬送モーターを実際に駆動する）場合と比較して、次のコマンドの読み出しの開始に至るまでの時間が、非常に短い。
【００３０】
次いで制御部２１は、第１バッファー３１１において、第１リードポインターＲ１が示すワード領域ＷＡ２に書き込まれた通常コマンドＴ２を読み出し、通常コマンドであるため、当該通常コマンドＴ２を実行することなく、当該通常コマンドＴ２を、第２ライトポインターＷ２が示すワード領域ＷＢ２に書き込む。当該書き込み後、第１リードポインター管理部５１は、第１リードポインターＲ１を、位置ＰＡ３へ移動し、かつ、第２ライトポインター管理部５２は、第２ライトポインターＷ２を、位置ＰＢ３へ移動する。
【００３１】
次いで、制御部２１は、第１バッファー３１１において、位置ＰＡ３の第１リードポインターＲ１が示すワード領域ＷＡ３に書き込まれた即時実行コマンドＲＴ１を読み出して解析し、当該即時実行コマンドＲＴ１が即時実行コマンドであると判別する。次いで、制御部２１は、即時実行コマンドＲＴ１を、直ちに、実行する。
上述したように、ワード領域ＷＡ１、及び、ワード領域ＷＡ２には、通常コマンドが書き込まれており、これら通常コマンドは実行されることなく、読み飛ばされるため、第１リードポインターは、位置ＰＡ１→位置ＰＡ２→位置ＰＡ３と、非常に短時間で移動することとなる。従って、制御部２１による第１バッファー３１１に書き込まれた通常コマンドＴ１の読み出しが開始された後、非常に短時間で、即時実行コマンドＲＴ１の読み出しが開始されることとなり、即時実行コマンドＲＴ１の即時実効性が担保される。
制御部２１によって即時実行コマンドＲＴ１が実行された後、第１リードポインター管理部５１は、第１リードポインターＲ１の位置を次のワード領域へ移動する。
【００３２】
次いで、制御部２１は、第１バッファー３１１において、第１リードポインターＲ１が示すワード領域ＷＡ４に書き込まれた通常コマンドＴ３を読み出し、通常コマンドであるため、当該通常コマンドＴ３を実行することなく、当該通常コマンドＴ３を、第２ライトポインターＷ２が示すワード領域ＷＢ３に書き込む。当該書き込み後、第１リードポインター管理部５１は、第１リードポインターＲ１を、位置ＰＡ５へ移動し、かつ、第２ライトポインター管理部５２は、第２ライトポインターＷ２を、位置ＰＢ４へ移動する。
【００３３】
以上のように、第２バッファー３１２には、第１バッファー３１１から読み出された際に、実行されなかった通常コマンドが、順次、書き込まれていく。そして、制御部２１は、第２バッファー３１２に書き込まれた通常コマンドを、順次、読み出して実行する。
詳述すると、制御部２１は、第２バッファー３１２において、第２リードポインターＲ２が示すワード領域に格納されたコマンドを読み出して実行する。第２リードポインターＲ２とは、第２バッファー３１２において、コマンドを読み出すべきワード領域を示すポインターであり、第２リードポインター管理部５３により管理される。第２リードポインターＲ２は、第２バッファー３１２に既に書き込まれたコマンドについて、コマンドを読み出すべき領域を示すポインターであるため、第２ライトポインターＷ２に追従して移動する。
第２リードポインター管理部５３は、制御部２１により、１のワード領域に格納されたコマンドが読み出され、実行されると、第２リードポインターＲ２が示すワード領域を、当該１のワード領域の次のワード領域へと変更する。これにより、制御部２１により、第２バッファー３１２に書き込まれた通常コマンドが順次読み出され、実行される。
図４を用いて第１ライトポインター管理部５０の動作を説明する。以下の説明では、ワード領域ＷＢ１、ＷＢ２、及び、ＷＢ３のそれぞれに、既に、通常コマンドＴ１、Ｔ２、及び、Ｔ３のそれぞれが書き込まれている状態であるものとする。
第２リードポインターＲ２がワード領域ＷＢ１を示している場合（位置ＰＢ１）、制御部２１は、ワード領域ＷＢ１から通常コマンドＴ１を読み出して実行する。制御部２１による通常コマンドＴ１の実行後、第２リードポインター管理部５３は、第２リードポインターＲ２が示すワード領域を、ワード領域ＷＢ２とする（位置ＰＢ２）。同様にして、制御部による第２リードポインターＲ２が示すワード領域からの通常コマンドの読み取り、実行と、第２リードポインター管理部５３による第２リードポインターＲ２の移動と、が交互に繰り返して行われ、通常コマンドＴ１、Ｔ２、及び、Ｔ３が制御部２１により、順次、実行される。
【００３４】
本実施形態では、以上のようにして、第１ライトポインターＷ１、及び、第１リードポインターＲ１により、第１バッファー３１１におけるコマンドの書き込み、読み取りが管理され、かつ、第２ライトポインターＷ２、及び、第２リードポインターＲ２により、第２バッファー３１２におけるコマンドの書き込み、読み取りが管理されるため、以下のようなメリットがある。
すなわち、上述したように、ホストコンピューター４から即時実行コマンドを受信した場合は、当該即時実行コマンドが直ちに実行されることとなり、即時実行コマンドを即時実行するという要求を満たすことができる。そして、即時実行コマンドを即時実行するという要求を満たした上で、各ポインターを非常に容易に管理可能である。
なぜなら、第１ライトポインターＷ１について、第１ライトポインター管理部５０は、他のポインターとの関係を考慮することなく、制御部２１によるコマンドの書き込みに応じて、その位置を移動させればよく、例えば、即時実行コマンド専用のライトポインター、及び、リードポインターを設け、当該ポインターとの関係を調整しつつ、第１ライトポインターＷ１を管理する場合と比較して、非常に管理が容易である。
また、第１リードポインターＲ１について、第１リードポインター管理部５１は、第１ライトポインターＷ１を超えない状態を維持した上で、制御部２１による第１バッファー３１１に書き込まれたコマンドの読み出しに応じて、その位置を移動させればよいため、第１ライトポインターＷ１を超えないという条件以外の条件を用いて、第１リードポインターＲ１の動きを規制する場合と比較して、非常に管理が容易である。
また、第２ライトポインターＷ２について、第２ライトポインター管理部５２は、他のポインターとの関係を考慮することなく、制御部２１による第２バッファー３１２に対する通常コマンドの書き込みに応じて、その位置を移動させればよいため、例えば、即時実行コマンド専用のライトポインター、及び、リードポインターを設け、当該ポインターとの関係を調整しつつ、第２ライトポインターＷ２を管理する場合と比較して、非常に管理が容易である。
また、第２リードポインターＲ２について、第２リードポインター管理部５３は、第２ライトポインターＷ２を超えない状態を維持した上で、制御部２１による第２バッファー３１２に書き込まれた通常コマンドの読み出しに応じて、その位置を移動させればよいため、第２ライトポインターＷ２を超えないという条件以外の条件を用いて、第２リードポインターＲ２の動きを規制する場合と比較して、非常に管理が容易である。
【００３５】
また、本実施形態では、第２バッファー３１２がバッファーフルとなった場合、以下のような動作を実行する。
ここで、第２バッファー３１２のバッファーフルとは、第２バッファー３１２の空き領域の容量が、所定の閾値ＴＨ１（例えば、１２８バイト）以下となっている状態のことである。
第２バッファー３１２の空き領域とは、第２バッファー３１２の領域のうち、未実行の通常コマンドが書き込まれた領域を除く領域のことであり、具体的には、第２ライトポインターＷ２を超え、かつ、第２リードポインターＲ２を超えていない領域のことである。
なお、第１バッファー３１１がバッファーフルとなることも理論上はあり得る。しかしながら、上述したように、本実施形態では、第１バッファー３１１のワード領域に格納された通常コマンドについては、当該通常コマンドが実行されることなく、当該通常コマンドがデータとして第２バッファー３１２に書き込まれた後、第１リードポインターＲ１の位置が次のワード領域へ移動するため、第１ライトポインターＷ１の進むペースに比して、第１リードポインターＲ１の進むペースが、極端に遅くなるといった事態が非常に発生しにくく、従って、第１バッファー３１１における空き領域の容量が、上述した所定の閾値ＴＨ１以下となる事態が非常に発生しにくい。仮に、第１バッファー３１１がバッファーフルとなった場合、何らかのエラーが発生しており、当該エラーに起因して、バッファーフルとなっている可能性が高いものと考えられる。これを踏まえ、本実施形態では、第１バッファー３１１がバッファーフルとなった場合は、エラーが発生しているものとして、処理を中断し、エラーの解消を促す構成となっている。
【００３６】
図５は、第２バッファー３１２がバッファーフルとなった場合におけるプリンター２の動作を示すフローチャートである。
まず、プリンター２の制御部２１は、第２バッファー３１２の空き領域の容量が、閾値ＴＨ１（所定値）以下となったか否かを監視する（ステップＳＡ１）。
第２バッファー３１２の空き領域の容量が、閾値ＴＨ１以下となった場合（ステップＳＡ１：ＹＥＳ）、制御部２１は、動作モードを、通常モードからバッファーフルモードへ移行し（ステップＳＡ２）、動作モードがバッファーフルモードへ移行したことを、ホストコンピューター４に通知する（ステップＳＡ３）
なお、閾値ＴＨ１は、第２バッファー３１２がバッファーフルとなったか否かを判別する基準となる値であり、具体的には、ステップＳＡ３においてバッファーフルとなった旨をホストコンピューター４に通知するタイミングと、ホストコンピューター４が何らかのコマンドを送るタイミングがほぼ同時となる場合もあるので、少なくとも即時実行コマンド１つ分を読み込むことを可能とするという観点から、コマンド１つ分の空き領域に対応する値とすることができる。空き領域の大きさを、ステップＳＡ３の通知後に即時実行コマンドが複数送られてくることを考慮し、即時実行コマンド１つ分以上、例えば２つ分とするようにしてもよい。
このバッファーフルモードは、オフラインモードの一種であり、受信データの保全、及び、バッファーフルの解消を図るべく、コマンドの実行の停止や、印刷メカニズムの一時的な停止や、プリンター２とホストコンピューター４との間でやり取りするコマンドの制限等が行われる。
ステップＳＡ３の通知により、動作モードがバッファーフルモードに移行したことを検出すると、ホストコンピューター４は、オフラインモードに準じた動作を実行する。
すなわち、ホストコンピューター４からプリンター２に対して出力されるコマンドが即時実行コマンドに制限され、ホストコンピューター４は、基本的に、即時実行コマンドのみをプリンター２に対して出力する。ここで、プリンター２がバッファーフルモードへ移行した後に、ホストコンピューター４からプリンター２へ出力された即時実行コマンド以外のコマンドについては、そのコマンドに対応する動作が実行されることについて、保証されないものと事前に定められている。
なお、ステップＳＡ３における通知のタイミングや、その他の要因により、プリンター２がバッファーフルモードへ移行した後も、ホストコンピューター４からプリンター２に対して、通常コマンドが送信されることがある。
【００３７】
次いで、制御部２１は、第１バッファー３１１から読み出したコマンドが通常コマンドである場合における当該通常コマンドの第２バッファー３１２への書き込みを制限する（ステップＳＡ４）。
詳述すると、動作モードが通常モードである場合、上述したように、制御部２１は、第１バッファー３１１に書き込まれたコマンドについて、第１リードポインターＲ１が示すワード領域に書き込まれたコマンドを読み出し、読み出したコマンドの種類を判別し、コマンドの種類が即時実行コマンドである場合は、当該即時実行コマンドを直ちに実行し、さらに、第１リードポインター管理部５１は、第１リードポインターＲ１の位置を次のワード領域へ移動する。一方、読み出したコマンドが通常コマンドである場合は、制御部２１は、当該通常コマンドを実行することなく、当該通常コマンドを第２バッファー３１２に書き込み、さらに、第１リードポインター管理部５１は、第１リードポインターＲ１の位置を次のワード領域へ移動する。
一方、動作モードがバッファーフルモードである場合は、制御部２１は、第１リードポインターＲ１が示す領域から読み出したコマンドが即時実行コマンドである場合は、通常モード時と同様に、当該即時実行コマンドを直ちに、通常コマンドに優先して実行し、さらに、第１リードポインター管理部５１は、第１リードポインターＲ１の位置を次のワード領域へ移動する。しかしながら、読み出したコマンドが通常コマンドである場合は、通常モード時と異なり、制御部２１は、当該通常コマンドを実行することなく、かつ、当該通常コマンドの第２バッファー３１２への書き込みを行わず、第１リードポインター管理部５１による第１リードポインターＲ１の位置の移動のみが行われる。
このような制限が行われることにより、即時実行コマンドを即時実行するという要求を満たした上で、バッファーフルモードに移行した後に受信した通常コマンド、つまり、その実行が保証されていない通常コマンドについてのみ、実行されないこととなり、実態に即した適切な処理を実現できる。
【００３８】
さらに、本実施形態では、動作モードが通常モードである場合と、バッファーフルモードである場合とにおいて、各ポインターの管理に係る処理が同一である。
具体的には、バッファーフルモードにおいて、第１ライトポインター管理部５０は、第１ライトポインターＷ１について、通常モード時と同様、制御部２１によるコマンドの書き込みに応じて、その位置を移動させる。
また、バッファーフルモードにおいて、第１リードポインター管理部５１は、第１リードポインターＲ１について、通常モード時と同様、制御部２１によるコマンドの読み出しに応じて、その位置を移動させる。
また、バッファーフルモードにおいて、第２ライトポインター管理部５２は、第２ライトポインターＷ２について、制御部２１による通常コマンドの書き込みに応じて、その位置を移動させる。なお、バッファーフルモードでは、制御部２１による第２バッファー３１２への通常コマンドの書き込みが制限されるため、通常モード時と同様に第２ライトポインターＷ２を管理した結果として、当該第２ライトポインターＷ２の移動が制限されることとなる。
また、バッファーフルモードにおいて、第２リードポインター管理部５３は、第２リードポインターＲ２について、制御部２１による第２バッファー３１２に書き込まれた通常コマンドの読み出し、実行に応じて、その位置を移動させる。
ここで、通常モード時と、バッファーフルモード時とで、各ポインターの管理に係る処理が異なる場合、処理の複雑化を招き、ポインターの管理に係るプログラムの条件分岐等が複雑化し、開発容易性が阻害される要因となり得るが、本実施形態では、各モード時において各ポインターの管理に係る処理が同様であるため、処理の容易化を実現できる。
【００３９】
さて、ステップＳＡ４において、第２バッファー３１２への通常コマンドの書き込みを制限した後、制御部２１は、第２バッファー３１２のバッファーフルが解消したか否かを監視する（ステップＳＡ５）。本実施形態では、第２バッファー３１２が一旦バッファーフルとなった後、第２バッファー３１２における空き領域の容量が、上述した閾値ＴＨ１に所定のマージンを加味した閾値ＴＨ２（例えば、閾値ＴＨ１が１２８バイトである場合に、２５６バイト）を超えた場合に、第２バッファー３１２のバッファーフルが解消したと判別する。
第２バッファー３１２のバッファーフルが解消した場合（ステップＳＡ５：ＹＥＳ）、制御部２１は、動作モードを通常モードへ移行し（ステップＳＡ６）、ホストコンピューター４にその旨通知する（ステップＳＡ７）。これにより、ホストコンピューター４は、オフラインモードに準じた動作を停止し、オンラインモードに準じた動作を実行する。
さらに、制御部２１は、ステップＳＡ４における第２バッファー３１２の書き込みの制限を解除する（ステップＳＡ８）。これにより、通常コマンドの読み捨てが停止され、受信した通常コマンドが、順次、第２バッファー３１２に書き込まれ、かつ、順次、実行される。
【００４０】
以上説明したように、本実施形態では、制御部２１は、ホストコンピューター４から受信したコマンドを、順次、第１バッファー３１１に書き込むと共に、第１バッファー３１１に書き込んだコマンドを、順次、読み出し、読み出したコマンドが即時実行コマンドである場合は、当該即時実行コマンドを実行する一方、読み出したコマンドが通常コマンドである場合は、当該通常コマンドを第２バッファー３１２に書き込むと共に、当該通常コマンドを実行することなく読み飛ばし、さらに、第２バッファー３１２に書き込まれた通常コマンドを、順次、読み出して実行する。
より、具体的には、制御部２１は、第１バッファー３１１において、第１ライトポインターＷ１が示す領域にホストコンピューター４から受信したコマンドを書き込み、第１ライトポインターＷ１を、次のコマンドを書き込む領域を示す位置に移動する、という動作を繰り返し実行すると共に、第１ライトポインターＷ１を追従する第１リードポインターＲ１が示す領域に書き込まれたコマンドを読み出し、読み出したコマンドが即時実行コマンドである場合は、当該即時実行コマンドを実行して、第１リードポインターＲ１を、次のコマンドが書き込まれた領域を示す位置に移動する一方、読み出したコマンドが通常コマンドである場合は、当該通常コマンドを、第２バッファー３１２において、第２ライトポインターＷ２が示す領域に書き込み、第２ライトポインターＷ２を、次の通常コマンドを書き込む領域を示す位置に移動し、さらに、第１リードポインターＲ１を、次のコマンドが書き込まれた領域を示す位置に移動する、という動作を繰り返し実行し、さらに、第２ライトポインターＷ２を追従する第２リードポインターＲ２が示す領域に書き込まれた通常コマンドを読み出して実行し、第２リードポインターＲ２を、次の通常コマンドが書き込まれた領域を示す位置に移動する、という動作を繰り返し実行する。
これによれば、第１バッファー３１１に書き込まれたコマンドのうち、即時実行コマンドは、読み出し後、即時実行されることとなるため、即時実行コマンドを即時実行するという要求を満たすことができる。さらに、第２バッファー３１２では、即時実行コマンドを含まない通常コマンドが、受信した順に書き込まれることとなり、第２バッファー３１２に書き込まれたコマンドを順次読み出して実行する、という即時実行コマンドの存在を考慮しない単純な作業を継続して実行すれば、通常コマンドを順次実行できるため、受信バッファー３１におけるコマンドの管理が容易化する。
ここで、本実施形態では、受信バッファー３１におけるコマンドを書き込む領域、及び、コマンドを読み出す領域をポインターによって管理している。
この場合、ポインターの管理に係る処理が容易化できれば、受信バッファー３１におけるコマンドの管理に係る処理の容易化へとつながり、また、ポインターの管理に係る処理を実現するプログラム等の簡易化へつながり、開発容易性の向上、製造コストの削減を図ることが可能となる。
以上を踏まえ、上記構成によれば、第１ライトポインターＷ１について、制御部２１は、他のポインターとの関係を考慮することなく、受信したコマンドの書き込みに応じて、その位置を移動させればよいため、管理が容易である。また、第１リードポインターＲ１について、制御部２１は、当該ポインターを、第１ライトポインターＷ１に追従させた状態を維持した上で、第１バッファー３１１に書き込まれたコマンドの読み出しに応じて、その位置を移動させればよいため、管理が容易である。また、第２ライトポインターＷ２について、制御部は、他のポインターとの関係を考慮することなく、第２バッファー３１２に対する書き込みに応じて、その位置を移動させればよいため、管理が容易である。また、第２リードポインターＲ２について、制御部２１は、当該ポインターを、第２ライトポインターＷ２に追従させた状態を維持した上で、第２バッファー３１２に書き込まれたコマンドの読み出しに応じて、その位置を移動させればよいため、管理が容易である。これらの管理の容易化は、即時実行コマンドを即時実行するという要求を満たした上で、実現されるものである。
【００４１】
また、本実施形態では、第２バッファー３１２がバッファーフルとなった場合、制御部２１は、第１バッファー３１１から読み出したコマンドが即時実行コマンドである場合は、当該即時実行コマンドを実行する一方、読み出したコマンドが通常コマンドである場合は、当該通常コマンドの第２バッファー３１２への書き込みを行わず、当該通常コマンドを読み飛ばすことを特徴とする。
より具体的には、制御部２１は、第１リードポインターＲ１が示す領域から読み出したコマンドが、即時実行コマンドである場合は、当該即時実行コマンドを実行して、第１リードポインターＲ１を、次のコマンドが書き込まれた領域を示す位置に移動する一方、読み出したコマンドが通常コマンドである場合は、当該通常コマンドの第２バッファー３１２への書き込みを行わず、第１リードポインターＲ１を、次のコマンドが書き込まれた領域を示す位置に移動する。
これによれば、即時実行コマンドを即時実行するという要求を満たした上で、第２バッファーがバッファーフルとなった後に受信した通常コマンドのみを読み飛ばすことが可能となる。
【００４２】
なお、上記実施形態は本発明を適用した一具体例を示すものであり、本発明はこれに限定されるものではない。
また、図２に示す各機能部はハードウェアとソフトウェアの協働により任意に実現可能であり、特定のハードウェア構成を示唆するものではない。
さらに、上記実施形態では、ＰＯＳ端末１において、レシート１０１を印刷するプリンター２に本発明を適用する場合について説明したが、本発明はこれに限定されるものではなく、独立して機能するプリンターに、各種の通信手段を介してホストコンピューター４を接続した構成が挙げられ、例えば、ＬＡＮを介してプリンター２が複数のホストコンピューター４に接続されていてもよい。
また、上記実施形態では、プリンター２自身が制御部２１や、受信バッファー３１等を備えた構成を例に挙げて説明したが、例えば、制御部２１や、受信バッファー３１等を備えた制御装置を、プリンター２に外部接続される別の装置としてもよい。
また、本発明を適用可能な記録装置は、コマンドに従って動作可能なプリンターであれば特に制限されず、インクジェット式プリンター、ドットインパクト式プリンター、レーザープリンター、熱昇華型プリンターのいずれであってもよく、他の方式で文字や画像を形成するプリンターであってもよいし、他の装置に組み込まれるプリンターであってもよい。また、電子媒体に記録するものでもよい。
また、本発明を適用可能なプログラムは、ホストコンピューター４に搭載されるプリンタードライバーに含むものであってもよい。
また、図５に記載のフローチャートの各ステップを実行するプログラムを、プリンター２の内部の記憶媒体に記憶させたもの、またはプリンター２の外部の記憶媒体に記憶させたものを読み出して、制御部２１により実行させることもできる。
【符号の説明】
【００４３】
２…プリンター（記録装置）、４…ホストコンピューター（制御装置）、２１…制御部、３１…受信バッファー、３１１…第１バッファー（第１記憶領域）、３１２…第２バッファー（第２記憶領域）、Ｒ１…第１リードポインター、Ｒ２…第２リードポインター、Ｗ１…第１ライトポインター、Ｗ２…第２ライトポインター。
【図１】
0005817193.tif 000002
【図２】
0005817193.tif 000003
【図３】
0005817193.tif 000004
【図４】
0005817193.tif 000005
【図５】
0005817193.tif 000006