説明

記録装置、記録装置の制御方法、及び、プログラム

【課題】即時実行コマンドを即時実行するという要求を満たしつつ、バッファーにおけるコマンドの管理を容易化する。
【解決手段】プリンター2の制御部21は、第1バッファー311にて、ホストコンピューター4から受信したコマンドを、順次、第1バッファー311に書き込むと共に、順次、読み出し、読み出したコマンドが即時実行コマンドである場合は、当該コマンドを実行する一方、通常コマンドである場合は、当該コマンドを第2バッファー312に書き込むと共に、当該コマンドを実行することなく読み飛ばし、さらに、第2バッファー312にて、第2バッファー312に書き込まれた通常コマンドを、順次、読み出して実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御装置に接続可能な記録装置、当該記録装置の制御方法、及び、プログラムに関する。
【背景技術】
【0002】
従来、制御装置(ホストコンピューター)から受信したコマンドに従って動作する記録装置(画像形成装置)が知られている(例えば、特許文献1参照)。
この種の記録装置では、制御装置から受信したコマンドをバッファー(記憶領域)に一時的に書き込み、バッファーに書き込まれたコマンドを順次実行していくものがある。
また、この種の記録装置が制御装置から受信するコマンドには、画像などを記録するための通常のコマンドとは別に、記録装置のステータス応答指示やリセット指示のコマンドなど、即座に実行することを要求する即時実行コマンド(リアルタイムコマンド)がある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2001−260435号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述した記録装置では、バッファーに格納された各コマンドについて、即時実行コマンドを即時実行するという要求を満たしつつ、未実行の通常コマンドを管理する必要があるため、バッファーにおけるコマンドの管理に係る処理が複雑化する傾向にある。
本発明は、上述した事情に鑑みてなされたものであり、即時実行コマンドを即時実行するという要求を満たしつつ、バッファーにおけるコマンドの管理を容易化することを目的とする。
【課題を解決するための手段】
【0005】
上記目的を達成するために、本発明は、制御装置に接続可能な記録装置であって、第1記憶領域と、この第1記憶領域と異なる第2記憶領域と、前記第1記憶領域と前記第2記憶領域とを制御する制御部と、を備え、前記制御部は、前記制御装置からコマンドを受信すると、順次、前記第1記憶領域に書き込み、前記第1記憶領域に書き込んだ前記コマンドを、順次、読み出し、読み出した前記コマンドが即時実行コマンドである場合には、通常コマンドに優先して当該即時実行コマンドを実行する一方、読み出した前記コマンドが前記通常コマンドである場合には、当該通常コマンドを前記第2記憶領域に書き込み、前記第2記憶領域に書き込まれた前記通常コマンドを、順次、読み出して実行することを特徴とする。
この構成によれば、第1記憶領域に書き込まれたコマンドのうち、即時実行コマンドは、読み出した後、通常コマンドに優先して即時実行されることとなるため、即時実行コマンドを即時(リアルタイム)に実行するという要求を満たすことができる。さらに、第2記憶領域では、即時実行コマンドを含まない通常コマンドが、受信した順に書き込まれることとなり、即時実行コマンドを実行しない間、第2記憶領域に書き込まれたコマンドを順次読み出して実行する、という即時実行コマンドの存在を考慮しない単純な作業を継続して実行すれば、通常コマンドを順次実行できるため、通常コマンドに即時実行コマンドが挿入された状態で受信したとしても、記憶領域におけるコマンドの管理や実行が容易化する。
【0006】
また、上記発明の記録装置であって、本発明は、前記第2記憶領域の空き領域が所定値以下となった場合、前記制御部は、前記制御装置に、前記第2記憶領域の空き領域が所定値以下となった旨の通知を送信し、前記通知を送信した後、前記制御装置からコマンドを受信すると、順次、前記第1記憶領域に書き込み、前記第1記憶領域に書き込んだ前記コマンドを、順次、読み出し、前記第1記憶領域から読み出した前記コマンドが前記即時実行コマンドである場合には、前記通常コマンドに優先して当該即時実行コマンドを実行する一方、読み出した前記コマンドが前記通常コマンドである場合には、当該通常コマンドの前記第2記憶領域への書き込みを行わないことを特徴とする。
この構成によれば、即時実行コマンドを即時実行するという要求を満たした上で、いわゆるバッファーフルなど、第2記憶領域の空き領域が所定値以下となった後に、その旨を制御装置に通知したにもかかわらず、制御装置からコマンドが送られてきた場合、即時実行コマンドは実行する一方で、通常コマンドのみを読み飛ばすことが可能となる。ここで、所定値とは、その旨を制御装置に通知するタイミングと、制御装置がコマンドを送るタイミングがほぼ同時となる場合もあるので、少なくとも即時実行コマンド1つ分を読み込むことを可能とし、コマンド1つ分の空き領域に至った値とすることができる。空き領域の大きさを即時実行コマンドが複数送られてくることを考慮し、即時実行コマンド1つ分以上、例えば2つ分としてもよい。
【0007】
また、上記目的を達成するために、本発明は、制御装置に接続可能な記録装置であって、第1記憶領域と、この第1記憶領域と異なる第2記憶領域と、前記第1記憶領域と前記第2記憶領域とを制御する制御部と、を備え、前記制御部は、前記制御装置からコマンドを受信すると、前記第1記憶領域の第1ライトポインターが示す領域に書き込み、前記第1ライトポインターを、次のコマンドを書き込む領域を示す位置に移動し、前記第1記憶領域の前記第1ライトポインターを追従する第1リードポインターが示す領域に書き込まれた前記コマンドを読み出し、読み出した前記コマンドが即時実行コマンドである場合には、通常コマンドに優先して当該即時実行コマンドを実行して、前記第1リードポインターを、次のコマンドが書き込まれた領域を示す位置に移動し、読み出した前記コマンドが前記通常コマンドである場合には、当該通常コマンドを、前記第2記憶領域の第2ライトポインターが示す領域に書き込み、前記第2ライトポインターを、次の前記通常コマンドを書き込む領域を示す位置に移動し、さらに、前記第2記憶領域の前記第2ライトポインターを追従する第2リードポインターが示す領域に書き込まれた前記通常コマンドを読み出して実行し、前記第2リードポインターを、次の前記通常コマンドが書き込まれた領域を示す位置に移動することを特徴とする。
ここで、上記構成では、記憶領域におけるコマンドを書き込む領域、及び、コマンドを読み出す領域をポインターによって管理する。この場合、ポインターの管理に係る処理が容易化できれば、記憶領域におけるコマンドの管理に係る処理の容易化へとつながり、また、ポインターの管理に係る処理を実現するプログラム等の簡易化へつながり、開発容易性の向上、製造コストの削減を図ることが可能となる。
以上を踏まえ、上記構成によれば、第1ライトポインターについて、制御部は、他のポインターとの関係を考慮することなく、受信したコマンドの書き込みに応じて、その位置を移動させればよいため、管理が容易である。また、第1リードポインターについて、制御部は、当該ポインターを、第1ライトポインターに追従させた状態を維持した上で、第1記憶領域に書き込まれたコマンドの読み出しに応じて、その位置を移動させればよいため、管理が容易である。また、第2ライトポインターについて、制御部は、他のポインターとの関係を考慮することなく、第2記憶領域に対する書き込みに応じて、その位置を移動させればよいため、管理が容易である。また、第2リードポインターについて、制御部は、当該ポインターを、第2ライトポインターに追従させた状態を維持した上で、第2記憶領域に書き込まれたコマンドの読み出しに応じて、その位置を移動させればよいため、管理が容易である。これらの管理の容易化は、即時実行コマンドを即時実行するという要求を満たした上で、実現されるものである。
【0008】
また、上記発明の制御装置であって、本発明は、前記第2記憶領域の空き領域が所定値以下となった場合、前記制御部は、前記制御装置に、前記第2記憶領域の空き領域が所定値以下となった旨の通知を送信し、前記通知を送信した後、前記制御装置からコマンドを受信すると、前記第1記憶領域の第1ライトポインターが示す領域に書き込み、前記第1ライトポインターを、次のコマンドを書き込む領域を示す位置に移動し、前記第1記憶領域の前記第1リードポインターが示す領域から読み出した前記コマンドが、前記即時実行コマンドである場合には、前記通常コマンドに優先して当該即時実行コマンドを実行して、前記第1リードポインターを、次のコマンドが書き込まれた領域を示す位置に移動する一方、読み出した前記コマンドが前記通常コマンドである場合には、当該通常コマンドを前記第2記憶領域へ書き込みを行わず、前記第1リードポインターを、次の前記コマンドが書き込まれた領域を示す位置に移動することを特徴とする。
この構成によれば、即時実行コマンドを即時実行するという要求を満たした上で、第2記憶領域の空き領域が所定値以下となった後に、その旨を制御装置に通知したにもかかわらず、制御装置からコマンドが送られてきた場合、即時実行コマンドは実行する一方で、通常コマンドのみを読み飛ばすことが可能となる。
【0009】
また、上記目的を達成するために、本発明は、制御装置に接続可能であり、第1記憶領域と、この第1記憶領域と異なる第2記憶領域と、を備える記録装置の制御方法であって、前記制御装置からコマンドを受信すると、順次、前記第1記憶領域に書き込み、前記第1記憶領域に書き込んだ前記コマンドを、順次、読み出し、読み出した前記コマンドが即時実行コマンドである場合には、通常コマンドに優先して当該即時実行コマンドを実行する一方、読み出した前記コマンドが前記通常コマンドである場合には、当該通常コマンドを前記第2記憶領域に書き込み、前記第2記憶領域に書き込まれた前記通常コマンドを、順次、読み出して実行することを特徴とする。
この構成によれば、第1記憶領域に書き込まれたコマンドのうち、即時実行コマンドは、読み出した後、通常コマンドに優先して即時実行されることとなるため、即時実行コマンドを即時(リアルタイム)に実行するという要求を満たすことができる。さらに、第2記憶領域では、即時実行コマンドを含まない通常コマンドが、受信した順に書き込まれることとなり、即時実行コマンドを実行しない間、第2記憶領域に書き込まれたコマンドを順次読み出して実行する、という即時実行コマンドの存在を考慮しない単純な作業を継続して実行すれば、通常コマンドを順次実行できるため、通常コマンドに即時実行コマンドが挿入された状態で受信したとしても、記憶領域におけるコマンドの管理や実行が容易化する。
【0010】
また、上記目的を達成するために、本発明は、制御装置に接続可能であり、第1記憶領域と、この第1記憶領域と異なる第2記憶領域と、を備える記録装置の各部を制御する制御部により実行されるプログラムであって、前記制御部に、前記制御装置からコマンドを受信すると、順次、前記第1記憶領域に書き込ませ、前記第1記憶領域に書き込ませた前記コマンドを、順次、読み出させ、読み出させた前記コマンドが即時実行コマンドである場合には、通常コマンドに優先して当該即時実行コマンドを実行させる一方、読み出させた前記コマンドが前記通常コマンドである場合には、当該通常コマンドを前記第2記憶領域に書き込ませ、前記第2記憶領域に書き込まれた前記通常コマンドを、順次、読み出して実行させることを特徴とする。
このプログラムを実行すれば、第1記憶領域に書き込まれたコマンドのうち、即時実行コマンドは、読み出した後、通常コマンドに優先して即時実行されることとなるため、即時実行コマンドを即時(リアルタイム)に実行するという要求を満たすことができる。さらに、第2記憶領域では、即時実行コマンドを含まない通常コマンドが、受信した順に書き込まれることとなり、即時実行コマンドを実行しない間、第2記憶領域に書き込まれたコマンドを順次読み出して実行する、という即時実行コマンドの存在を考慮しない単純な作業を継続して実行すれば、通常コマンドを順次実行できるため、通常コマンドに即時実行コマンドが挿入された状態で受信したとしても、記憶領域におけるコマンドの管理や実行が容易化する。
【発明の効果】
【0011】
本発明によれば、即時実行コマンドを即時実行するという要求を満たしつつ、バッファーにおけるコマンドの管理を容易化することが可能となる。
【図面の簡単な説明】
【0012】
【図1】POS端末の構成を示す図である。
【図2】プリンターの機能的構成を示すブロック図である。
【図3】受信バッファーを示す図である。
【図4】受信バッファーを示す図である。
【図5】プリンターの動作を示すフローチャートである。
【発明を実施するための形態】
【0013】
以下、図面を参照して本発明の実施形態について説明する。
図1は、本発明を適用した実施形態に係るPOS端末1の概略構成を示す図である。
POS端末1は、例えば小売店等の店頭に設置され、売上げ精算を行うレジスターであり、販売時点管理システム(POSシステム)を構成する。
POS端末1は、売上登録処理及び精算処理を行うホストコンピューター4(制御装置)に、レシート101を発行するプリンター2(記録装置)を接続して構成される。ホストコンピューター4は、売上登録した情報を収集するPOSサーバーに、通信回線を介して接続されている。ホストコンピューター4は、売上登録処理及び精算処理の処理内容を表示するディスプレー41、売上登録処理時に商品に付されたバーコードを読み取るバーコードスキャナー42、売上登録キー等の各種キーを備えたキー入力部43、精算用の現金を収容するキャッシュドロワー44等を備えている。キャッシュドロワー44は、後述するようにプリンター2に接続され、プリンター2から入力されるドロワーオープン信号を受信したときに開く構成となっている。
【0014】
プリンター2は、本体11に記録媒体としての感熱ロール紙を収容し、記録ヘッドによりロール紙に画像を印刷(記録)して、レシート101を出力する。プリンター2は、ロール紙を搬送するローラー形状のプラテン(図示略)と、このプラテンに対向配置された記録ヘッドとを備え、排紙口14の近傍には、ロール紙を切断するカッターユニット(図示略)が配置されている。本実施形態のプリンター2が備える記録ヘッドは、例えば、発熱体(図示略)をロール紙の幅方向に、一列または複数列で並べて構成されるラインサーマルヘッドである。各々の発熱体には後述するプリントエンジン20により個別に通電され、ロール紙の印刷面(記録面)に密着する発熱体によってロール紙に熱エネルギーを与えることによって、ロール紙を発色させる。
記録ヘッドによって印刷されたロール紙は、本体11の上面に形成された排紙口14から外に向けて搬送され、カッターユニットにより切断され、レシート101として出力される。レシート101には、店名や売り上げた商品名、商品数量、金額、合計金額等の文字、ロゴの画像等が印刷される。
【0015】
また、図1に示すように、プリンター2の本体11には開閉可能なカバー12が設けられる。本体11には、カバー12を開くためのレバー13が設けられ、カバー12を開くと、ロール紙を収容する空間が露出し、ロール紙の補充や交換が可能になる。また、本体11には、プリンター2の電源をオン/オフさせる電源スイッチ16、ロール紙の紙送り動作を指示し、また制御時の所定の条件下で動作モードの切り替え等を指示する操作を行うための紙送りスイッチ17、及び、プリンター2の動作状態等を表示するためのLED表示部18が設けられている。
プリンター2は、プラテンローラーを回転させてロール紙を搬送する搬送モーター、カッターユニットを駆動してロール紙を切断するカッター駆動モーター、記録ヘッドを駆動させて、ロール紙に対して文字や画像を記録する。
【0016】
図2は、プリンター2の機能的構成を示すブロック図である。
プリンター2は、実際の印刷を行うプリントエンジン20と、プリンター2の全体を制御する制御部21と、制御部21が実行する基本制御プログラムを記憶したROM22と、制御部21が実行する制御プログラム24A及びコマンド24B等を記憶した不揮発性のメモリーであるEEPROM24と、制御部21の制御の下、ホストコンピューター4や、キャッシュドロワー44との間で各種データの送受信を行うインターフェイス部25と、紙送りスイッチ17(図1)における操作を検出する入力部27と、LED表示部18を制御して各種表示を行わせる表示部28と、プリンター2の各部の動作状態を監視するステータス監視部30と、ホストコンピューター4から受信した受信データを一時的に循環的に格納するリングバッファーであるRAMからなる受信バッファー31(第1バッファー311(第1記憶領域)、第2バッファー312(第2記憶領域))と、を備えている。リングバッファーとは、アドレスの先端から順次データを記憶し、後端に至ると再び先端にアドレスを戻して記憶していくものであり、メモリーを効率的に使用できる。
【0017】
プリントエンジン20は、制御部21の制御に従って、ホストコンピューター4から送信された印刷データに基づき、記録媒体としてのロール紙に印刷する文字や画像を作成し、用紙端センサーや用紙残量センサー等の各種センサーの検出値を監視しながら、プリンター2が備える記録ヘッド、カッター駆動モーター及び搬送モーターを動作させ、ロール紙への印刷を実行する。
このように、プリンター2は、紙や合成樹脂製の記録媒体(ロール紙、カット紙、複写紙等)の印刷面にインクやトナーを付着させ、或いは記録媒体の印刷面に熱を与える記録ヘッド、記録媒体に対して記録ヘッドを移動させる記録ヘッド駆動機構、記録媒体を搬送する搬送機構等を備え、これら記録ヘッド及び各種機構がプリントエンジン20によって制御される。
また、プリントエンジン20は、制御部21の制御に従って、入力部27によって紙送りスイッチ17の操作を検出した場合は搬送モーターを動作させてロール紙を所定量搬送し、プリンター2の動作状態等に合わせて表示部28を介してLED表示部18の各LEDの点灯状態を変化させる。
【0018】
制御部21は、CPUや、実行するプログラムやデータ等を一時的に記憶するワークエリアとしてのメモリーを内蔵し、マイクロコンピューターとして機能し、ROM22に記憶された基本制御プログラムや、EEPROM24に記憶された制御プログラム24Aを実行する。
ROM22は、制御部21によってプリンター2の各部を初期化するとともに、これらの各部を制御するための基本制御プログラム、及び、この基本制御プログラムに係るデータ等を不揮発的に記憶する。
EEPROM24は、書き換え可能な不揮発性の記憶装置であり、制御プログラム24A、及びコマンド24Bを含む各種のプログラムやデータを記憶する。
インターフェイス部25は、USBやRS232Cインターフェイス等の各種インターフェイスを備え、制御部21の制御の下、ホストコンピューター4との間で所定の規格に準拠した、有線または無線通信を行う。
【0019】
プリンター2が備えるステータス監視部30には、外部からプリンター2に供給される電源電圧を検出、カバー12の開閉状態、ロール紙の有無等を検出する各検出部が接続され、これらの検出部における検出状態に基づき、たとえば、プリンター2における電源電圧の異常、用紙補充やインクカートリッジの交換時に開閉されるプリンター2のカバー12が開いたこと、プリンター2の用紙切れ、紙送りスイッチ17の操作等のプリンター2における事象(イベント)の発生を示す検出信号を、制御部21に割り込み信号として出力する。
【0020】
ホストコンピューター4には、プリンター2の制御用のプログラムであるプリンタードライバーが記憶されている。そして、ホストコンピューター4は、プリンター2を制御して、レシート101の発行に係る各種処理を実行させる場合、プリンタードライバーを読み出して実行することにより、プリンター2を制御するためのコマンドを生成し、生成したコマンドをプリンター2に、順次、送信する。
コマンドを受信したプリンター2の制御部21は、詳細は後述するが、基本的には、受信したコマンドを、受信した順に、受信バッファー31に一時的に書き込み、受信バッファー31に書き込まれたコマンドを、順次実行し、これにより、レシート101の発行に係る各種処理を、順次、実行する。
【0021】
ここで、プリンター2の動作モードには、ホストコンピューター4との通信および印刷等を実行可能なオンラインモード(通常モード)と、必要最小限の動作しか行わないオフラインモード(バッファーフルモード)とがある。
オフラインモードは、印字動作の続行が不適当な場合には、印字ヘッドを含む印字メカニズムを停止し、且つホストコンピューター4との間でのコマンドのやり取りを制限し、印字装置および通信データの保全及び使用者の安全を確保する。
オフラインモードへの移行は、カバー12が開いたり、用紙が無くなったりする等の所定のオフライン要因が発生したことのほか、後述するように第2バッファー312がバッファーフルとなったことをトリガーとして実行される。なお、オフラインモードへ移行した後、例えば、ステータス監視部30がオフライン要因が解消したことを検出した場合に、制御部21は、動作モードをオンラインモードに移行する。
オフラインモードに移行した場合、制御部21は、ホストコンピューター4に対してオフラインモードに移行していることを通知する。ホストコンピューター4は、プリンター2がオフラインモードへ移行している間、プリンター2に対し、通常コマンドの出力を一時的に停止し、必要に応じて、通常コマンドよりも緊急性の高い所定の処理について即時実行することを求める即時実行コマンドを出力する。
本実施形態に係るプリンター2は、後述するように、第2バッファー312がバッファーフルとなったことに起因して、動作モードがオフラインモード(本実施形態では、この場合のオフラインモードを、バッファーフルモードという)へ移行した場合であっても、即時実行コマンドを受信した場合には、当該即時実行コマンドについては、即時実行する。
以下、本実施形態に係るプリンター2による、ホストコンピューター4から受信したコマンドの管理に係る処理について詳述する。
【0022】
図3(A)は、第1記憶領域たる第1バッファー311の構造を模式的に示す図であり、図3(B)は、第2記憶領域たる第2バッファー312の構造を模式的に示す図である。
本字紙形態に係るプリンター2は、受信バッファー31として、それぞれ異なる領域に形成された第1バッファー311、及び第2バッファー312の2つのバッファーを備えている。
なお、図3では、第1バッファー311、及び、第2バッファー312の構造を、発明の説明の便宜を考慮して、発明の説明に適した構造としている。
図3に示すように、本実施形態に係る第1バッファー311の容量は、4224バイトである。そして、第1バッファー311の記憶領域は、64ビットを1ワードとして、ワードに対応する領域毎に領域が区分されると共に、区分された領域ごとにアドレスが割り当てられている。以下、ワード毎に区分された領域のことを「ワード領域」称するものとする。
第2バッファー312の構造は、第1バッファー311と同様であるため、その説明を省略する。
これらバッファーは、リングバッファーであり、データの書き込みは、ワード領域単位で、循環的に行われる。
【0023】
次いで、上述した構造の第1バッファー311、及び、第2バッファー312におけるコマンドの管理に係る処理について説明する。
なお、以下の説明では、説明の簡易化、及び、発明の明確化のため、1つのコマンドは、64ビットからなり、1つのワード領域には、1つのコマンドが書き込まれるものとし、さらに、ホストコンピューター4からプリンター2に対して、通常コマンド、及び、即時実行コマンドのいずれかのコマンドが送信され、他のデータ類は送信されないものとする。
また、以下の説明において、制御部21、第1ライトポインター管理部50、第1リードポインター管理部51、第2ライトポインター管理部52、及び、第2リードポインター管理部53の機能は、CPUがプログラムを実行する等、ハードウェアとソフトウェアとの協働により実現される。
【0024】
制御部21は、ホストコンピューター4からコマンドを受信すると、第1ライトポインターW1が示すワード領域に、受信したコマンドを、順次、書き込む。
第1ライトポインターW1とは、第1バッファー311において、コマンドを書き込むべきワード領域を示すポインターであり、制御部21が備える第1ライトポインター管理部50によって管理される。
ポインターとは、ワード領域に割り当てられた1のアドレスを保持することにより、当該1のアドレスに対応するワード領域を特定するものである。ポインターは、例えば、ポインターを管理するためのプログラム(例えば、ファームウェアに含まれるプログラムのうち、第1ライトポインター管理部50の機能を実現するプログラム)上に定義された変数であってもよく、また、RAM等の所定の記憶領域に記憶されたデータであってもよい。
【0025】
第1ライトポインター管理部50の動作について詳述すると、制御部21が、第1ライトポインターW1が示すワード領域に、受信したコマンドを書き込んだとする。この場合、第1ライトポインター管理部50は、第1ライトポインターW1が示すワード領域を、コマンドが書き込まれたワード領域の、次のワード領域とする。具体的には、第1ライトポインター管理部50は、第1ライトポインターW1が保持するワード領域のアドレスを、コマンドが書き込まれたワード領域の、次のワード領域のアドレスとする。
このように、第1ライトポインター管理部50が、制御部21により第1ライトポインターW1が示す1のワード領域へのコマンドの書き込みが終了した後、第1ライトポインターW1が示すワード領域を、当該1のワード領域の次のワード領域とすることにより、ホストコンピューター4から新たにコマンドを受信した場合、制御部21は、当該新たに受信したコマンドを、直近でコマンドの書き込みが行われたワード領域の次のワード領域に書き込むこととなり、第1バッファー311に、受信した順に、順次、コマンドが書き込まれることとなる。
【0026】
図4は、受信バッファー31におけるコマンドの管理に係る処理の説明に利用するため、第1バッファー311、及び、第2バッファー312を模式的に示す図である。
図4では、第1バッファー311における、第1ライトポインターW1を示す図形の位置によって、第1ライトポインターW1が示すワード領域を表現している。
図4を用いて第1ライトポインター管理部50の動作を説明すると、第1ライトポインターW1がワード領域WA1を示している場合(位置PA1)において、通常コマンドT1を受信した場合、制御部21は、ワード領域WA1に、通常コマンドT1を書き込む。すると、第1ライトポインター管理部50は、第1ライトポインターW1が示すワード領域を、ワード領域WA2とする(位置PA2)。
ここで、上述したように、ホストコンピューター4から受信されるコマンドには、通常コマンドのほか、即時実行コマンドが存在するが、本実施形態では、コマンドの種類にかかわらず、受信したコマンドは、一旦、第1バッファー311に書き込まれる。
なお、以下の説明において、ポインターが示すワード領域を、現時点で示しているワード領域の次のワード領域へと変更することを、適宜、「ポインターの位置を次のワード領域へ移動する」と表現するものとする。
【0027】
されに、制御部21は、第1バッファー311に書き込まれたコマンド対して、以下の処理を実行する。
すなわち、制御部21は、第1リードポインターR1が示すワード領域に書き込まれたコマンドを読み出す。第1リードポインターR1とは、第1バッファー311において、コマンドを読み出すべきワード領域を示すポインターであり、第1リードポインター管理部51により管理される。第1リードポインターR1は、第1バッファー311に既に書き込まれたコマンドについて、コマンドを読み出すべき領域を示すポインターであるため、第1ライトポインターW1に追従して移動する。
次いで、制御部21は、読み出したコマンドを解析し、当該コマンドが、通常コマンドであるか、即時実行コマンドであるかを判別する。なお、本実施形態では、各コマンドには、各コマンドが通常コマンドであるか、即時実行コマンドであるかを示すデータが含まれており、制御部21は、当該データに基づいて、読み出したコマンドの種類を判別する。なお、各コマンドに、各コマンドが通常コマンドであるか、即時実行コマンドであるかを示すフラグを設け、このフラグの状態により、制御部21は、コマンドの種類を判別するようにしてもよいことは勿論である。
そして、読み出したコマンドが即時実行コマンドである場合、制御部21は、当該即時実行コマンドを、直ちに、実行する。すなわち、通常コマンドに優先して当該即時実行コマンドを事項する。これにより、即時実行コマンドは、受信に応じて即時実行されることとなる。次いで、第1リードポインター管理部51は、第1リードポインターR1の位置を次のワード領域へ移動する。ここで、「即時実行コマンドを、直ちに(即時、又は、リアルタイムで。)、実行する」とは、通常コマンドに優先して、即時実行コマンドを実行することを意味している。上述したように、即時実行コマンドは、通常コマンドと比して緊急性が高く、即時実行が求められるコマンドであるため、通常コマンドよりも優先的に即時実行コマンドを実行することにより、即時実行コマンドの即時実効性を担保する必要があるからである。
【0028】
一方、読み出したコマンドが通常コマンドである場合、制御部21は、当該通常コマンドを実行することなく、第2バッファー312において、第2ライトポインターW2が示すワード領域に、当該通常コマンドを書き込む(コピーする)。第2ライトポインターW2とは、第2バッファー312において、コマンドを書き込むべきワード領域を示すポインターであり、第2ライトポインター管理部52により管理される。次いで、第1リードポインター管理部51は、第1リードポインターR1の位置を次のワード領域へ移動し、かつ、第2ライトポインター管理部52は、第2ライトポインターW2の位置を次のワード領域へ移動する。
つまり、第1バッファー311から読み出したコマンドが通常コマンドである場合、制御部21は、当該通常コマンドを実行することなく、読み飛ばす。
【0029】
図4を用いて具体的に説明すると、通常コマンドT1→通常コマンドT2→即時実行コマンドRT1→通常コマンドT3の順に、ホストコンピューター4からコマンドを受信したとする。
この場合、制御部21により各コマンドが第1バッファー311に順次書き込まれ、最後のコマンドである通常コマンドT4を受信した時点では、第1ライトポインターW1は、ワード領域WA5を示した状態(位置PA5)となる。
各コマンドの第1バッファー311への書き込みに応じて、制御部21は、第1バッファー311に書き込まれたコマンドを順次読み出していき、各コマンドについて、コマンドの種類に応じた処理を実行する。
具体的には、図4を参照し、制御部21は、第1バッファー311において、まず、位置PA1の第1リードポインターR1が示すワード領域WA1に書き込まれた通常コマンドT1を読み出して解析し、当該通常コマンドT1が通常コマンドであると判別する。次いで、制御部21は、通常コマンドT1を実行することなく、データとしての通常コマンドT1をそのまま、第2バッファー312において、位置PB1に位置する第2ライトポインターW2が示すワード領域WB1に書き込む(コピーする)。
次いで、第1リードポインター管理部51は、第1リードポインターR1を、位置PA2へ移動し、かつ、第2ライトポインター管理部52は、第2ライトポインターW2を、位置PB2へ移動する。
このように、制御部21は、第1バッファー311から読み出したコマンドが通常コマンドである場合は、当該通常コマンドを実行することなく、当該通常コマンドを、第2バッファー312に書き込む(コピーする)。このため、読み出したコマンドが通常コマンドである場合は、読み出したコマンドを実行する場合と比較して、読み出しを開始してから、次のコマンドの読み出しを開始するまでに要する時間(第1リードポインター管理部51、及び、第2ライトポインター管理部52の処理に要する時間を含む)が、非常に短時間となる。例えば、通常コマンドT1が、搬送モーターの駆動を指示するコマンドであったとする。この場合、本実施形態では、制御部21は、通常コマンドT1を実行することなく、第2バッファー312に書き込むため、通常コマンドT1を読み出して実行する(搬送モーターを実際に駆動する)場合と比較して、次のコマンドの読み出しの開始に至るまでの時間が、非常に短い。
【0030】
次いで制御部21は、第1バッファー311において、第1リードポインターR1が示すワード領域WA2に書き込まれた通常コマンドT2を読み出し、通常コマンドであるため、当該通常コマンドT2を実行することなく、当該通常コマンドT2を、第2ライトポインターW2が示すワード領域WB2に書き込む。当該書き込み後、第1リードポインター管理部51は、第1リードポインターR1を、位置PA3へ移動し、かつ、第2ライトポインター管理部52は、第2ライトポインターW2を、位置PB3へ移動する。
【0031】
次いで、制御部21は、第1バッファー311において、位置PA3の第1リードポインターR1が示すワード領域WA3に書き込まれた即時実行コマンドRT1を読み出して解析し、当該即時実行コマンドRT1が即時実行コマンドであると判別する。次いで、制御部21は、即時実行コマンドRT1を、直ちに、実行する。
上述したように、ワード領域WA1、及び、ワード領域WA2には、通常コマンドが書き込まれており、これら通常コマンドは実行されることなく、読み飛ばされるため、第1リードポインターは、位置PA1→位置PA2→位置PA3と、非常に短時間で移動することとなる。従って、制御部21による第1バッファー311に書き込まれた通常コマンドT1の読み出しが開始された後、非常に短時間で、即時実行コマンドRT1の読み出しが開始されることとなり、即時実行コマンドRT1の即時実効性が担保される。
制御部21によって即時実行コマンドRT1が実行された後、第1リードポインター管理部51は、第1リードポインターR1の位置を次のワード領域へ移動する。
【0032】
次いで、制御部21は、第1バッファー311において、第1リードポインターR1が示すワード領域WA4に書き込まれた通常コマンドT3を読み出し、通常コマンドであるため、当該通常コマンドT3を実行することなく、当該通常コマンドT3を、第2ライトポインターW2が示すワード領域WB3に書き込む。当該書き込み後、第1リードポインター管理部51は、第1リードポインターR1を、位置PA5へ移動し、かつ、第2ライトポインター管理部52は、第2ライトポインターW2を、位置PB4へ移動する。
【0033】
以上のように、第2バッファー312には、第1バッファー311から読み出された際に、実行されなかった通常コマンドが、順次、書き込まれていく。そして、制御部21は、第2バッファー312に書き込まれた通常コマンドを、順次、読み出して実行する。
詳述すると、制御部21は、第2バッファー312において、第2リードポインターR2が示すワード領域に格納されたコマンドを読み出して実行する。第2リードポインターR2とは、第2バッファー312において、コマンドを読み出すべきワード領域を示すポインターであり、第2リードポインター管理部53により管理される。第2リードポインターR2は、第2バッファー312に既に書き込まれたコマンドについて、コマンドを読み出すべき領域を示すポインターであるため、第2ライトポインターW2に追従して移動する。
第2リードポインター管理部53は、制御部21により、1のワード領域に格納されたコマンドが読み出され、実行されると、第2リードポインターR2が示すワード領域を、当該1のワード領域の次のワード領域へと変更する。これにより、制御部21により、第2バッファー312に書き込まれた通常コマンドが順次読み出され、実行される。
図4を用いて第1ライトポインター管理部50の動作を説明する。以下の説明では、ワード領域WB1、WB2、及び、WB3のそれぞれに、既に、通常コマンドT1、T2、及び、T3のそれぞれが書き込まれている状態であるものとする。
第2リードポインターR2がワード領域WB1を示している場合(位置PB1)、制御部21は、ワード領域WB1から通常コマンドT1を読み出して実行する。制御部21による通常コマンドT1の実行後、第2リードポインター管理部53は、第2リードポインターR2が示すワード領域を、ワード領域WB2とする(位置PB2)。同様にして、制御部による第2リードポインターR2が示すワード領域からの通常コマンドの読み取り、実行と、第2リードポインター管理部53による第2リードポインターR2の移動と、が交互に繰り返して行われ、通常コマンドT1、T2、及び、T3が制御部21により、順次、実行される。
【0034】
本実施形態では、以上のようにして、第1ライトポインターW1、及び、第1リードポインターR1により、第1バッファー311におけるコマンドの書き込み、読み取りが管理され、かつ、第2ライトポインターW2、及び、第2リードポインターR2により、第2バッファー312におけるコマンドの書き込み、読み取りが管理されるため、以下のようなメリットがある。
すなわち、上述したように、ホストコンピューター4から即時実行コマンドを受信した場合は、当該即時実行コマンドが直ちに実行されることとなり、即時実行コマンドを即時実行するという要求を満たすことができる。そして、即時実行コマンドを即時実行するという要求を満たした上で、各ポインターを非常に容易に管理可能である。
なぜなら、第1ライトポインターW1について、第1ライトポインター管理部50は、他のポインターとの関係を考慮することなく、制御部21によるコマンドの書き込みに応じて、その位置を移動させればよく、例えば、即時実行コマンド専用のライトポインター、及び、リードポインターを設け、当該ポインターとの関係を調整しつつ、第1ライトポインターW1を管理する場合と比較して、非常に管理が容易である。
また、第1リードポインターR1について、第1リードポインター管理部51は、第1ライトポインターW1を超えない状態を維持した上で、制御部21による第1バッファー311に書き込まれたコマンドの読み出しに応じて、その位置を移動させればよいため、第1ライトポインターW1を超えないという条件以外の条件を用いて、第1リードポインターR1の動きを規制する場合と比較して、非常に管理が容易である。
また、第2ライトポインターW2について、第2ライトポインター管理部52は、他のポインターとの関係を考慮することなく、制御部21による第2バッファー312に対する通常コマンドの書き込みに応じて、その位置を移動させればよいため、例えば、即時実行コマンド専用のライトポインター、及び、リードポインターを設け、当該ポインターとの関係を調整しつつ、第2ライトポインターW2を管理する場合と比較して、非常に管理が容易である。
また、第2リードポインターR2について、第2リードポインター管理部53は、第2ライトポインターW2を超えない状態を維持した上で、制御部21による第2バッファー312に書き込まれた通常コマンドの読み出しに応じて、その位置を移動させればよいため、第2ライトポインターW2を超えないという条件以外の条件を用いて、第2リードポインターR2の動きを規制する場合と比較して、非常に管理が容易である。
【0035】
また、本実施形態では、第2バッファー312がバッファーフルとなった場合、以下のような動作を実行する。
ここで、第2バッファー312のバッファーフルとは、第2バッファー312の空き領域の容量が、所定の閾値TH1(例えば、128バイト)以下となっている状態のことである。
第2バッファー312の空き領域とは、第2バッファー312の領域のうち、未実行の通常コマンドが書き込まれた領域を除く領域のことであり、具体的には、第2ライトポインターW2を超え、かつ、第2リードポインターR2を超えていない領域のことである。
なお、第1バッファー311がバッファーフルとなることも理論上はあり得る。しかしながら、上述したように、本実施形態では、第1バッファー311のワード領域に格納された通常コマンドについては、当該通常コマンドが実行されることなく、当該通常コマンドがデータとして第2バッファー312に書き込まれた後、第1リードポインターR1の位置が次のワード領域へ移動するため、第1ライトポインターW1の進むペースに比して、第1リードポインターR1の進むペースが、極端に遅くなるといった事態が非常に発生しにくく、従って、第1バッファー311における空き領域の容量が、上述した所定の閾値TH1以下となる事態が非常に発生しにくい。仮に、第1バッファー311がバッファーフルとなった場合、何らかのエラーが発生しており、当該エラーに起因して、バッファーフルとなっている可能性が高いものと考えられる。これを踏まえ、本実施形態では、第1バッファー311がバッファーフルとなった場合は、エラーが発生しているものとして、処理を中断し、エラーの解消を促す構成となっている。
【0036】
図5は、第2バッファー312がバッファーフルとなった場合におけるプリンター2の動作を示すフローチャートである。
まず、プリンター2の制御部21は、第2バッファー312の空き領域の容量が、閾値TH1(所定値)以下となったか否かを監視する(ステップSA1)。
第2バッファー312の空き領域の容量が、閾値TH1以下となった場合(ステップSA1:YES)、制御部21は、動作モードを、通常モードからバッファーフルモードへ移行し(ステップSA2)、動作モードがバッファーフルモードへ移行したことを、ホストコンピューター4に通知する(ステップSA3)
なお、閾値TH1は、第2バッファー312がバッファーフルとなったか否かを判別する基準となる値であり、具体的には、ステップSA3においてバッファーフルとなった旨をホストコンピューター4に通知するタイミングと、ホストコンピューター4が何らかのコマンドを送るタイミングがほぼ同時となる場合もあるので、少なくとも即時実行コマンド1つ分を読み込むことを可能とするという観点から、コマンド1つ分の空き領域に対応する値とすることができる。空き領域の大きさを、ステップSA3の通知後に即時実行コマンドが複数送られてくることを考慮し、即時実行コマンド1つ分以上、例えば2つ分とするようにしてもよい。
このバッファーフルモードは、オフラインモードの一種であり、受信データの保全、及び、バッファーフルの解消を図るべく、コマンドの実行の停止や、印刷メカニズムの一時的な停止や、プリンター2とホストコンピューター4との間でやり取りするコマンドの制限等が行われる。
ステップSA3の通知により、動作モードがバッファーフルモードに移行したことを検出すると、ホストコンピューター4は、オフラインモードに準じた動作を実行する。
すなわち、ホストコンピューター4からプリンター2に対して出力されるコマンドが即時実行コマンドに制限され、ホストコンピューター4は、基本的に、即時実行コマンドのみをプリンター2に対して出力する。ここで、プリンター2がバッファーフルモードへ移行した後に、ホストコンピューター4からプリンター2へ出力された即時実行コマンド以外のコマンドについては、そのコマンドに対応する動作が実行されることについて、保証されないものと事前に定められている。
なお、ステップSA3における通知のタイミングや、その他の要因により、プリンター2がバッファーフルモードへ移行した後も、ホストコンピューター4からプリンター2に対して、通常コマンドが送信されることがある。
【0037】
次いで、制御部21は、第1バッファー311から読み出したコマンドが通常コマンドである場合における当該通常コマンドの第2バッファー312への書き込みを制限する(ステップSA4)。
詳述すると、動作モードが通常モードである場合、上述したように、制御部21は、第1バッファー311に書き込まれたコマンドについて、第1リードポインターR1が示すワード領域に書き込まれたコマンドを読み出し、読み出したコマンドの種類を判別し、コマンドの種類が即時実行コマンドである場合は、当該即時実行コマンドを直ちに実行し、さらに、第1リードポインター管理部51は、第1リードポインターR1の位置を次のワード領域へ移動する。一方、読み出したコマンドが通常コマンドである場合は、制御部21は、当該通常コマンドを実行することなく、当該通常コマンドを第2バッファー312に書き込み、さらに、第1リードポインター管理部51は、第1リードポインターR1の位置を次のワード領域へ移動する。
一方、動作モードがバッファーフルモードである場合は、制御部21は、第1リードポインターR1が示す領域から読み出したコマンドが即時実行コマンドである場合は、通常モード時と同様に、当該即時実行コマンドを直ちに、通常コマンドに優先して実行し、さらに、第1リードポインター管理部51は、第1リードポインターR1の位置を次のワード領域へ移動する。しかしながら、読み出したコマンドが通常コマンドである場合は、通常モード時と異なり、制御部21は、当該通常コマンドを実行することなく、かつ、当該通常コマンドの第2バッファー312への書き込みを行わず、第1リードポインター管理部51による第1リードポインターR1の位置の移動のみが行われる。
このような制限が行われることにより、即時実行コマンドを即時実行するという要求を満たした上で、バッファーフルモードに移行した後に受信した通常コマンド、つまり、その実行が保証されていない通常コマンドについてのみ、実行されないこととなり、実態に即した適切な処理を実現できる。
【0038】
さらに、本実施形態では、動作モードが通常モードである場合と、バッファーフルモードである場合とにおいて、各ポインターの管理に係る処理が同一である。
具体的には、バッファーフルモードにおいて、第1ライトポインター管理部50は、第1ライトポインターW1について、通常モード時と同様、制御部21によるコマンドの書き込みに応じて、その位置を移動させる。
また、バッファーフルモードにおいて、第1リードポインター管理部51は、第1リードポインターR1について、通常モード時と同様、制御部21によるコマンドの読み出しに応じて、その位置を移動させる。
また、バッファーフルモードにおいて、第2ライトポインター管理部52は、第2ライトポインターW2について、制御部21による通常コマンドの書き込みに応じて、その位置を移動させる。なお、バッファーフルモードでは、制御部21による第2バッファー312への通常コマンドの書き込みが制限されるため、通常モード時と同様に第2ライトポインターW2を管理した結果として、当該第2ライトポインターW2の移動が制限されることとなる。
また、バッファーフルモードにおいて、第2リードポインター管理部53は、第2リードポインターR2について、制御部21による第2バッファー312に書き込まれた通常コマンドの読み出し、実行に応じて、その位置を移動させる。
ここで、通常モード時と、バッファーフルモード時とで、各ポインターの管理に係る処理が異なる場合、処理の複雑化を招き、ポインターの管理に係るプログラムの条件分岐等が複雑化し、開発容易性が阻害される要因となり得るが、本実施形態では、各モード時において各ポインターの管理に係る処理が同様であるため、処理の容易化を実現できる。
【0039】
さて、ステップSA4において、第2バッファー312への通常コマンドの書き込みを制限した後、制御部21は、第2バッファー312のバッファーフルが解消したか否かを監視する(ステップSA5)。本実施形態では、第2バッファー312が一旦バッファーフルとなった後、第2バッファー312における空き領域の容量が、上述した閾値TH1に所定のマージンを加味した閾値TH2(例えば、閾値TH1が128バイトである場合に、256バイト)を超えた場合に、第2バッファー312のバッファーフルが解消したと判別する。
第2バッファー312のバッファーフルが解消した場合(ステップSA5:YES)、制御部21は、動作モードを通常モードへ移行し(ステップSA6)、ホストコンピューター4にその旨通知する(ステップSA7)。これにより、ホストコンピューター4は、オフラインモードに準じた動作を停止し、オンラインモードに準じた動作を実行する。
さらに、制御部21は、ステップSA4における第2バッファー312の書き込みの制限を解除する(ステップSA8)。これにより、通常コマンドの読み捨てが停止され、受信した通常コマンドが、順次、第2バッファー312に書き込まれ、かつ、順次、実行される。
【0040】
以上説明したように、本実施形態では、制御部21は、ホストコンピューター4から受信したコマンドを、順次、第1バッファー311に書き込むと共に、第1バッファー311に書き込んだコマンドを、順次、読み出し、読み出したコマンドが即時実行コマンドである場合は、当該即時実行コマンドを実行する一方、読み出したコマンドが通常コマンドである場合は、当該通常コマンドを第2バッファー312に書き込むと共に、当該通常コマンドを実行することなく読み飛ばし、さらに、第2バッファー312に書き込まれた通常コマンドを、順次、読み出して実行する。
より、具体的には、制御部21は、第1バッファー311において、第1ライトポインターW1が示す領域にホストコンピューター4から受信したコマンドを書き込み、第1ライトポインターW1を、次のコマンドを書き込む領域を示す位置に移動する、という動作を繰り返し実行すると共に、第1ライトポインターW1を追従する第1リードポインターR1が示す領域に書き込まれたコマンドを読み出し、読み出したコマンドが即時実行コマンドである場合は、当該即時実行コマンドを実行して、第1リードポインターR1を、次のコマンドが書き込まれた領域を示す位置に移動する一方、読み出したコマンドが通常コマンドである場合は、当該通常コマンドを、第2バッファー312において、第2ライトポインターW2が示す領域に書き込み、第2ライトポインターW2を、次の通常コマンドを書き込む領域を示す位置に移動し、さらに、第1リードポインターR1を、次のコマンドが書き込まれた領域を示す位置に移動する、という動作を繰り返し実行し、さらに、第2ライトポインターW2を追従する第2リードポインターR2が示す領域に書き込まれた通常コマンドを読み出して実行し、第2リードポインターR2を、次の通常コマンドが書き込まれた領域を示す位置に移動する、という動作を繰り返し実行する。
これによれば、第1バッファー311に書き込まれたコマンドのうち、即時実行コマンドは、読み出し後、即時実行されることとなるため、即時実行コマンドを即時実行するという要求を満たすことができる。さらに、第2バッファー312では、即時実行コマンドを含まない通常コマンドが、受信した順に書き込まれることとなり、第2バッファー312に書き込まれたコマンドを順次読み出して実行する、という即時実行コマンドの存在を考慮しない単純な作業を継続して実行すれば、通常コマンドを順次実行できるため、受信バッファー31におけるコマンドの管理が容易化する。
ここで、本実施形態では、受信バッファー31におけるコマンドを書き込む領域、及び、コマンドを読み出す領域をポインターによって管理している。
この場合、ポインターの管理に係る処理が容易化できれば、受信バッファー31におけるコマンドの管理に係る処理の容易化へとつながり、また、ポインターの管理に係る処理を実現するプログラム等の簡易化へつながり、開発容易性の向上、製造コストの削減を図ることが可能となる。
以上を踏まえ、上記構成によれば、第1ライトポインターW1について、制御部21は、他のポインターとの関係を考慮することなく、受信したコマンドの書き込みに応じて、その位置を移動させればよいため、管理が容易である。また、第1リードポインターR1について、制御部21は、当該ポインターを、第1ライトポインターW1に追従させた状態を維持した上で、第1バッファー311に書き込まれたコマンドの読み出しに応じて、その位置を移動させればよいため、管理が容易である。また、第2ライトポインターW2について、制御部は、他のポインターとの関係を考慮することなく、第2バッファー312に対する書き込みに応じて、その位置を移動させればよいため、管理が容易である。また、第2リードポインターR2について、制御部21は、当該ポインターを、第2ライトポインターW2に追従させた状態を維持した上で、第2バッファー312に書き込まれたコマンドの読み出しに応じて、その位置を移動させればよいため、管理が容易である。これらの管理の容易化は、即時実行コマンドを即時実行するという要求を満たした上で、実現されるものである。
【0041】
また、本実施形態では、第2バッファー312がバッファーフルとなった場合、制御部21は、第1バッファー311から読み出したコマンドが即時実行コマンドである場合は、当該即時実行コマンドを実行する一方、読み出したコマンドが通常コマンドである場合は、当該通常コマンドの第2バッファー312への書き込みを行わず、当該通常コマンドを読み飛ばすことを特徴とする。
より具体的には、制御部21は、第1リードポインターR1が示す領域から読み出したコマンドが、即時実行コマンドである場合は、当該即時実行コマンドを実行して、第1リードポインターR1を、次のコマンドが書き込まれた領域を示す位置に移動する一方、読み出したコマンドが通常コマンドである場合は、当該通常コマンドの第2バッファー312への書き込みを行わず、第1リードポインターR1を、次のコマンドが書き込まれた領域を示す位置に移動する。
これによれば、即時実行コマンドを即時実行するという要求を満たした上で、第2バッファーがバッファーフルとなった後に受信した通常コマンドのみを読み飛ばすことが可能となる。
【0042】
なお、上記実施形態は本発明を適用した一具体例を示すものであり、本発明はこれに限定されるものではない。
また、図2に示す各機能部はハードウェアとソフトウェアの協働により任意に実現可能であり、特定のハードウェア構成を示唆するものではない。
さらに、上記実施形態では、POS端末1において、レシート101を印刷するプリンター2に本発明を適用する場合について説明したが、本発明はこれに限定されるものではなく、独立して機能するプリンターに、各種の通信手段を介してホストコンピューター4を接続した構成が挙げられ、例えば、LANを介してプリンター2が複数のホストコンピューター4に接続されていてもよい。
また、上記実施形態では、プリンター2自身が制御部21や、受信バッファー31等を備えた構成を例に挙げて説明したが、例えば、制御部21や、受信バッファー31等を備えた制御装置を、プリンター2に外部接続される別の装置としてもよい。
また、本発明を適用可能な記録装置は、コマンドに従って動作可能なプリンターであれば特に制限されず、インクジェット式プリンター、ドットインパクト式プリンター、レーザープリンター、熱昇華型プリンターのいずれであってもよく、他の方式で文字や画像を形成するプリンターであってもよいし、他の装置に組み込まれるプリンターであってもよい。また、電子媒体に記録するものでもよい。
また、本発明を適用可能なプログラムは、ホストコンピューター4に搭載されるプリンタードライバーに含むものであってもよい。
また、図5に記載のフローチャートの各ステップを実行するプログラムを、プリンター2の内部の記憶媒体に記憶させたもの、またはプリンター2の外部の記憶媒体に記憶させたものを読み出して、制御部21により実行させることもできる。
【符号の説明】
【0043】
2…プリンター(記録装置)、4…ホストコンピューター(制御装置)、21…制御部、31…受信バッファー、311…第1バッファー(第1記憶領域)、312…第2バッファー(第2記憶領域)、R1…第1リードポインター、R2…第2リードポインター、W1…第1ライトポインター、W2…第2ライトポインター。

