ところで、特許文献1に記載された印刷制御装置などでは、例えば、オペレーティングシステムのスプーラーを用いてスプールした印刷データをプリンターへ送信して印刷処理を行うことがある。このような場合、例えば、スプーラーに印刷データ容量などの制約や、プリンターのメモリ量の制約などがあることがあり、印刷データがこれらの容量の制約を超える場合などには、印刷処理を継続して実行できない場合があった。このため、より確実に印刷処理を実行させることが望まれていた。
本発明は、このような課題に鑑みなされたものであり、より確実に印刷処理を実行させることができる印刷制御装置、印刷制御方法及びそのプログラムを提供することを主目的とする。
本発明は、上述の主目的を達成するために以下の手段を採った。
本発明の印刷制御装置は、
印刷対象である印刷ジョブを印刷処理する印刷装置へデータ通信可能に接続された印刷制御装置であって、
前記印刷ジョブの一部に相当する印刷データを生成する処理を実行する画像処理部と、
データを記憶する記憶部に前記生成された印刷データをバッファさせるバッファ処理部と、
前記印刷データの前記記憶部へのバッファとは非同期に該記憶部から該印刷データを読み出し該読み出した印刷データを前記印刷装置側へ出力するデータ出力部と、
を備えたものである。
この印刷制御装置では、印刷ジョブの一部に相当する印刷データを生成し、生成した印刷データを記憶部にバッファし、印刷データのバッファとは非同期に記憶部から印刷データを読み出し、読み出した印刷データを印刷装置側へ出力する。このように、印刷ジョブの部分ごとに印刷データをバッファするため、例えば大容量の印刷ジョブなどをスプールする際に生じうる記憶量の制限などの制約に影響されずに印刷データを生成することができる。また、印刷データの生成処理と印刷データの出力処理とが非同期で実行されるため、例えば、一方にトラブルが生じても互いに干渉せずに処理を継続することができる。したがって、より確実に印刷処理を実行させることができる。ここで、画像処理部は、例えば、前記印刷ジョブとしてのアプリケーションプログラムのデータファイルから変換することにより前記印刷データを生成してもよいし、前記印刷装置で取り扱い可能な印刷ジョブから変換することにより前記印刷データを生成してもよい。また、前記印刷データは、印刷対象である印刷ジョブの全体を印刷可能なデータに変換した変換後データのうち少なくとも一部のデータであるものとしてもよい。
本発明の印刷制御装置において、前記バッファ処理部は、前記記憶部のバッファ量を監視し、前記印刷データのバッファ量が所定の第1閾値を超えたときには、単位時間あたりの印刷データのバッファ量をより低減させる第1制限処理を実行するものとしてもよい。こうすれば、記憶部のバッファ量が増加する傾向にある場合に、記憶部のバッファ量の増加を抑制することができる。このため、バッファ量をより適正なものとすることが可能であり、より確実に印刷処理を実行させることができる。このとき、前記バッファ処理部は、前記印刷データのバッファを完了した際に前記画像処理部へバッファ完了応答を行い、前記画像処理部は、前記バッファ完了応答を受けて次の印刷データの生成処理を実行するものであり、前記バッファ処理部は、前記第1制限処理を実行するに際して、所定の第1待機時間を経過したのちに前記バッファ完了応答を行うものとしてもよい。こうすれば、バッファ完了応答を待機させることによって、より容易に記憶部のバッファ量の増加を抑制することができる。ここで、「所定の第1待機時間」は、例えば、印刷装置の記憶容量や印刷装置の印刷速度、印刷データの生成速度に応じて経験的に求めるものとしてもよい。例えば、所定の第1待機時間は、単位時間あたりの印刷データの出力量よりも単位時間あたりの印刷データの生成量が上回る時間に設定されているものとしてもよい。こうすれば、印刷装置側で印刷データの受信待ちとなりにくく、印刷処理を効率よく実行することができる。
第1制限処理を実行する態様の本発明の印刷制御装置において、前記第1閾値は、前記印刷装置の印刷データの記憶容量に基づいて定められているものとしてもよい。こうすれば、印刷装置側へ出力されるデータ量を印刷装置の記憶容量により近いものとしやすい。このため、印刷装置でより確実に印刷処理を実行しやすい。ここで、第1閾値は、印刷装置の印刷データの記憶容量に定められているものとしてもよいし、印刷装置の印刷データの記憶容量の近傍、例えば印刷装置の印刷データの記憶容量の7割や8割などに定められていてもよい。
第1制限処理を実行する態様の本発明の印刷制御装置において、前記バッファ処理部は、前記記憶部のバッファ量を監視し、前記印刷データのバッファ量が前記第1閾値より大きな所定の第2閾値を超えたときには、単位時間あたりの印刷データのバッファ量を前記第1制限処理よりも大きく制限した第2制限処理を実行するものとしてもよい。こうすれば、第1制限処理によっても記憶部のバッファ量が増加する傾向にある場合でも、第2制限によって記憶部のバッファ量の増加を更に抑制することができる。このため、印刷データのバッファ量を第1閾値から第2閾値の間の範囲にしやすく、記憶容量の制限などを考慮して、より確実に印刷処理を実行させることができる。ここで、例えば、第2閾値は、印刷制御装置の記憶容量に基づいて定めるものとしてもよい。例えば、第1閾値を印刷装置の記憶容量に基づいて定め、第2閾値を印刷制御装置の記憶容量に基づいて定めたものとすれば、印刷データのバッファ量が両者の装置の記憶容量の範囲となりやすく好適であり、一層確実に印刷処理を実行させることができる。このとき、前記バッファ処理部は、前記印刷データのバッファを完了した際に前記画像処理部へバッファ完了応答を行い、前記画像処理部は、前記バッファ完了応答を受けて次の印刷データの生成処理を実行するものであり、前記バッファ処理部は、前記第1制限処理を実行するに際して所定の第1待機時間を経たのちに前記バッファ完了応答を行い、前記第2制限処理を実行するに際して、前記第1待機時間よりも長い所定の第2待機時間を経過したのちに前記バッファ完了応答を行うものとしてもよい。こうすれば、バッファ完了応答を更に待機させることによって、より容易に記憶部のバッファ量の増加を抑制することができる。ここで、「所定の第2待機時間」は、例えば、印刷装置の記憶容量や印刷装置の印刷速度、印刷データの生成速度、所定の第1待機時間に応じて経験的に求めるものとしてもよい。例えば、所定の第2待機時間は、単位時間あたりの印刷データのバッファ量を第1制限処理よりも大きく制限するものの、単位時間あたりの印刷データの出力量よりも単位時間あたりの印刷データの生成量が上回る時間に設定されているものとしてもよい。こうすれば、第2制限処理の実行により単位時間あたりの印刷データのバッファ量がより抑制されても、印刷装置側で印刷データの受信待ちとなりにくく、印刷処理を効率よく実行することができる。
本発明の印刷制御装置において、前記データ出力部は、前記読み出した印刷データをオペレーティングシステムのスプールシステムによるスプール処理を介さずに前記印刷装置側へ出力するものとしてもよい。例えば、スプールシステムによるスプール処理には、印刷ジョブの容量の上限など制限が設けられていることがあるが、ここでは、スプール処理を介さずダイレクトに印刷データを印刷装置側へ出力するから、スプール処理の制限を受けることなく、より確実に印刷処理を実行させることができる。
本発明の印刷制御装置において、前記バッファ処理部は、オペレーティングシステムのスプールシステムによるスプール処理での許容容量を超える印刷データを前記印刷装置側へ出力する際に、前記印刷データを前記記憶部にバッファさせるものとしてもよい。こうすれば、スプールシステムの許容容量の制限で印刷処理が実行できない場合でも、印刷ジョブの一部分ずつを印刷装置に出力することにより、確実に印刷処理を実行させることができる。
本発明の印刷制御方法は、
印刷対象である印刷ジョブを印刷処理する印刷装置へデータ通信可能に接続された印刷制御装置が実行する印刷制御方法であって、
(a)前記印刷ジョブの一部に相当する印刷データを生成する処理を実行するステップと、
(b)データを記憶する記憶部に前記生成された印刷データをバッファさせるステップと、
(c)前記印刷データの前記記憶部へのバッファとは非同期に該記憶部から該印刷データを読み出し該読み出した印刷データを前記印刷装置側へ出力するステップと、
を含むものである。
この印刷制御方法では、上述した印刷制御装置と同様に、印刷ジョブの部分ごとに印刷データをバッファするため、例えば大容量の印刷ジョブなどをスプールする際に生じうる記憶量の制限などの制約に影響されずに印刷データを生成することができる。また、印刷データの生成処理と印刷データの出力処理とが非同期で実行されるため、例えば、一方にトラブルが生じても互いに干渉せずに処理を継続することができる。したがって、より確実に印刷処理を実行させることができる。なお、この印刷制御方法において、上述した印刷制御装置の種々の態様を採用してもよいし、また、上述した印刷制御装置の各機能を実現するようなステップを追加してもよい。
本発明のプログラムは、上述した印刷制御方法の各ステップを1又は複数のコンピューターに実現させるためのものである。このプログラムは、コンピューターが読み取り可能な記録媒体(例えばハードディスク、ROM、FD、CD、DVDなど)に記録されていてもよいし、伝送媒体(インターネットやLANなどの通信網)を介してあるコンピューターから別のコンピューターへ配信されてもよいし、その他どのような形で授受されてもよい。このプログラムを一つのコンピューターに実行させるか又は複数のコンピューターに各ステップを分担して実行させれば、上述した印刷制御方法の各ステップが実行されるため、この印刷制御方法と同様の作用効果が得られる。
次に、本発明の実施の形態を図面を用いて説明する。図1は、本実施形態であるプリンターシステム10の構成の概略の一例を示す構成図である。本実施形態のプリンターシステム10は、図1に示すように、ロール紙36から引き出された記録紙Sにインクを吐出して印刷対象である印刷ジョブの印刷処理を行うプリンター20と、プリンター20へデータ通信可能に接続され印刷データを出力する印刷制御装置の機能を有するプリンター用パソコン(PC)40とを備えている。
プリンター20は、大容量の印刷データを大判の記録紙S(例えばA0サイズなど)に印刷する大判印刷処理を実行可能な大型の印刷装置として構成されている。プリンター20は、装置全体をコントロールするコントローラー11と、インクを記録紙Sに吐出する印刷機構21と、駆動モーター33により駆動され記録紙Sを搬送する紙送りローラー35を含む紙送り機構30とを備えている。コントローラー11は、CPU12を中心とするマイクロプロセッサとして構成されており、各種処理プログラムを記憶しデータを書き換え可能なフラッシュROM13と、一時的にデータを記憶したりデータを保存したりするRAM14などを備えている。このコントローラー11は、プリンター用PC40からの印刷データを受信すると共に、印刷処理を実行するよう印刷機構21や紙送り機構30を制御する。印刷機構21は、キャリッジベルト32によりキャリッジ軸28に沿って左右(主走査方向)に往復動するキャリッジ22と、インクに圧力をかけノズル23からインク滴を吐出する印刷ヘッド24と、各色のインクを収容しこの収容したインクを印刷ヘッド24へ供給するカートリッジ25と、を備えている。印刷ヘッド24は、キャリッジ22の下部に設けられており、圧電素子に電圧をかけることによりこの圧電素子を変形させてインクを加圧する方式により、印刷ヘッド24の下面に設けられたノズル23から各色のインクを吐出するものである。なお、インクへ圧力をかける機構は、ヒーターの熱による気泡の発生によるものとしてもよい。カートリッジ25は、シアン(C)・マゼンタ(M)・イエロー(Y)・ブラック(K)などの各色のインクを個別に収容している。
プリンター用PC40は、ユーザーが使用する情報処理装置及び印刷制御装置として構成された汎用パソコンである。このプリンター用PC40は、装置全体の制御を司るコントローラー41と、各種アプリケーションプログラムや各種データファイルを記憶する大容量メモリであるHDD45と、プリンター20などの外部機器とのデータの入出力を行うネットワークインターフェイス(I/F)46とを備えている。コントローラー41は、各種制御を実行するCPU42や各種制御プログラムを記憶するフラッシュROM43、データを一時記憶するRAM44などを備えている。また、プリンター用PC40は、ユーザーが各種指令を入力するキーボード及びマウス等の入力装置47や、各種情報を表示するディスプレイ48などを備えている。このプリンター用PC40は、ディスプレイ48に表示されたカーソル等をユーザーが入力装置47を介して入力操作するとその入力操作に応じた動作を実行する機能を有している。コントローラー41やHDD45、I/F46、入力装置47、ディスプレイ48などは、バス49によって電気的に接続され、各種制御信号やデータのやり取りができるよう構成されている。
このプリンター用PC40のHDD45には、図示しないアプリケーションプログラムや、印刷ドライバー50、スプールシステム58などが格納されている。印刷ドライバー50は、アプリケーションプログラム側から受けた印刷ジョブをプリンター20で直接印刷処理可能な印刷データへ変換してプリンター20側へ出力(送信)するプログラムである。この印刷ドライバー50は、印刷データを生成する画像処理部52と、バッファ処理部55及びデータ出力部56を含む印刷データ制御部54とを有している。印刷データ制御部54は、生成した印刷データをRAM44にバッファさせるバッファ処理部55と、印刷データのバッファとは非同期にRAM44から該印刷データを読み出し、読み出した印刷データをプリンター20へ出力するデータ出力部56と、を有している。画像処理部52は、アプリケーションプログラムから受けた印刷ジョブの全部又は一部に相当する印刷データを生成し、印刷データ制御部54又はスプールシステム58へ出力する機能を有している。印刷データ制御部54は、印刷ジョブをスプールシステム58へ出力するか、印刷データへ変換してバッファするかを切り替える機能を有している。バッファ処理部55は、画像処理部52から受けた印刷データをRAM44へバッファすると共に、RAM44に記憶された印刷データのバッファ量を監視する機能を有している。データ出力部56は、印刷データのバッファとは非同期に、プリンター20のRAM14の状態に応じてRAM44から印刷データを読み出してI/F46を介してプリンター20へ出力する機能を有している。この画像処理部52や印刷データ制御部54(バッファ処理部55及びデータ出力部56)は、それぞれ、プログラムとしての画像処理モジュール、印刷データ制御モジュール(バッファ処理モジュール及びデータ出力モジュール)として印刷ドライバー50に組み込まれている。そして、これらのモジュールがコントローラー41により実行されることによりそれぞれ上述した機能を発現するものとした。スプールシステム58は、図示しないオペレーティングシステムに組み込まれた印刷に関するシステムであり、印刷ジョブをひとまとまりの印刷データとしてRAM44又はHDD45にスプールする機能を有するスプール処理部59を有している。このスプールシステム58は、印刷データの容量にオペレーティングシステム上の制約が設けられており、所定容量以内(例えば数GB以内など)の印刷データを処理可能となっている。なお、例えば、印刷ジョブは、アプリケーションプログラムに応じたデータであって文字データなどのベクタデータを含むものとしてもよいし、印刷データは、プリンター20の各色のインクに応じたラスタデータなどとしてもよい。
次に、こうして構成された本実施形態のプリンター20の動作について、特に印刷対象である印刷ジョブを印刷データに変換してプリンター20に印刷させる処理について説明する。図2は、コントローラー41のCPU42により実行される印刷制御処理ルーチンの一例を示すフローチャートである。このルーチンは、HDD45に記憶され、印刷処理の実行指令が入力されたあとに実行される。印刷処理の実行指令は、例えば、ディスプレイ48に表示された、図示しないアプリケーションプログラムの編集画面上で画像データを編集したあと、この画面上に表示された印刷実行ボタンをクリックすることにより入力されるものとしてもよい。また、印刷制御処理は、バッファ処理部55及びデータ出力部56など印刷データ制御部54や画像処理部52の各機能によって実行される。ここで、詳しくは後述するが、印刷データの生成処理や印刷データのバッファ処理、印刷データのプリンター20への出力処理は非同期で別々に実行されるが、処理全体の概要を理解しやすいことから、1つの印刷制御処理ルーチンとして以下説明する。
このルーチンを実行すると、CPU42は、入力した印刷ジョブがオペレーティングシステムで規定されている印刷データの許容容量以内であるか否かを判定する(ステップS100)。許容容量以内であるときには、印刷ジョブをスプールシステム58へ出力し(ステップS110)、このルーチンを終了する。印刷ジョブを受けたスプールシステム58では、スプール処理部59により、変換された印刷データをひとまとまりのデータとしてRAM44又はHDD45にスプールする処理を行う。また、スプールした印刷データをプリンター20のRAM14の空き状態に応じてプリンター20へ出力し、印刷処理を実行させるものとした。なお、印刷データへの変換は画像処理部52が実行するものとした。印刷処理では、プリンター20は、紙送りローラー35によりロール紙36から引き出した記録紙Sを印刷ヘッド24に対向するように搬送し、印刷データに基づいてノズル23からインクを記録紙Sへ吐出する処理を行う。このように、印刷データの全データ量がスプールシステム58の許容容量以内であるときには、オペレーティングシステムのスプール機能により印刷を実行する。
一方、ステップS100で印刷データ容量が許容容量を超えているとき、即ち、大容量の印刷ジョブであるときには、CPU42は、ステップS120以降の印刷データバッファ出力処理を実行する。印刷データバッファ出力処理では、スプール処理部59によるスプール処理を介さずに、即ち、スプールシステム58をスルーして印刷ジョブの印刷データをプリンター20側へ出力する直接印刷処理モードで動作するものとした。この印刷データバッファ出力処理では、CPU42は、画像処理部52により、印刷ジョブのうち一部に相当する印刷データを生成する処理を行い(ステップS120)、印刷データ制御部54側に印刷データが入力されるまで待機する(ステップS130)。印刷データの生成処理では、1つの印刷ジョブ全体のうち一部分の印刷データを順次生成する処理を行うものとした。印刷データ制御部54側に印刷データが入力されると、バッファ処理部55により、入力した印刷データをRAM44へバッファする処理を行う(ステップS140)。次に、CPU42は、データ出力部56により、プリンター20のRAM14の空き状態に応じて、RAM44にバッファされている印刷データを、ファーストインファーストアウト(FIFO)方式でI/F46を介してプリンター20側へ出力する処理を行う(ステップS150)。この印刷データの出力処理は、印刷データのバッファ処理と非同期で行うものとした。したがって、プリンター20の印刷処理状況によっては、RAM44での印刷データのバッファ量が変動する。ここでは、バッファ処理部55がRAM44のバッファ量を監視するものとした。具体的には、CPU42は、バッファ処理部55の機能により、RAM44にバッファされている印刷データの容量(以下バッファ済容量と称する)が所定の第1閾値内であるか否かを判定する(ステップS160)。この第1閾値は、単位時間あたりに印刷データをバッファするデータ量を調整するための閾値であり、単位時間あたりの印刷データのバッファ量を制限する第1制限処理を実行するための閾値である。この第1閾値は、プリンター20で割り当てられているRAM14での印刷データの記憶容量に基づいて定められているものとしてもよい。ここでは、プリンター20のRAM14での印刷データの記憶容量に定められているものとした。なお、この第1閾値は、例えばRAM14での印刷データの記憶容量の7割や8割に定められていてもよい。
バッファ済容量が所定の第1閾値内であるときには、バッファが完了した旨の応答を画像処理部52側に応答し(ステップS170)、印刷ジョブが終了したか否かを判定し(ステップS180)、印刷ジョブが終了していないときには上述したステップS120以降の処理を実行する。ここでは、画像処理部52がバッファ完了応答を受けると、ステップS120で次の印刷データを生成する処理を行うものとした。即ち、RAM44にバッファされている印刷データの容量が比較的少ないときには、画像処理部52により次々と印刷データの生成が行われ、バッファ処理部55により次々と印刷データのバッファ処理が行われるのである。一方、ステップS160でバッファ済容量が第1閾値を超えているときには、バッファ済容量が所定の第2閾値内であるか否かを判定する(ステップS190)。この第2閾値は、単位時間あたりの印刷データのバッファ量を調整するための閾値であり、単位時間あたりの印刷データのバッファ量を第1制限処理よりも更に大きく制限する第2制限処理を実行するための閾値である。この第2閾値は、第1閾値よりも大きなデータ容量に定められており、プリンター用PC40で利用可能な印刷データの記憶容量に基づいて定めるものとしてもよく、プリンター用PC40で利用可能な印刷データの記憶容量の7割や8割に定めるものとしてもよい。
ステップS160でバッファ済容量が所定の第1閾値を超え、且つステップS190でバッファ済容量が所定の第2閾値内であるときには、CPU42は、単位時間あたりの印刷データのバッファ量を制限する第1制限処理を実行する。具体的には、CPU42は、バッファ処理部55により、所定の第1待機時間のあいだ待機したあと(ステップS200)、ステップS170でバッファ完了応答を画像処理部52側へ応答し、印刷ジョブが終了していないときには、ステップS120以降の処理を実行する。即ち、バッファ済容量が比較的大きいときには、第1待機時間のあいだ待機したのちに印刷データの生成処理を実行するのである。ここで、第1待機時間は、例えば、プリンター20で利用可能なRAM14の記憶容量や、プリンター20での標準的な印刷速度、画像処理部52での印刷データの生成速度などに応じて経験的に求めるものとしてもよい。例えば、第1待機時間は、データ出力部56での単位時間あたりの印刷データの出力量よりも、画像処理部52での単位時間あたりの印刷データの生成量が上回る時間に設定されているものとしてもよい。こうすれば、プリンター20側で印刷データの受信待ちとなりにくく、印刷処理を効率よく実行することができる。
一方、ステップS190でバッファ済容量が所定の第2閾値をも超えているときには、CPU42は、単位時間あたりの印刷データのバッファ量を第1制限処理よりも大きく制限する第2制限処理を実行する。具体的には、CPU42は、バッファ処理部55により、第1待機時間よりも長い所定の第2待機時間のあいだ待機したあと(ステップS210)、ステップS170でバッファ完了応答を画像処理部52側へ応答し、印刷ジョブが終了していないときには、ステップS120以降の処理を実行する。即ち、バッファ済容量が更に大きいときには、より長い第2待機時間のあいだ待機したのちに印刷データの生成処理を実行するのである。ここで、第2待機時間は、例えば、プリンター20で利用可能なRAM14の記憶容量や、プリンター20での標準的な印刷速度、画像処理部52での印刷データの生成速度などに応じて経験的に求めるものとしてもよい。例えば、第2待機時間は、単位時間あたりの印刷データのバッファ量を第1制限処理よりも大きく制限するものの、データ出力部56での単位時間あたりの印刷データの出力量よりも、画像処理部52での単位時間あたりの印刷データの生成量が上回る時間に設定されているものとしてもよい。こうすれば、第2制限処理の実行により単位時間あたりの印刷データのバッファ量がより抑制されたとしても、プリンター20側で印刷データの受信待ちとなりにくく、印刷処理を効率よく実行することができる。
一方、ステップS180で印刷ジョブが終了する、即ち印刷ジョブの全体が印刷データに変換されたときには、CPU42は、バッファ処理部55により画像処理部52からの印刷終了要求をRAM44にバッファし(ステップS220)、印刷完了した旨の応答を画像処理部52側へ応答する(ステップS230)。また、プリンター20側から印刷完了の応答を受けると、データ出力部56の処理をクローズし(ステップS240)、このルーチンを終了する。なお、印刷完了応答を受けた画像処理部52側では、印刷完了の待機状態へ移行し、プリンター20の状態取得によりプリンター20が印刷完了状態であると、印刷処理を完了する。
次に、画像処理部52、印刷データ制御部54、スプールシステム58及びプリンター20での印刷データバッファ出力処理について説明する。図3は、エラー発生時の処理及び通信の様子をシーケンシャルに示す説明図であり、図4は、データ処理速度を低減する処理の様子をシーケンシャルに示す説明図であり、図5は、経過時間と印刷データのバッファ量との関係の一例の説明図であり、図6は、終了時の処理及び通信の様子をシーケンシャルに示す説明図である。図3,4,6では、説明の便宜のため、各構成により実行されるプロセス間のやりとりをシーケンシャルに示している。なお、以下の説明では、図2に示した印刷制御処理ルーチンと同じ処理については、同じステップ番号を付し、その説明を省略する。まず、印刷データバッファ出力処理を実行すると、画像処理部52から、印刷開始要求をバッファ処理部55へ行い(ステップS300)、バッファ処理部55では、印刷開始要求をデータ出力部56へ行うと共に(ステップS400)、開始要求に対する応答を画像処理部52へ行う(ステップS410)。応答を受けた画像処理部52では印刷ジョブのうち一部分の印刷データの生成処理を行い(ステップS120)、要求を受けたデータ出力部56では、印刷開始指令をスプールシステム58へ出力する(ステップS500)。印刷開始指令を受けたスプールシステム58は、プリンター20へオープン指令を出力し(ステップS600)、プリンター20からの応答をデータ出力部56へ返す処理を行う。なお、以降、スプールシステム58では、スプール処理は行わずに、印刷データをそのままプリンター20へ送信したり(ステップS610)、プリンター20からの応答をそのままデータ出力部56へ返す処理を行う。そして、バッファ処理部55では、画像処理部52からの印刷データが送信されるたび(ステップS310)、RAM44へのバッファを行い(ステップS140)、バッファ完了応答を画像処理部52へ返す処理を繰り返し行う(ステップS170)。また、データ出力部56では、RAM44にバッファされた印刷データをFIFO方式でプリンター20へ出力し、その応答を受ける処理を繰り返す。このように、バッファ処理部55とデータ出力部56とで非同期に印刷データのやりとりを行うのである。
ここで、図3に示すように、この繰り返し処理中に、例えばプリンター20でカバーオープンや印刷用紙切れなどのエラーが発生すると(ステップS700)、プリンター20ではデータチャネルをクローズする一方、スプールシステム58では書込サイズ0の送信が行われ(ステップS620)、全データを書き終わるまでリトライする処理が繰り返される。バッファ処理部55とデータ出力部56とが非同期でない場合には、このリトライ状態でフリーズし、画像処理部52側でのエラー解除処理に移行することができない。特に、スプールシステム58でのスプール処理をスルーして印刷データを画像処理部52からプリンター20へ出力する際には、このリトライ状態でフリーズするのが顕著となる。ここでは、データ出力部56側の処理が滞っても、バッファ処理部55でのバッファ処理は非同期で繰り返し実行される。また、画像処理部52では、定期的なポーリングによりプリンター20の状態取得が行われており(ステップS320)、プリンター20からエラー状態の通知を受けることにより(ステップS710)、エラー解除処理へ移行することができる(ステップS330)。このため、エラー発生時においても、より確実に印刷処理を継続することができるのである。
また、図4に示すように、バッファ処理部55での印刷データのバッファ処理と、データ出力部56での印刷データ出力処理とが並行して行われている際に、プリンター20での処理が高負荷である場合には、RAM44にバッファされた印刷データの出力が滞ることがある。この場合には、バッファ処理部55で監視しているRAM44のバッファ量が第1閾値を超えることから、RAM44にバッファされる単位時間あたりの印刷データ容量をより低減させる第1制限処理を実行する。即ち、第1待機時間のあいだ待機したのち(ステップS200)、バッファ完了応答を画像処理部52へ応答する(ステップS170)。画像処理部52では、この第1待機時間のあいだ印刷データが生成されないから、RAM44にバッファされる単位時間あたりの印刷データ容量がより小さくなる。また、この第1制限処理の実行によっても、RAM44にバッファされた印刷データの容量が第2閾値を超えた場合は、より長い第2待機時間のあいだ待機したのち(ステップS210)、バッファ完了応答を画像処理部52へ応答する第2制限処理を実行する(ステップS170)。図5に示すように、この第1及び第2制限処理によって、RAM44にバッファされる印刷データ量が第1閾値と第2閾値とのあいだに入る傾向になる。このように、プリンター20の状態に応じて、印刷データのバッファ量をより適正なものとすることができるのである。
また、図6に示すように、画像処理部52で、印刷ジョブの印刷データ変換が終了した場合は、印刷終了要求をバッファ処理部55へ出力し(ステップS340)、これを受けたバッファ処理部55では、印刷終了要求についてもバッファし(ステップS220)、印刷終了応答を画像処理部52へ応答する(ステップS230)。これを受けた画像処理部52では、印刷終了の待機状態とする。一方、バッファされた印刷終了要求を受けたデータ出力部56では、印刷終了指令をスプールシステム58へ出力し(ステップS510)、これを受けたスプールシステム58がクローズ指令をプリンター20へ送信する(ステップ630)。プリンターからの印刷完了を受けると、データ出力部56では、本プロセスをクローズする(ステップS230)。その後、画像処理部52では、定期的なポーリングによりプリンター20の状態取得が行われており(ステップS320)、プリンター20から印刷完了状態の通知を受けることにより(ステップS240)、印刷完了状態へ移行する。このように、印刷終了要求までバッファするため、より円滑に印刷処理を終了することができるのである。
ここで、本実施形態の構成要素と本発明の構成要素との対応関係を明らかにする。本実施形態のプリンター20が本発明の印刷装置に相当し、プリンター用PC40が印刷制御装置に相当し、画像処理部52が画像処理部に相当し、RAM44及びHDD45が記憶部に相当し、バッファ処理部55がバッファ処理部に相当し、データ出力部56がデータ出力部に相当し、スプールシステム58がスプールシステムに相当する。なお、本実施形態では、プリンター用PC40の動作を説明することにより本発明の印刷制御方法の一例も明らかにしている。
以上詳述した本実施形態のプリンター用PC40によれば、印刷ジョブの一部に相当する印刷データを生成し、生成した印刷データをRAM44にバッファし、印刷データのバッファとは非同期にRAM44から印刷データを読み出し、読み出した印刷データをプリンター20へ出力する。このように、印刷ジョブの部分ごとに印刷データをバッファするため、例えば大容量の印刷ジョブなどをスプールする際に生じうる記憶量の制限などの制約に影響されずに印刷データを生成することができる。また、印刷データの生成処理と印刷データの出力処理とが非同期で実行されるため、例えば、一方にトラブルが生じても互いに干渉せずに処理を継続することができる。したがって、より確実に印刷処理を実行させることができる。
また、印刷データのバッファ量が所定の第1閾値を超えたときには、単位時間あたりの印刷データのバッファ量をより低減させる第1制限処理を実行するため、RAM44のバッファ量の増加を抑制することができる。このため、バッファ量をより適正なものとすることが可能であり、より確実に印刷処理を実行させることができる。このとき、所定の第1待機時間を経過したのちにバッファ完了応答を行うため、バッファ完了応答を待機させることによって、より容易に記憶部のバッファ量の増加を抑制することができる。また、第1待機時間は、単位時間あたりの印刷データの出力量よりも単位時間あたりの印刷データの生成量が上回る時間に設定されているため、プリンター20側で印刷データの受信待ちとなりにくく、印刷処理を効率よく実行することができる。更に、第1閾値は、プリンター20の印刷データの記憶容量に基づいて定められているため、プリンター20へ出力されるデータ量をプリンター20の記憶容量により近いものとしやすい。このため、印刷装置でより確実に印刷処理を実行することができる。更にまた、第1制限処理によってもRAM44のバッファ量が増加する傾向にある場合でも、第2制限によってRAM44のバッファ量の増加を更に抑制することができる。このため、印刷データのバッファ量を第1閾値から第2閾値の間の範囲にしやすく、RAM44やRAM14などの記憶容量の制限などを考慮して、より確実に印刷処理を実行させることができる。そして、第1制限処理を実行するに際して所定の第1待機時間を経たのちにバッファ完了応答を行い、第2制限処理を実行するに際して、第1待機時間よりも長い所定の第2待機時間を経過したのちにバッファ完了応答を行うため、バッファ完了応答を2段階で待機させることによって、より容易にRAM44のバッファ量の増加を抑制することができる。そして、オペレーティングシステムのスプールシステムによるスプール処理を介さずに印刷データをプリンター20へ出力するため、スプール処理の印刷ジョブの容量の上限などの制限を受けることなく、より確実に印刷処理を実行させることができる。そしてまた、スプールシステム58によるスプール処理での許容容量を超える印刷データをプリンター20へ出力する際に、印刷データをRAM44にバッファさせるため、スプールシステムで印刷処理が実行できない場合でも、確実に印刷処理を実行させることができる。
また、1つの印刷ジョブの印刷データが大容量であるときには、印刷ジョブ自体を分割し複数の印刷ジョブとしてプリンター20側へ出力し、印刷処理を実行することが考えられる。しかしながら、1つの印刷ジョブを複数の印刷ジョブに分割すると、印刷ジョブの処理毎に、給紙動作、ヘッドクリーニング、フラッシング及びホームポジション位置合わせなどを含む初期動作や終了動作が実行され、印刷処理時間が長くなる。特に、ロール紙を用いた連続印刷では、印刷データが膨大となりやすく、印刷ジョブの分割数も多数になりやすい。本発明のプリンター用PC40では、印刷ジョブの一部分ずつをプリンター20へ出力することにより、1つの印刷ジョブを1つの印刷ジョブとして取り扱うため、印刷ジョブを分割して生じる不必要な初期動作や終了動作などを抑制することができ、印刷処理時間が長くなるのをより抑制しつつ、より確実に印刷処理を実行させることができる。
なお、本発明は上述した実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の態様で実施し得ることはいうまでもない。
例えば、上述した実施形態では、第1制限処理や第2制限処理を行うものとしたが、第2制限処理を省略してもよいし、第1制限処理及び第2制限処理の両方を省略してもよい。こうしても、バッファ処理部55とデータ出力部56とが非同期で印刷データのバッファ処理や印刷データの出力処理などを実行するため、より確実に印刷処理を実行させることができる。あるいは、第2制限処理よりも更に単位時間当たりの印刷データのバッファ量が制限される第3制限処理を加えるものとしてもよいし、更に多数の段階の制限処理を行うものとしてもよい。
上述した実施形態では、バッファ済容量が第1閾値を超えた場合に、第1待機時間を経過したあとバッファ完了応答を行うものとして第1制限処理を実行するものとしたが、単位時間あたりの印刷データのバッファ量をより低減させるものとすれば、特にこれに限定されず、例えば、印刷データの生成速度自体を低減してもよいし、生成した印刷データの転送速度自体を低減させてもよい。こうしても、バッファ処理部55とデータ出力部56とが非同期で印刷データのバッファ処理や印刷データの出力処理などを実行するため、より確実に印刷処理を実行させることができる。なお、第2制限処理においても同様である。
上述した実施形態では、データ出力部56はオペレーティングシステムのスプールシステムによるスプール処理を介さずに印刷データをプリンター20へ出力するものとしたが、特にこれに限定されず、オペレーティングシステムやスプールシステムに関係せずに、印刷制御処理ルーチンのステップS120以降の印刷データバッファ出力処理を行うものとしてもよい。こうしても、バッファ処理部55とデータ出力部56とが非同期で印刷データのバッファ処理や印刷データの出力処理などを実行するため、より確実に印刷処理を実行させることができる。
上述した実施形態では、スプールシステム58の許容容量を超えた印刷データについて、印刷制御処理ルーチンのステップS120以降の印刷データバッファ出力処理を行うものとしたが、特にこれに限定されない。例えば、許容容量に関係せず印刷データバッファ出力処理を行うものとしてもよい。こうしても、より確実に印刷処理を実行させることができる。
上述した実施形態では、第1閾値はRAM14の利用可能容量に基づいて定められているものとしたが、特にこれに限定されず、印刷処理をより確実に実行される値に設定してもよい。また、第2閾値は、プリンター用PC40の利用可能な記憶容量に基づいて設定されているものとしたが、第1閾値よりも大きな値であれば特にこれに限定されず、印刷処理をより確実に実行される値に設定してもよい。また、第1待機時間や第2待機時間は、データ出力部56での単位時間あたりの印刷データの出力量よりも、画像処理部52での単位時間あたりの印刷データの生成量が上回る時間に設定されているものとしたが、単位時間当たりの印刷データバッファ量が低減されるものとすれば、特にこれに限定されない。
上述した実施形態では、プリンター20は、大判印刷可能なカラープリンターとしたが特にこれに限定されない。また、プリンター20は、インクを吐出するインクジェット式の印刷機構21を備えたものとしたが、特にこれに限定されず、レーザープリンターとしてもよいし、熱転写プリンターとしてもよいし、ドットインパクトプリンターとしてもよいし、これらのモノクロプリンターとしてもよい。なお、印刷ジョブは、プリンター20で直接印刷できない形式のデータとしてもよい。また、プリンター用PC40のような印刷制御装置としたが、印刷制御方法としてもよいし、これを実行可能なプログラムの形式にしてもよい。