(57)【特許請求の範囲】
【請求項１】
プログラムを記録したコンピュータ読み取り可能な記録媒体において、
前記プログラムは、
印刷データから変換された印刷コマンドをメモリに記録する処理と、
前記記録された印刷コマンドを読み出して、印刷装置に向けて送るための処理と、
印刷コマンドが読み出されると、それが記憶されていた前記メモリの該当領域について書き込み可能とする処理と、
前記メモリ内での印刷コマンドの記録量を示す指標を求める処理と、
前記指標が定められた第１の閾値以上である場合に、前記印刷コマンドをメモリに記録する処理を停止させる処理とをコンピュータに実行させることを特徴とする記録媒体。
【請求項２】
請求項１に記載の記録媒体において、
前記プログラムは、
前記指標が定められた第２の閾値以下である場合に、前記記録された印刷コマンドを読み出す処理を停止させる処理をさらにコンピュータにさらに行わせることを特徴とする記録媒体。
【請求項３】
プログラムを記録したコンピュータ読み取り可能な記録媒体において、
前記プログラムは、
印刷データから変換された印刷コマンドをメモリに記録する処理と、
前記記録された印刷コマンドを読み出して、印刷装置に向けて送るための処理と、
印刷コマンドが読み出されると、それが記憶されていた前記メモリの該当領域について書き込み可能とする処理と、
前記メモリ内での印刷コマンドの記録量を示す指標を求める処理と、
前記指標が定められた第２の閾値以下である場合に、前記記録された印刷コマンドを読み出す処理を停止させる処理とをコンピュータに実行させることを特徴とする記録媒体。
【請求項４】
プログラムを記録したコンピュータ読み取り可能な記録媒体において、
前記プログラムは、
印刷データから変換された印刷コマンドをメモリに記録する処理と、
前記記録された印刷コマンドを読み出して、印刷装置に向けて送るための処理と、
印刷コマンドが読み出されると、それが記憶されていた前記メモリの該当領域について書き込み可能とする処理と、
印刷ジョブが同一ページを複数部印刷する指示を含む場合に、前記変換された印刷コマンドを、ジョブが終了するまで印刷コマンドを保持する性質を有するファイルに格納させる処理をコンピュータに実行させることを特徴とする記録媒体。
【請求項５】
請求項４に記載の記録媒体において、
前記プログラムは、
前記印刷コマンドが、前記ファイルに格納しきれない場合に、格納しきれなかった印刷コマンドを、前記メモリに記録する処理をさらにコンピュータに実行させることを特徴とする記録媒体。
【請求項６】
印刷コマンドの書込・送信を制御する印刷制御方法において、
印刷データから変換された印刷コマンドをメモリに記録する処理と、
前記記録された印刷コマンドを読み出して、印刷装置に向けて送るための処理と、
印刷コマンドが読み出されると、それが記憶されていた前記メモリの該当領域について書き込み可能とする処理と、
前記メモリ内での印刷コマンドの記録量を示す指標を求める処理と、
前記指標が定められた第１の閾値以上である場合に、前記印刷コマンドをメモリに記録する処理を停止させる処理とを行う印刷制御方法。
【請求項７】
請求項６に記載の印刷制御方法において、
前記指標が定められた第２の閾値以下である場合に、前記記録された印刷コマンドを読み出す処理を停止させる処理をさらに行う印刷制御方法。
【請求項８】
印刷コマンドの書込・送信を制御する印刷制御方法において、
印刷データから変換された印刷コマンドをメモリに記録する処理と、
前記記録された印刷コマンドを読み出して、印刷装置に向けて送るための処理と、
印刷コマンドが読み出されると、それが記憶されていた前記メモリの該当領域について書き込み可能とする処理と、
印刷ジョブが同一ページを複数部印刷する指示を含む場合に、前記変換された印刷コマンドを、ジョブが終了するまで印刷コマンドを保持する性質を有するファイルに格納させる処理を行う印刷制御方法。
【請求項９】
請求項８に記載の印刷制御方法において、
前記印刷コマンドが、前記ファイルに格納しきれない場合に、格納しきれなかった印刷コマンドを、前記メモリに記録する処理を行う印刷制御方法。
【請求項１０】
印刷コマンドの書込・送信を制御する印刷制御装置において、
印刷データから変換された印刷コマンドをメモリに記録する手段と、
前記記録された印刷コマンドを読み出して、印刷装置に向けて送るための手段と、
印刷コマンドが読み出されると、それが記憶されていた前記メモリの該当領域について書き込み可能とする手段と、
前記メモリ内での印刷コマンドの記録量を示す指標を求める手段と、
前記指標が定められた第１の閾値以上である場合に、前記印刷コマンドをメモリに記録する処理を停止させる手段とを有する印刷制御装置。
【請求項１１】
請求項１０に記載の印刷制御装置において、
前記指標が定められた第２の閾値以下である場合に、前記記録された印刷コマンドを読み出す処理を停止させる手段をさらに有する印刷制御装置。
【請求項１２】
印刷コマンドの書込・送信を制御する印刷制御装置において、
印刷データから変換された印刷コマンドをメモリに記録する手段と、
前記記録された印刷コマンドを読み出して、印刷装置に向けて送るための手段と、
印刷コマンドが読み出されると、それが記憶されていた前記メモリの該当領域について書き込み可能とする手段と、
印刷ジョブが同一ページを複数部印刷する指示を含む場合に、前記変換された印刷コマンドを、ジョブが終了するまで保持する性質を有するファイルに格納させる手段を有する印刷制御装置。
【請求項１３】
請求項１２に記載の印刷制御装置において、
前記印刷コマンドが、前記ファイルに格納しきれない場合に、格納しきれなかった印刷コマンドを、前記メモリに記録する手段をさらに有する印刷制御装置。
【請求項１４】
印刷データを所定の形式の印刷コマンドに変換し、当該変換された印刷コマンドを第１メモリに記録する変換・記録処理と、
前記第１メモリに記録されている印刷コマンド量の第１メモリの容量に対する割合が、第１閾値以上の場合に、前記変換・記録処理を停止させる第１停止処理と、
当該記録された印刷コマンドを読み出すとともに、当該読み出された印刷コマンドを第２メモリに記録する読出・記録処理と、
第２メモリに記録された印刷コマンドを印刷装置に送信する送信処理と、
前記第１メモリの前記印刷コマンドが読み出された領域を書込可能とする処理を行う解放処理と、
前記第１メモリに記録されている印刷コマンド量の第１メモリの容量に対する割合が、第２閾値以下の場合に、前記読出・記録処理を停止させる第２停止処理と、
前記第２メモリに記録されている印刷コマンド量の第２メモリの容量に対する割合が、第３閾値以上の場合に、前記読出・記録処理を停止させる第３停止処理と、
をコンピュータに実行させるためのプログラムが記録されたコンピュータによって読取可能な記録媒体。
【請求項１５】
印刷データを所定の形式の印刷コマンドに変換し、当該変換された印刷コマンドを第１メモリに記録する変換・記録工程と、
前記第１メモリに記録されている印刷コマンド量の第１メモリの容量に対する割合が、第１閾値以上の場合に、前記変換・記録工程を停止させる第１停止工程と、
当該記録された印刷コマンドを読み出すとともに、当該読み出された印刷コマンドを第２メモリに記録する読出・記録工程と、
第２メモリに記録された印刷コマンドを印刷装置に送信する送信工程と、
前記第１メモリの前記印刷コマンドが読み出された領域を書込可能とする処理を行う解放工程と、
前記第１メモリに記録されている印刷コマンド量の第１メモリの容量に対する割合が、第２閾値以下の場合に、前記読出・記録工程を停止させる第２停止工程と、
前記第２メモリに記録されている印刷コマンド量の第２メモリの容量に対する割合が、第３閾値以上の場合に、前記読出・記録工程を停止させる第３停止工程と、
を備えている印刷制御方法。
【請求項１６】
印刷データを所定の形式の印刷コマンドに変換し、当該変換された印刷コマンドを第１メモリに記録する変換・記録手段と、
前記第１メモリに記録されている印刷コマンド量の第１メモリの容量に対する割合が、第１閾値以上の場合に、前記変換・記録手段を停止させる第１停止手段と、
当該記録された印刷コマンドを読み出すとともに、当該読み出された印刷コマンドを第２メモリに記録する読出・記録手段と、
第２メモリに記録された印刷コマンドを印刷装置に送信する送信手段と、
前記第１メモリの前記印刷コマンドが読み出された領域を書込可能とする処理を行う解放手段と、
前記第１メモリに記録されている印刷コマンド量の第１メモリの容量に対する割合が、第２閾値以下の場合に、前記読出・記録手段を停止させる第２停止手段と、
前記第２メモリに記録されている印刷コマンド量の第２メモリの容量に対する割合が、第３閾値以上の場合に、前記読出・記録手段を停止させる第３停止手段と、
を備えている印刷制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ハードディスクの使用量を節約できる印刷制御方法、当該印刷制御方法を実施するための印刷制御装置、及び当該印刷制御方法をコンピュータに実施させるためのプログラムを記録した記録媒体に関する。
【０００２】
【従来の技術】
印刷装置による印刷を高速で行うために、印刷対象となるイメージデータ等（以下、「印刷データ」と称する）を印刷コマンドに変換する処理と、当該印刷コマンドを印刷装置に送信する処理とを、別プロセスで並列的に実行する印刷制御システムが存在する。
【０００３】
この種の印刷制御システムでは、印刷処理は、次のように行われる。まず、印刷管理部が、アプリケーション（ＡＰ）からの印刷要求を受信して印刷ジョブを発行する。次に、印刷処理部が、当該印刷ジョブを受信して、印刷対象となる印刷データを生成し、この印刷データを印刷装置独自の形式の印刷コマンドに変換し、および、当該印刷コマンドをハードディスク内に中間ファイルとして格納する。中間ファイル内の印刷コマンドは、コマンド送信部により読み出されて、スプーラによってスプールファイルに格納される。そして、デスプーラによって適宜読み出され、印刷装置に転送される。
【０００４】
上記印刷処理部による処理とコマンド送信部による処理とは別個に実行される。しかし、コマンド送信部の処理速度は、印刷装置へのデータ転送速度に依存するため、一般的に、印刷処理部の処理速度よりも遅い。両者の処理速度の違いを吸収するため、１つの印刷コマンドが印刷装置に送信される間に、後続の印刷コマンドが中間ファイルとしてハードディスクに格納される。
【０００５】
【発明が解決しようとする課題】
しかしながら、上述のように印刷コマンドをハードディスクに格納する印刷制御システムの場合、１つのジョブに関するすべての印刷コマンドを、そのジョブが終了するまで保持している。そのため、印刷コマンドがハードディスクにおいて多くの記憶領域を占有することとなる。このため、ハードディスクの容量が小さいと、他のアプリケーションの動作の妨げとなるおそれがあり得る。また、記憶すべき印刷コマンドの量が非常に多い印刷、例えば、大判印刷の場合には、ハードディスクの記憶領域に空きが少ないと、印刷コマンドを記憶させることができなくなる。そのため、途中で印刷が中断してしまう可能性がある。
【０００６】
本発明の目的は、印刷コマンドの量が多い場合でも、少ない記憶領域に印刷コマンドを記憶させることができて、印刷が途中で中断することが起こりにくい印刷制御技術を提供することにある。
【０００７】
【課題を解決するための手段】
前記目的を達成するため、本発明は、印刷データから変換された印刷コマンドをメモリに記録する処理と、前記記録された印刷コマンドを読み出して、印刷装置に向けて送るための処理と、印刷コマンドが読み出されると、それが記憶されていた前記メモリの該当領域について書き込み可能とする処理とをコンピュータに実行させる。
【０００８】
【発明の実施の形態】
以下、図面を参照して、本発明の実施の形態について詳細に説明する。
【０００９】
図１に、本発明が適用される印刷システムの一例を示す。当該印刷システムは、ホストコンピュータ１と印刷装置２とをケーブルを介して接続して構成される。印刷装置２は、印刷対象データ及び当該データに付随する書式情報をホストコンピュータ１から受信したときに、所定の印刷プロセスを実行して印刷用紙に画像を形成する。
【００１０】
印刷装置２としては、前述したような機能を有するプリンタであれば、どのような形式のプリンタであってもよい。例えば、シリアルプリンタ、ページプリンタ等が挙げられる。また、本発明は、種々の用途のプリンタに適用可能である。例えば、次のようなプリンタに適用可能である。第１に、コンピュータ上で生成されたテキスト、画像等を印刷するプリンタがある。第２に、スキャナで生成された画像を印刷するプリンタがある。第３に、ディジタルカメラで生成された画像等を印刷するプリンタがある。さらに、印刷装置２とホストコンピュータ１との接続形態も種々可能である。例えば、ローカル接続、ネットワーク接続のいずれであっても良い。
【００１１】
ホストコンピュータ１は、システムプログラムの制御下において、プログラムの実行、その制御及び監視を行う。具体的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１ａ、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１ｂおよびＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１ｃと、補助記憶装置として、内蔵又は外付けのハードディスク装置ＨＤＤ３とを備える。ＣＰＵ１ａ、ＲＯＭ１ｂおよびＲＡＭ１ｃは、例えば、システムボード上に配置される。ＨＤＤ３には、印刷対象データ、書式情報等を生成するアプリケーションプログラム（ＡＰ）、ホストコンピュータ１を印刷制御装置として機能させるための印刷制御プログラム等の各種プログラムが記録されている。ＣＰＵ１ａは、実行すべきプログラムをＨＤＤ３からＲＡＭ１ｃにロードして、当該プログラムによる処理を実行する。
【００１２】
さらに、ホストコンピュータ１には、モニタ画面を有する表示装置４、各種設定情報を入力するための入力装置５、メディア読取装置６、および、ローカルエリアネットワークとの接続インタフェイスとなる通信制御装置７が接続されている。表示装置４には、ホストコンピュータ１から送られる画像データによる各種画像が表示される。例えば、印刷指示を行うためのダイアログウインドウを、システムプログラム、アプリケーションプログラム、印刷制御プログラム等からの指示に従って表示する。入力装置５としては、キーボード、および、マウス等のポインティングデバイスが接続される。メディア読取装置６としては、ＣＤ−ＲＯＭ、フレキシブルディスク、光磁気ディスク、メモリカード等の可搬型記録媒体からのデータの読み取り、また、書き込み可能な記録媒体の場合には、さらにデータの書き込みを行う、１種または２種以上の装置が接続される。
【００１３】
印刷制御プログラムは、通常、印刷装置２の製造メーカにおいて開発される。具体的には、印刷制御プログラムは、ホストコンピュータ１が読取可能な形態で、可搬型記録媒体、例えば、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ等に記録されて流通する。当該印刷制御プログラムは、印刷装置２を使用するにあたり、メディア読取装置６を通じてホストコンピュータ１に読み取られ、ＨＤＤ３にインストールされる。また、印刷制御プログラムのインストールは、ネットワークを介してダウンロードした印刷制御プログラムを用いて行うこともできる。
【００１４】
次に、ホストコンピュータ１が印刷制御プログラムを実行することで実現される印刷制御装置の機能について、図２を参照して説明する。
【００１５】
図２に、本発明の第１の実施形態の印刷制御装置によって実現される各種機能の構成を示す。図２に示すように、本実施の形態の印刷制御装置は、その機能として、印刷コマンドの生成を行う印刷処理部１２と、生成された印刷コマンドを一時記憶するメモリである共有メモリ１５と、共有メモリ１５に格納されている印刷コマンドを読み出して、印刷装置２に送るためのコマンド送信部１４、スプーラ１７、スプールファイル１８、および、デスプーラ１９と、印刷処理部１２およびコマンド送信部１４の動作を管理する印刷管理部１１、および、両者の管理のためのデータを記憶する制御用メモリ１６とを備える。
【００１６】
印刷処理部１２は、印刷対象となる印刷データを生成すると共に、当該印刷データを印刷装置独自の形式の印刷コマンドに変換する手段として機能する。また、変換した印刷コマンドを、共有メモリ１５に格納する処理を行う手段としても機能する。さらに、印刷処理部１２は、印刷管理部１１から送られた印刷条件に関する各種情報を制御用メモリ１６に設定する処理も行う。なお、印刷条件に関する各種情報の設定は、印刷管理部１１により直接行うようにしてもよい。また、後述するように、メモリ管理部を設けてそれにより行うようにしてもよい。
【００１７】
コマンド送信部１４は、共有メモリ１５に記録された印刷コマンドを読み出し、印刷装置に送信する処理を実行する。具体的には、共有メモリ１５から印刷コマンドを読み出してスプーラ１７に渡す。また、コマンド送信部１４は、共有メモリ１５の、送信した印刷コマンドが格納されていた領域を、新たな印刷コマンドが格納できるように、書込可能とする解放処理を行う。
【００１８】
スプーラ１７は、コマンド送信部１４から送信される印刷コマンドをスプールファイル１８に転送する。デスプーラ１９は、スプールファイル１８にスプールされた印刷データを適宜読み出し印刷装置に転送する。
【００１９】
印刷処理部１２とコマンド送信部１４とは、ＣＰＵ１ａによりそれぞれ独立に処理される。従って、印刷処理部１２とコマンド送信部１４とは、見かけ上、並列的に実行される。印刷管理部１１から印刷処理部１２に印刷ジョブの受付が通知されると、印刷制御装置１０によって実際に印刷が実行される。
【００２０】
共有メモリ１５および制御用メモリ１６は、本実施の形態では、例えば、ＲＡＭ１ｃ内に設けられる。共有メモリ１５および制御用メモリ１６は、いずれも印刷処理部１２およびコマンド送信部１４の両者からアクセスできるように設けられる。共有メモリ１５は、印刷コマンドを一時的に記憶する。共有メモリ１５は、本実施形態では、印刷ジョブ対応に設けられる。すなわち、複数の印刷ジョブがある場合に、それぞれのジョブ毎に共有メモリ１５がＲＡＭ１ｃ内に設けられる。一方、制御用メモリ１６は、印刷コマンドの書込・読出を制御するための制御データを記憶する。制御用メモリ１６に記憶される制御データは、共有メモリ１５が前述したように複数設けられる場合には、それに対応して複数組のデータを記憶する。それらの制御データはジョブ毎に区別される。
【００２１】
ここで、共有メモリ１５は、記憶されているデータが読み出されると、それまでデータが記録されていた領域について、他のデータを格納できるように解放される点である。この点は、ジョブが終了するまで、すべての印刷コマンドを記憶している中間ファイルとは異なる。
【００２２】
前記制御用メモリ１６は、例えば、図３に示すように、共有メモリサイズＭ１６ａと、共有メモリ１５の全書込量Ｗ１６ｂと、共有メモリ１５の全読出量Ｒ１６ｃと、共有メモリ１５内のデータ量（Ｗ−Ｒ）１６ｄと、コマンド送信部１４がアクセスしているデータを示す読出ハンドル１６ｅと、印刷処理部１２がアクセスしているデータを示す書込ハンドル１６ｆと、印刷コマンドのブロックを示すブロックＩＤ１６ｇと、そのブロックが格納されている位置を示すアドレス１６ｈと、印刷コマンドのブロックを示すブロックＩＤ１６ｉと、そのブロックが格納されている位置を示すアドレス１６ｊとを格納している。
【００２３】
メモリサイズＭ１６ａは、共有メモリ１５の領域を設定する際に書き込まれる。なお、このサイズは、固定的に定めること、および、動的に定めることのいずれも可能である。全書込量Ｗは、そのジョブの開始から現時点までの書込量を累積加算した値である。全読出量Ｒは、そのジョブの開始から現時点までの読出量を累積加算した値である。データ量Ｒは、全書込量Ｗと全読出量Ｒとの差で、現時点のメモリ１５内に格納されている印刷コマンド量を表す。読出ハンドル１６ｅは、例えば、コマンド送信部１４がアクセスしているブロックのブロックＩＤ、または、そのアドレスにより示される。書込ハンドル１６ｆは、例えば、印刷処理部１２がアクセスしているブロックのブロックＩＤ、または、そのアドレスにより示される。ブロックＩＤ１６ｇ、１６ｉ…は、共有メモリ１５に格納されているブロックを示す。このブロックの数は、共有メモリ１５の容量と、ブロックの大きさにより決まる。本実施の形態では、複数のブロックを格納することを想定している。ただし、共有メモリ１５は、生成される印刷コマンドのすべてを、それらが同時に存在する状態で格納するに足る容量を持っているとは限らない。そのため、あるブロックの印刷コマンドが読み出された後は、このブロックＩＤは無効とされ、この領域に新たなブロックＩＤの書込が可能とされる。
【００２４】
印刷管理部１１は、例えば、印刷制御装置立ち上げ時に、または、アプリケーションから起動された時に、予め定められた、または、ユーザにより設定された記憶容量を持つ共有メモリ１５をＲＡＭ１ｃ上に確保する。そして、アプリケーションから印刷要求があると、印刷ジョブを発行する。この印刷ジョブを印刷処理部１２に送る。この際、前述した印刷条件に関する各種情報として、例えば、図３に示すメモリサイズＭ、および、最初のブロックを格納すべきアドレス１６ｈを印刷処理部１２に渡す。
【００２５】
次に、図４を参照して、印刷処理部１２の処理手順を説明する。印刷処理部１２では、以下の手順で印刷コマンドデータを共有メモリ１５に出力する。
【００２６】
印刷管理部１１から印刷ジョブが渡されると、印刷処理部１２は、ジョブ開始のための初期設定処理を行う（ステップ２２）。すなわち、印刷ジョブ対応に印刷管理部１１から渡されたメモリサイズＭ、最初の格納アドレスを制御用メモリ１６に格納すると共に、制御用メモリ１６に記録されている全書込量Ｗおよび全読出量Ｒを初期値、例えば、０にセットする。
【００２７】
次に、制御用メモリ１６における共有メモリ１５のサイズＭ、及び、共有メモリ１５内のデータ量（Ｗ−Ｒ）を参照して、共有メモリ１５に空き領域があるか否かを判断する（ステップ２４）。
【００２８】
共有メモリ１５に空き領域がない場合、すなわちＭ−（Ｗ−Ｒ）＝０のとき（ステップ２４、ＮＯ）には、共有メモリ１５に開き領域ができるまで共有メモリ１５へのデータ出力を停止する（ステップ２６）。一方、共有メモリ１５に空き領域がある場合、すなわちＭ−（Ｗ−Ｒ）＞０のとき（ステップ２４、ＹＥＳ）には、印刷データから印刷コマンドへの変換処理を実行するとともに、変換された印刷コマンドを共有メモリ１５の空き領域に記録する（ステップ２８）。なお、最初は、Ｗ＝Ｒ＝０であるから、Ｍ＞０となる。
【００２９】
ここで、印刷コマンドの格納は、印刷コマンドの一定量毎に行う。ここでは、この一定量をブロックと称する。印刷処理部１２は、１ブロック分を共有メモリ１５に書き込むと、そのブロックＩＤと格納アドレスとを、図３に示すように、制御用メモリ１６に格納する。そして、現在、書込を行っているブロックを示すブロックＩＤを書込ハンドル１６ｆに格納する。
【００３０】
次に、書き込んだデータ量を、それまでに書き込まれている全書込量Ｗ１６ｂに加算して、新たな全書込量Ｗを求め、これにより全書込量Ｗ１６ｂを更新する。また、それと共に、制御用メモリ１６に記憶されている全読出量Ｒ１６ｃを参照して、全データ量（Ｗ−Ｒ）を算出して、全データ量（Ｗ−Ｒ）１６ｄを更新する。
【００３１】
上記ステップ２４〜２９は、印刷管理部１１から印刷ジョブの終了が通知されるまで（ステップ３０、ＮＯ）繰り返される。一方、印刷処理部１２は、印刷管理部１１から印刷ジョブの終了が通知されると（ステップ３０、ＹＥＳ）、制御用メモリ１６に対して、ジョブ終了のための処理を行い（ステップ３２）、共有メモリ１５への印刷コマンドデータ出力を終了する。ジョブ終了のための処理としては、例えば、書込ハンドルを０にセットすることが挙げられる。
【００３２】
次に、図５を参照して、コマンド送信部１４の処理手順を説明する。コマンド送信部１４は、印刷管理部１１から印刷コマンドの送出の指示を受けると、共有メモリ１５から印刷コマンドの読み出しを開始する。す。
【００３３】
まず、コマンド送信部１４は、制御用メモリ１６における共有メモリ１５内データ量（Ｗ−Ｒ）１６ｄを参照して、共有メモリ１５内に読み出すべき印刷コマンドが存在するか否かを判断する（ステップ４０）。共有メモリ１５内に読み出すべき印刷コマンドが存在する場合、すなわちＷ−Ｒ＞０のとき（ステップ４０、ＹＥＳ）、コマンド送信部１４は、共有メモリ１５から印刷コマンドを読み出して（ステップ４２）、当該印刷コマンドをバッファ（図示せず）にコピーする（ステップ４３）。この後、共有メモリ１５において、コピーした印刷コマンドが記憶されていた、メモリ領域を書込可能にする（ステップ４４）。その後、順次スプーラ１７に対して送信する（ステップ４６）。
【００３４】
ここで、ステップ４４の処理として、例えば、次のように行う。すなわち、読み出したブロックについてのブロックＩＤを無効化すると共に、読出ハンドルを次に読み出すべきブロックＩＤに書き直す。さらに、全読出量Ｒに、読み出したブロック分のデータ量を加算し、さらに、データ量（Ｗ−Ｒ）を算出する。そして、それぞれを図３に示す制御用メモリ１６の該当個所１６ｃおよび１６ｄに格納して、それぞれを更新する。これにより、共有メモリ１５に、新たに書込可能な領域が確保されることとなる。
【００３５】
上記ステップ４０〜４６は、ジョブが終了するまで繰り返される（ステップ４８）。
【００３６】
なお、上記印刷処理部１２による処理とコマンド送信部１４によるプロセスとは、独立して並列的に実行される。ここで、後者の処理速度は、印刷装置へのデータ転送速度に依存する。従って、共有メモリ１５の容量を印刷装置へのデータ転送速度に基づいて設定することが考えられる。
【００３７】
具体的には、印刷装置へのデータ転送速度が速い場合には、コマンド送信部１４の共有メモリ１５からのデータ読出速度も速くなるため、共有メモリ１５の容量を大きくすることが挙げられる。一方、印刷装置へのデータ転送速度が遅い場合には、コマンド送信部１４の共有メモリ１５からのデータ読出速度も遅くなるため、共有メモリ１５の容量を小さくして、共有メモリ１５以外のプロセスを行うためのＲＡＭ領域を大きくして、システム全体の効率化を図ることができる。
【００３８】
印刷装置へのデータ転送速度は、ポートの種類で予測することができる。具体的には、シリアルポート、パラレルポート、ＵＳＢポート、１３９４ポートの順でデータ転送速度が速くなる。そこで、ポートの種類に応じて、共有メモリ１５の容量を、ユーザの指示に従って設定するようにしてもよい。もちろん、使用ポートを自動判定して、共有メモリ１５の容量を決定するようにしてもよい。
【００３９】
このように、送信された印刷コマンドを記録していたデータ領域を解放して、共有メモリ１５に新たなデータを書込可能にすることによって、ハードディスクに一群の印刷コマンドからなる中間ファイルを格納せずに印刷が可能となる。このため、高速アクセスを実現できる。また、ハードディスクの使用量を節約することができる。具体的には、１画素当たり６色として、１画素を表わすのに２ｂｉｔ／ｄｏｔラ６＝１２ビット必要であり、Ａ４用紙（８ラ１１インチ）で縦及び横方向の解像度をそれぞれ７２０ｄｐｉとすると、Ａ４用紙１枚当たり２×６×８×１１×７２０×７２０＝５４７メガビット（６８メガバイト）のハードディスク領域を必要とする。従って、小容量のメモリ領域を共有メモリスペースとして確保することによって、（６８メガバイト）×（Ａ４用紙の枚数）のハードディスク領域を節約することができる。
【００４０】
また、一般的にアクセス時間の長いハードディスクに印刷コマンドを記憶する代わりに、一般的にアクセス時間の短い共有メモリに記憶しているので、ハードディスクへのアクセス回数を減少させて印刷速度を向上させることができる。
【００４１】
次に、本発明の第２の実施形態について、図面を参照して説明する。本実施の形態は、前述した第１の実施形態と同様のハードウエア資源を用いて実現することができる。
【００４２】
本実施形態は、ホストコンピュータ１が印刷制御プログラムを読み込むことによって実現される。本実施の形態は、図２に示すように、アプリケーション（ＡＰ）からの印刷要求を受けて印刷ジョブを発行する印刷管理部１１と、印刷対象となる印刷データを生成するとともに、当該印刷データを印刷装置独自の形式の印刷コマンドに変換する処理を実行する印刷処理部１２と、前記印刷コマンドを一時的に記憶するためのＲＡＭ１ｃ内に形成される共有メモリ１５と、共有メモリ１５に記録された印刷コマンドを読み出し、印刷装置に送信する処理を実行するコマンド送信部１４と、共有メモリ１５における印刷コマンドの書込・読出を制御するための制御用メモリ１６と、コマンド送信部１４から送信される印刷コマンドをスプールファイル１８に転送するスプーラ１７と、スプールファイル１８にスプールされた印刷データを適宜読み出し印刷装置に転送するデスプーラ１９とを備える。前述したように、本実施の形態の機能構成は、図２に示すものと同様の構成が多い。従って、ここでは相違点を中心として説明する。
【００４３】
前記制御用メモリ１６は、図６に示すように、共有メモリサイズＭ１６ａと、共有メモリ１５の全書込量Ｗ１６ｂと、共有メモリ１５の全読出量Ｒ１６ｃと、共有メモリ１５内のデータ量（Ｗ−Ｒ）１６ｄと、コマンド送信部１４がアクセスしているデータを示す読出ハンドル１６ｅと、印刷処理部１２がアクセスしているデータを示す書込ハンドル１６ｆと、印刷コマンドのブロックを示すブロックＩＤ１６ｇ、１６ｉ、および、それらのアドレス１６ｈ、１６ｊと、共有メモリ１５に書き込まれたデータ量のメモリ容量Ｍに対する割合の閾値である占有率の閾値α１６ｘおよび閾値β１６ｙと、ジョブ終了コマンドフラグ１６ｚとを格納している。当該第２の実施の形態では、共有メモリ１５内のデータ量の共有メモリサイズに対する割合を所定の範囲内に制御する。
【００４４】
なお、上記構成において、印刷処理部１２は、前述した第１の実施形態における機能の他、印刷コマンドの書込を停止する第１停止手段としても機能する。また、コマンド送信部１４は、前述した第１の実施の形態における機能の他、印刷コマンドの読出を停止する第２停止手段としても機能する。
【００４５】
また、上記構成において、共有メモリ１５に書き込まれたデータ量のメモリ容量Ｍに対する割合を用いて、メモリへの格納状態の知るための指標としている。しかし、本発明はこれに限られない。例えば、データ量を絶対量で表すことであってもよい。
【００４６】
ここで、印刷管理部１１から印刷コマンドを生成するよう指示を受けると、印刷処理部１２は、次のように動作する。図７を参照して、印刷処理部１２の処理手順を説明する。印刷処理部１２では、以下の手順で印刷コマンドデータを共有メモリ１５に出力する。
【００４７】
印刷管理部１１から印刷ジョブが入力されると、印刷処理部１２は、まず、前記第１の実施形態の場合と同様のジョブ開始のための初期設定処理を行うと共に、制御用メモリ１６のジョブ終了コマンドフラグ１６ｚを初期化する（ステップ２２２）。
【００４８】
次に、制御用メモリ１６における共有メモリサイズＭ１６ａ、及び、共有メモリ１５内データ量（Ｗ−Ｒ）１６ｄを参照して、Ｋ＝（Ｗ−Ｒ）／Ｍを算出する（ステップ２２３）。そして、得られたＫについて、図６に示す制御用メモリ１６内の占有率の閾値αと比較する。本実施の形態では、α＝０．８に設定してある。従って、Ｋ＞０．８であるか否かを判定する。すなわち共有メモリ１５内のデータ量が共有メモリサイズの８０パーセントを超えるか否かを判断する（ステップ２２４）。本実施形態では、印刷処理部１２でのＫの値の閾値αを０．８に設定している。これは単なる一例に過ぎない。閾値は１より小さな任意の正の値に設定することができる。
【００４９】
Ｋの値が０．８以上、すなわち共有メモリ１５内のデータ量が共有メモリ１５のサイズＭの８０パーセント以上の場合（ステップ２２４、ＮＯ）、共有メモリ１５内のデータ量が共有メモリサイズの８０パーセント未満になるまで共有メモリ１５へのデータ出力を停止する（ステップ２２６）。一方、Ｋの値が０．８未満、すなわち共有メモリ１５内のデータ量が共有メモリサイズの８０パーセント未満の場合（ステップ２２４、ＹＥＳ）には、印刷データから印刷コマンドへの変換処理を実行するとともに、変換された印刷コマンドを共有メモリ１５の空き領域に記録する（ステップ２８）。また、第１の実施形態と同様に、全書込量Ｗの更新処理、および、データ量（Ｗ−Ｒ）を算出して、制御用メモリ１６の該当するデータを更新する（ステップ２２９）。
【００５０】
上記ステップ２２３〜２２９は、印刷管理部１１から印刷ジョブの終了が通知されるまで（ステップ２３０、ＮＯ）繰り返される。一方、印刷処理部１２は、印刷管理部１１から印刷ジョブの終了が通知されると（ステップ２３０、ＹＥＳ）、ジョブ終了処理を行うと共に、制御用メモリ１６のジョブ終了コマンドフラグ１６ｚを設定して（ステップ２３２）、共有メモリ１５への印刷コマンドデータ出力を終了する。ここで、ジョブ終了処理としては、例えば、読出ハンドルを０とすることが挙げられる。
【００５１】
次に、図８を参照して、コマンド送信部１４の処理手順を説明する。
【００５２】
コマンド送信部１４は、制御用メモリ１６における共有メモリ１５内データ量（Ｗ−Ｒ）を参照して、共有メモリ１５内に読み出すべき印刷コマンドが存在するか否かを判断する（ステップ４０）。共有メモリ１５内に読み出すべき印刷コマンドが存在する場合、すなわちＷ−Ｒ＞０のとき（ステップ２４０、ＹＥＳ）、コマンド送信部１４は、制御用メモリ１６における共有メモリサイズＭ１６ａ及び共有メモリ１５内データ量（Ｗ−Ｒ）１６ｄを参照して、Ｋ＝（Ｗ−Ｒ）／Ｍを算出する（ステップ２４１）。得られたＫの値を閾値βと比較する。本実施の形態では、Ｋ＞０．６か否か、すなわち、共有メモリ１５内のデータ量が共有メモリサイズの６０パーセントを超えるか否かを判断する（ステップ２４２）。ここでは、Ｋの値の閾値βを０．６に設定している。これは、単なる一例に過ぎない。閾値βは、印刷処理部で使用するＫの閾値α（本実施形態では０．８）未満の任意の正の値に設定することができる。
【００５３】
Ｋの値が０．６以下、すなわち共有メモリ１５内のデータ量が共有メモリサイズＭの６０パーセント以下の場合（ステップ２４２、ＮＯ）には、制御用メモリ１６を参照して、ジョブ終了コマンドフラグ１６ｚが設定されているか否かを判断する（ステップ２４３）。ジョブ終了コマンドフラグ１６ｚが設定されていない場合（ステップ２４３、ＮＯ）には、共有メモリ１５内のデータ量が共有メモリサイズＭの６０パーセントよりも大きくなるまで、共有メモリ１５からの印刷コマンドの読出を停止する（ステップ２４４）。
【００５４】
このように、図７における、ステップ２２４−ＮＯ、および、ステップ２２６と、ステップ２４２−ＮＯ、および、ステップ２４４とによって、Ｋの値が０．６よりも大きく、かつ、０．８よりも小さくなるように、すなわち共有メモリ１５内のデータ量が共有メモリサイズの６０パーセントよりも大きく、且つ８０パーセントよりも小さくなるように制御される。従って、共有メモリ１５に対する処理に、ＣＰＵ１ａの占有率が集中するのを避け、ＣＰＵ資源をプリンタドライバの各モジュール及びプリンタドライバ以外のアプリケーション、ＯＳ等に割り振ることができ、適切な負荷分散を図ることができる。
【００５５】
一方、Ｋの値が０．６よりも大きい場合、すなわち、共有メモリ１５内のデータ量が共有メモリサイズの６０パーセントよりも大きい場合（ステップ２４２、ＹＥＳ）、または、ジョブ終了コマンドフラグ１６ｚが設定されている場合（ステップ２４３、ＹＥＳ）、すなわち、共有メモリ１５内のデータ量が共有メモリサイズＭの６０パーセント以下であっても、ジョブが終了する場合には、共有メモリ１５から印刷コマンドを読み出して（ステップ２４５）、印刷コマンドをバッファ（図示せず）にコピー（ステップ２４６）した後、共有メモリ１５の、コピーした印刷コマンドが記憶されいた領域を書込可能にする（ステップ２４７）。この後、順次スプーラ１７に対して送信する（ステップ２４８）。上記ステップ２４０〜２４８は、ジョブが終了するまで繰り返される（ステップ２４９）。
【００５６】
図９に、本発明の第３の実施形態にかかる印刷制御装置の要部構成図を示す。本実施の形態は、第１および第２の実施形態において、印刷処理部１２およびコマンド送信部１４が処理していた共有メモリ１５への書込・読出制御を、それらとは別のメモリ管理部２２により処理する構成としたものである。
【００５７】
すなわち、本実施の形態では、印刷処理部１２は、印刷イメージのコマンド変換、および、共有メモリ１５への書き込みを主として行い、コマンド送信部１４は、共有メモリ１５から印刷コマンドの読み出し、印刷コマンドのバッファへのコピー、および、読み出された印刷コマンドを送信することを主として行うこととなる。
【００５８】
次に、本発明の第４の実施の形態について、図面を参照して説明する。本実施の形態は、前述した第１の実施の形態と同様のハードウエア資源を用いて実現することができる。
【００５９】
本実施の形態は、ホストコンピュータ１が印刷制御プログラムを読み込むことによって実現される。本実施形態は、図１０に示すように、基本的な構成は、図２に示す印刷制御装置と同じである。すなわち、印刷管理部１１、印刷処理部１２、共有メモリ１５、コマンド送信部１４、スプーラ１７、スプールファイル１８およびデスプーラ１９を有する。これらについては、前述の図２に示すものと同じ構成である。一方、本実施形態は、共有メモリ１５における印刷コマンドの書込・読出を制御するための第１制御用メモリ２０と、スプールファイル１８における印刷コマンドの書込・読出を制御するための第２制御用メモリ２１とを備える点において第１および第２の実施形態と相違する。ここでは、相違点を中心として説明する。
【００６０】
第１制御用メモリ２０は、図１１に示すように、２０ａから２０ｚまでデータが記録されている。記録されるデータは図６に示すものと同じである。ただし、第２制御用メモリ２１の記録内容と区別するため、例えば、共有メモリサイズＭ１のように、添え字が付されている点において相違する。
【００６１】
同様に、第２制御用メモリ２１には、図１２に示すように、印刷開始時に設定した許容量Ｍ２（例えば共有メモリ１５と同じサイズ）と、スプールファイル１８の全書込量Ｗ２（現在のスプールファイルサイズ）と、スプールファイル１８の全読出量Ｒ２（送信済のデータ量）と、スプールファイル１８内の未送信データ量（Ｗ２−Ｒ２）と、スプーラ１７がアクセスしているデータを示す読出ハンドルと、デスプーラ１９がアクセスしているデータを示す書込ハンドルと、印刷コマンドのブロックを示すブロックＩＤ、および、それらのアドレスと、スプールファイル１８に書き込まれたデータ量のファイル容量Ｍ２に対する割合の閾値である占有率の閾値α２と、ジョブ終了コマンドフラグとが、２１ａから２１ｚまでに記録されている。これらについても、図１２に示すように、添え字２が付されている。
【００６２】
ここで、印刷処理部１２は、印刷コマンドの変換と、それを共有メモリに記録する手段と、後述する第１停止手段とに対応している。また、コマンド送信部１４は、印刷コマンドを読み出す手段と、記録する手段と、第１並びに第２停止手段とに対応している。
【００６３】
まず、図１３を参照して、印刷処理部１２の処理手順を説明する。印刷処理部１２では、以下の手順で印刷コマンドデータを共有メモリ１５に出力する。
【００６４】
印刷管理部１１から印刷ジョブが入力されると、印刷処理部１２は、まず、第１の実施形態の場合と同様に、ジョブ開始処理を行うと共に、第１制御用メモリ２０のジョブ終了コマンドフラグを初期化する（ステップ４５２）。
【００６５】
次に、第１制御用メモリ２０における共有メモリサイズＭ１及び共有メモリ１５内データ量（Ｗ１−Ｒ１）を参照して、Ｋ１＝（Ｗ１−Ｒ１）／Ｍ１を算出する（ステップ４５３）。そして、Ｋ１＞０．８か否か、すなわち共有メモリ１５内のデータ量が共有メモリサイズの８０パーセントを超えるか否かを判断する（ステップ４５４）。本実施形態では、Ｋ１の値の閾値α１を０．８に設定している。ただし、閾値α１の値は一例にすぎない。１より小さな任意の正の値に設定することができる。
【００６６】
Ｋ１の値が０．８以上、すなわち、共有メモリ１５内のデータ量が共有メモリサイズの８０パーセント以上の場合（ステップ４５４、ＮＯ）、共有メモリ１５内のデータ量が共有メモリサイズの８０パーセント未満になるまで共有メモリ１５へのデータ出力を停止する（ステップ４５６）。一方、Ｋ１の値が０．８未満、すなわち、共有メモリ１５内のデータ量が共有メモリサイズの８０パーセント未満の場合（ステップ４５４、ＹＥＳ）には、印刷データから印刷コマンドへの変換処理を実行すると共に、変換された印刷コマンドを共有メモリ１５の空き領域に記録する（ステップ４５８）。
【００６７】
そして、印刷処理部１２は、前述した他の実施形態の場合と同様に、全書込量Ｗ１の更新を行うと共に、（Ｗ１−Ｒ１）を算出して、算出結果を第１制御用メモリ２０の該当個所に格納して、更新する（ステップ４５９）。
【００６８】
上記ステップ４５４〜４５９は、印刷管理部１１から印刷ジョブの終了が通知されるまで（ステップ４６０、ＮＯ）繰り返される。一方、印刷処理部１２は、印刷管理部１１から印刷ジョブの終了が通知されると（ステップ４６０、ＹＥＳ）、ジョブ終了処理を行うと共に、第１制御用メモリ２０のジョブ終了コマンドフラグを設定して（ステップ６２）、共有メモリ１５への印刷コマンドデータ出力を終了する。
【００６９】
次に、図１４を参照して、コマンド送信部１４の処理手順を説明する。
【００７０】
コマンド送信部１４は、図１１に示す、第１制御用メモリ２０における共有メモリ１５内データ量（Ｗ１−Ｒ１）を参照して、共有メモリ１５内に読み出すべき印刷コマンドが存在するか否かを判断する（ステップ４７０）。
【００７１】
共有メモリ１５内に読み出すべき印刷コマンドが存在する場合、すなわちＷ１−Ｒ１＞０のとき（ステップ４７０、ＹＥＳ）、コマンド送信部１４は、図１２に示す、第２制御用メモリ２１における許容量Ｍ２及びスプールファイル１８内の未送信データ量（Ｗ２−Ｒ２）を参照して、Ｋ２＝（Ｗ２−Ｒ２）／Ｍ２を算出する（ステップ４７１）そして、Ｋ２＜０．８か否か、すなわち、スプールファイル１８内の未送信データ量が許容量Ｍ２の８０パーセントを超えるか否かを判断する（ステップ４７２）。ここでは、Ｋ２の値の閾値α２を０．８に設定しているが、この閾値α２の値は一例にすぎない。１より小さな任意の正の値に設定することができる。
【００７２】
Ｋ２の値が０．８以上、すなわちスプールファイル１８内の未送信データ量が許容量Ｍ２の８０パーセント以上の場合（ステップ４７２、ＮＯ）には、スプールファイル１８内の未送信データ量が許容量Ｍ２の８０パーセント未満になるまで、コマンド送信部１４はスプーラ１７に対するコマンド送信を停止する（ステップ４７２ａ）。このようにして、Ｋ２の値が０．８よりも小さくなるように、すなわちスプールファイル１８内の未送信データ量が許容量Ｍ２の８０パーセントよりも小さくなるように、コマンド送信部１４によるスプーラ１７へのコマンド送信が制御される。従って、コマンド送信部１４によるスプーラ１７へのコマンド送信に関する処理に対して、ＣＰＵ１ａの占有率が集中するのを避け、ＣＰＵ資源をプリンタドライバの各モジュール及びプリンタドライバ以外のアプリケーション、ＯＳ等に割り振ることができ、適切な負荷分散を図ることができる。
【００７３】
一方、Ｋ２の値が０．８未満、すなわちスプールファイル１８内の未送信データ量が許容量Ｍ２の８０パーセント未満の場合（ステップ４７２、ＹＥＳ）、コマンド送信部１４は、第１制御用メモリ２０における共有メモリサイズＭ１及び共有メモリ１５内データ量（Ｗ１−Ｒ１）を参照して、Ｋ１＝（Ｗ１−Ｒ１）／Ｍを算出する（ステップ４７３）。Ｋ１＞０．６か否か、すなわち、共有メモリ１５内のデータ量が共有メモリサイズの６０パーセントを超えるか否かを判断する（ステップ４７４）。ここでは、Ｋ１の値の閾値β１を０．６に設定しているが、閾値β１の値は一例に過ぎない。印刷処理部１２で使用するＫ１の閾値α１（本実施の形態では０．８）未満の任意の正の値に設定することができる。
【００７４】
Ｋ１の値が０．６以下、すなわち共有メモリ１５内のデータ量が共有メモリサイズの６０パーセント以下の場合（ステップ７３、ＮＯ）には、第１制御用メモリ２０を参照してジョブ終了コマンドフラグが設定されているか否かを判断する（ステップ４７５）。ジョブ終了コマンドフラグが設定されていない場合（ステップ４７５、ＮＯ）には、共有メモリ１５内のデータ量が共有メモリサイズの６０パーセントよりも大きくなるまで共有メモリ１５からの印刷コマンドの読出を停止する（ステップ４７５ａ）。
【００７５】
このように、図１３に示す、ステップ４５４−ＮＯ、ステップ４５６と、図１４に示す、ステップ４７４−ＮＯ、及び、ステップ４７５ａによって、Ｋ１の値が０．６よりも大きく、且つ、０．８よりも小さくなるように、すなわち、共有メモリ１５内のデータ量が共有メモリサイズの６０パーセントよりも大きく、且つ８０パーセントよりも小さくなるように制御される。従って、共有メモリに対する処理にＣＰＵの占有率が集中するのを避け、ＣＰＵ資源をプリンタドライバの各モジュール及びプリンタドライバ以外のアプリケーション、ＯＳ等に割り振ることができ、さらに適切な負荷分散を図ることができる。
【００７６】
一方、Ｋ１の値が０．６以上、すなわち共有メモリ１５内のデータ量が共有メモリサイズの６０パーセント以上の場合（ステップ４７２、ＹＥＳ）、又はジョブ終了コマンドフラグが設定されている場合（ステップ４７５、ＹＥＳ）、すなわち共有メモリ１５内のデータ量が共有メモリサイズの６０パーセント以下であってもジョブが終了する場合には、共有メモリ１５から印刷コマンドを読み出す（ステップ４７６）。そして、読み出した印刷コマンドをバッファ（図示せず）にコピー（ステップ４７７）した後、共有メモリ１５の、コピーした印刷コマンドのメモリ上の領域を書込可能にする（ステップ４７８）。そして、順次スプーラ１７に対して送信する（ステップ７９）。上記ステップ４７０〜４７９は、ジョブが終了するまで繰り返される（ステップ４８０）。
【００７７】
なお、共有メモリ１５の容量を印刷装置へのデータ転送速度に基づいて設定することが好ましい点に関しては、第１の実施の形態と同様である。
【００７８】
図１５に、本発明の第５の実施形態による印刷制御装置の要部構成図を示す。本実施形態による印刷制御装置では、中間ファイルを備えている。そして、同一ページを複数枚印刷するコピー印刷を行う場合に、共有メモリと中間ファイルとを併用する。
【００７９】
図１５に示すように、本実施形態の印刷制御装置１０は、図２に示す印刷制御装置に中間ファイル１３を追加したものである。ここで、中間ファイル１３は、例えば、ハードディスク３上に構築される。そして、この中間ファイル１３は、共有メモリ１５に比べて大きな記憶容量を持つ。
【００８０】
制御用メモリ１６には、前述した図３に示すデータの他に、図１７に示すデータが格納される。図１７には、印刷コマンドがページ単位でどのデバイス、すなわち、中間ファイル１３および共有メモリ１５のいずれに格納されるかについて示す格納先情報が記録されている。この情報は、印刷管理部１１により決定される。
【００８１】
印刷管理部１１は、例えば、印刷制御装置立ち上げ時に、予め定められた、または、ユーザにより設定された記憶容量を持つ共有メモリ１５をＲＡＭ１ｃ上に確保する。そして、アプリケーションから印刷要求があると、印刷ジョブを発行する。この印刷ジョブを印刷処理部１２に送る。この際、前述した印刷条件に関する各種情報として、例えば、図３に示すメモリサイズＭ、および、最初のブロックを格納すべきアドレス１６ｈを印刷処理部１２に渡す。
【００８２】
次に、本実施の形態による印刷制御装置の動作について説明する。
【００８３】
印刷管理部１１は、図１６に示すように、アプリケーションからの印刷指示を受け付けて、それがどのような印刷であるのかを調べる。すなわち、１部のみの印刷であるのか、複数部印刷（コピー印刷）するのかを判断する（ステップ５１１）。そして、１部のみの印刷である場合には、印刷処理部１２に対し共有メモリ１５への印刷コマンド出力を指示する（ステップ５１２）。なお、この際、図４において述べたと同様に、印刷処理部１２は、印刷に先立って、メモリサイズＭの情報等を、制御用メモリ１６に格納する。この後、印刷処理部１２は、既に述べた実施の形態において行われている、共有メモリ１５を用いた印刷コマンドを一時的に記憶する処理を行う。これについては説明を繰り返さない。
【００８４】
一方、複数部印刷の場合、全ページが中間ファイル１３に格納可能であるかを調べる（ステップ５１３）。これは、印刷管理部１１が、オペレーティングシステムに問い合わせて、ハードディスク上で当該印刷コマンド格納のために割り当てられる領域の大きさを取得すると共に、アプリケーションから送られた印刷データの量を調べて、判断する。ここで、全ページ中間ファイル１３に格納可能の場合、印刷処理部１２に対して印刷コマンドを中間ファイル１３に出力するよう指示する（ステップ５１４）。
【００８５】
印刷処理部１２は、図１８に示すように、印刷イメージのコマンド変換を行った後、生成された印刷コマンドを中間ファイル１３に格納する（ステップ５２１）。この場合、同一ページが複数部印刷されて、複数セットの印刷物を生成することが求められている。しかし、中間ファイル１３では、ジョブが終了するまでは、すべての印刷コマンドが保存されているため、１セット分の印刷コマンドのみの格納となる。
【００８６】
また、ジョブが終了したかを監視する（ステップ５２２）。そして、ジョブが終了するまで、印刷イメージの生成と格納とが繰り返される。一方、ジョブが終了すると、上部終了コマンドを出力して、そのジョブについての印刷コマンドの変換および中間ファイル１３への格納が終了したことを印刷管理部１１に知らせる（ステップ５２３）。
【００８７】
次に、中間ファイル１３に、印刷コマンドの一部しか格納できないと判断される場合には（ステップ５１３、ＮＯ）、印刷管理部１１は、印刷ジョブについてページ単位で格納先を指定する（ステップ５１５）。その指定は、例えば、図１７に示すようなテーブルを作成して行うことができる。作成されたテーブルは制御用メモリ１６に格納される。図１７に示すように、ページＩＤと格納先の組合せで格納される。例えば、第１ページ−中間ファイル、第２ページ−中間ファイル、第３ページ−共有メモリ等のように指定される。この情報は、コマンド送信部がコマンドを読み出す場合に利用される。
【００８８】
印刷処理部１２は、印刷管理部１１から送られる印刷ジョブについて、印刷コマンドへの変換処理を行い、変換後の印刷コマンドについて、制御用メモリ１６に格納される前記図１７に示す宛先情報を参照して、当該印刷コマンドを中間ファイル１３に出力するか、共有メモリ１５に出力するかを決定する。中間ファイル１３が宛先となっている場合には、その印刷コマンドを印刷処理部１２から中間ファイル１３に送る。一方、宛先情報が共有メモリ１５である場合には、既に述べた図４に示す手順に従って印刷コマンドを共有メモリ１５に格納する。その際、図３に示すデータが参照される。
【００８９】
次に、図１９を参照して、コマンド送信部１４の処理手順について説明する。
【００９０】
コマンド送信部１４は、印刷管理部１１からどのページをどのような順で読み出すかの指示を含むコマンド送信指示を受け付ける。そして、まず、中間ファイル１３に該当するファイルが存在するかを調べる（ステップ６７０）。そして、中間ファイル１３に送信すべき印刷コマンドがある場合には、中間ファイルから印刷コマンドを読み出す（ステップ６７４）。そして、読み出した印刷コマンドを図示しないバッファにコピーして、送信する（ステップ６７６）。ここで、共有メモリ１５からの読み出しがあるかを調べる（ステップ６７８）。これは、制御用メモリ１６を調べることで分かる。すなわち、共有メモリ１５において、（Ｗ−Ｒ）＞０である場合には、読み出すべき印刷コマンドが共有メモリ１５に存在することが分かる。また、印刷管理部１１が、図１６において示したように、中間ファイル１３に印刷コマンドを出力することを指示しているか、または、中間ファイルおよび共有メモリに印刷コマンドを出力することを指示しているかにより、判断することもできる。さらに、図１７に示す格納先情報を参照することで知ることもできる。
【００９１】
ステップ６７４〜ステップ６７９は、中間ファイル１３に格納されているすべての印刷コマンドを読み出すまで繰り返される。すべての印刷コマンドを読み出し終わることで、ジョブを終了する（ステップ６７９）。
【００９２】
一方、ステップ６８０〜ステップ６８５までの処理は、図５に示す処理と同じ手順で行われる。従って、ここでは、説明を繰り返さない。なお、共有メモリ１５の場合には、共有メモリ１５への書込が行われることがあるため、印刷コマンドの書込が終了し、読み出すべき印刷コマンドを読み出し終わった時点で、終了する（ステップ６３５）。
【００９３】
なお、本実施の形態においても、共有メモリ１５の容量を印刷装置へのデータ転送速度に基づいて設定することができる。
【００９４】
また、本実施形態では、ページ単位で中間ファイルに格納するか共有メモリに格納するかを判断している。しかし、本発明はこれに限定されない。中間ファイルに格納するか、共有メモリに格納するかを、ページより小さい単位で行ってもよい。例えば、ブロック単位とすることもできる。
【００９５】
さらに、本実施形態についても、図９に示すようなメモリ管理部を設けて、印刷処理部１２およびコマンド送信部１４による共有メモリへの書込・読出の制御をメモリ管理部が行うようにすることができる。
【００９６】
本実施形態では、中間ファイルの作成可能領域に、可能な限りの印刷コマンドを記録する。従って、コピー印刷の場合、中間ファイルが作成された印刷コマンドに関しては、印刷データから印刷装置独自の形式の印刷コマンドへの変換をコピーの回数行う代わりに、中間ファイルから印刷コマンドをコピーの回数読み出して印刷を実行する。一般的に、印刷データから印刷コマンドへの変換処理よりも、中間ファイルから印刷コマンドを読み出すほうが高速であるため、コピー印刷を行う場合には中間ファイルを作成することによって印刷速度を向上させることができる。
【００９７】
さらに、本実施形態によれば、印刷ジョブが大きく、中間ファイルを作成し切れない印刷コマンドに関しても適用可能である。すなわち、第１の実施の形態と同様に、中間メモリを使用して印刷が実行できるので、大判印刷の場合であっても途中で印刷が中断してしまうことはない。
【００９８】
【発明の効果】
本発明によれば、印刷コマンドの量が多い場合でも、少ない記憶領域に印刷コマンドを記憶させることができる。また、印刷が途中で中断することが起こりにくい印刷制御を実現できる。
【図面の簡単な説明】
【図１】本発明が適用される印刷システムの構成示すブロック図である。
【図２】本発明の第１の実施形態による印刷制御装置の要部の構成を示すブロック図である。
【図３】本発明の第１の実施形態において用いられる制御用メモリに格納される制御データの一例を示す説明図である。
【図４】第１の実施の形態による印刷処理部の処理手順を示すフローチャートである。
【図５】第１の実施の形態によるコマンド送信部の処理手順を示すフローチャートである。
【図６】本発明の第２の実施形態において用いられる制御用メモリに格納される制御データの一例を示す説明図である。
【図７】第２の実施の形態に係る印刷処理部の処理手順を示すフローチャートである。
【図８】第２の実施の形態に係るコマンド送信部の処理手順を示すフローチャートである。
【図９】本発明の第３の実施形態に係る印刷制御装置の要部構成を示すブロック図である。
【図１０】本発明の第４の実施形態に係る印刷制御装置の要部構成を示すブロック図である。
【図１１】本発明の第４の実施形態において用いられる制御用メモリに格納される制御データの一例を示す説明図である。
【図１２】本発明の第４の実施形態において用いられる制御用メモリに格納される制御データの一例を示す説明図である。
【図１３】本発明の第４の実施形態に係る印刷処理部の処理手順を示すフローチャートである。
【図１４】第４の実施の形態に係るコマンド送信部の処理手順を示すフローチャートである。
【図１５】本発明の第５の実施形態に係る印刷制御装置の要部構成を示すブロック図である。
【図１６】本発明の第５の実施形態に係る印刷管理部の処理手順を示すフローチャートである。
【図１７】本発明の第５の実施形態において用いられる制御用メモリに格納される制御データの一例を示す説明図である。
【図１８】本発明の第５の実施形態に係る印刷管理部の処理手順を示すフローチャートである。
【図１９】第５の実施の形態に係るコマンド送信部の処理手順を示すフローチャートである。
【符号の説明】
１…ホストコンピュータ
２…印刷装置
３…ハードディスク装置（ＨＤＤ）
４…表示装置
５…入力装置
６…メディア読取装置
７…通信制御装置
１１…印刷管理部
１２…印刷処理部
１３…中間ファイル
１４…コマンド送信部
１５…共有メモリ
１６…制御用メモリ
【図１】
0003575382.tif 000002
【図２】
0003575382.tif 000003
【図３】
0003575382.tif 000004
【図４】
0003575382.tif 000005
【図５】
0003575382.tif 000006
【図６】
0003575382.tif 000007
【図７】
0003575382.tif 000008
【図８】
0003575382.tif 000009
【図９】
0003575382.tif 000010
【図１０】
0003575382.tif 000011
【図１１】
0003575382.tif 000012
【図１２】
0003575382.tif 000013
【図１３】
0003575382.tif 000014
【図１４】
0003575382.tif 000015
【図１５】
0003575382.tif 000016
【図１６】
0003575382.tif 000017
【図１７】
0003575382.tif 000018
【図１８】
0003575382.tif 000019
【図１９】
0003575382.tif 000020