【特許請求の範囲】
【請求項1】
制御装置に接続可能な記録装置であって、
第1記憶領域と、
この第1記憶領域と異なる第2記憶領域と、
前記第1記憶領域と前記第2記憶領域とを制御する制御部と、を備え、
前記制御部は、
前記制御装置からコマンドを受信すると、順次、前記第1記憶領域に書き込み、
前記第1記憶領域に書き込んだ前記コマンドを、順次、読み出し、
読み出した前記コマンドが即時実行コマンドである場合には、通常コマンドに優先して当該即時実行コマンドを実行する一方、読み出した前記コマンドが前記通常コマンドである場合には、当該通常コマンドを前記第2記憶領域に書き込み、
前記第2記憶領域に書き込まれた前記通常コマンドを、順次、読み出して実行することを特徴とする記録装置。
【請求項2】
前記第2記憶領域の空き領域が所定値以下となった場合、
前記制御部は、
前記制御装置に、前記第2記憶領域の空き領域が所定値以下となった旨の通知を送信し、
前記通知を送信した後、前記制御装置からコマンドを受信すると、順次、前記第1記憶領域に書き込み、前記第1記憶領域に書き込んだ前記コマンドを、順次、読み出し、
前記第1記憶領域から読み出した前記コマンドが前記即時実行コマンドである場合には、前記通常コマンドに優先して当該即時実行コマンドを実行する一方、読み出した前記コマンドが前記通常コマンドである場合には、当該通常コマンドの前記第2記憶領域への書き込みを行わないことを特徴とする請求項1に記載の記録装置。
【請求項3】
制御装置に接続可能な記録装置であって、
第1記憶領域と、
この第1記憶領域と異なる第2記憶領域と、
前記第1記憶領域と前記第2記憶領域とを制御する制御部と、を備え、
前記制御部は、
前記制御装置からコマンドを受信すると、前記第1記憶領域の第1ライトポインターが示す領域に書き込み、前記第1ライトポインターを、次のコマンドを書き込む領域を示す位置に移動し、
前記第1記憶領域の前記第1ライトポインターを追従する第1リードポインターが示す領域に書き込まれた前記コマンドを読み出し、読み出した前記コマンドが即時実行コマンドである場合には、通常コマンドに優先して当該即時実行コマンドを実行して、前記第1リードポインターを、次のコマンドが書き込まれた領域を示す位置に移動し、
読み出した前記コマンドが前記通常コマンドである場合には、当該通常コマンドを、前記第2記憶領域の第2ライトポインターが示す領域に書き込み、前記第2ライトポインターを、次の前記通常コマンドを書き込む領域を示す位置に移動し、さらに、
前記第2記憶領域の前記第2ライトポインターを追従する第2リードポインターが示す領域に書き込まれた前記通常コマンドを読み出して実行し、前記第2リードポインターを、次の前記通常コマンドが書き込まれた領域を示す位置に移動することを特徴とする記録装置。
【請求項4】
前記第2記憶領域の空き領域が所定値以下となった場合、
前記制御部は、
前記制御装置に、前記第2記憶領域の空き領域が所定値以下となった旨の通知を送信し、
前記通知を送信した後、前記制御装置からコマンドを受信すると、前記第1記憶領域の第1ライトポインターが示す領域に書き込み、前記第1ライトポインターを、次のコマンドを書き込む領域を示す位置に移動し、前記第1記憶領域の前記第1リードポインターが示す領域から読み出した前記コマンドが、前記即時実行コマンドである場合には、前記通常コマンドに優先して当該即時実行コマンドを実行して、前記第1リードポインターを、次のコマンドが書き込まれた領域を示す位置に移動する一方、
読み出した前記コマンドが前記通常コマンドである場合には、当該通常コマンドを前記第2記憶領域へ書き込みを行わず、前記第1リードポインターを、次の前記コマンドが書き込まれた領域を示す位置に移動することを特徴とする請求項3に記載の記録装置。
【請求項5】
制御装置に接続可能であり、第1記憶領域と、この第1記憶領域と異なる第2記憶領域と、を備える記録装置の制御方法であって、
前記制御装置からコマンドを受信すると、順次、前記第1記憶領域に書き込み、前記第1記憶領域に書き込んだ前記コマンドを、順次、読み出し、読み出した前記コマンドが即時実行コマンドである場合には、通常コマンドに優先して当該即時実行コマンドを実行する一方、読み出した前記コマンドが前記通常コマンドである場合には、当該通常コマンドを前記第2記憶領域に書き込み、
前記第2記憶領域に書き込まれた前記通常コマンドを、順次、読み出して実行することを特徴とする記録装置の制御方法。
【請求項6】
制御装置に接続可能であり、第1記憶領域と、この第1記憶領域と異なる第2記憶領域と、を備える記録装置の各部を制御する制御部により実行されるプログラムであって、
前記制御部に、
前記制御装置からコマンドを受信すると、順次、前記第1記憶領域に書き込ませ、前記第1記憶領域に書き込ませた前記コマンドを、順次、読み出させ、読み出させた前記コマンドが即時実行コマンドである場合には、通常コマンドに優先して当該即時実行コマンドを実行させる一方、読み出させた前記コマンドが前記通常コマンドである場合には、当該通常コマンドを前記第2記憶領域に書き込ませ、前記第2記憶領域に書き込まれた前記通常コマンドを、順次、読み出して実行させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2012−223911(P2012−223911A)
【公開日】平成24年11月15日(2012.11.15)
【国際特許分類】
【出願番号】特願2011−91081(P2011−91081)
【出願日】平成23年4月15日(2011.4.15)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】