(57)【特許請求の範囲】
【請求項１】
プリンタと、このプリンタに通信可能に接続されて前記プリンタを制御するホスト装置とを備え、
前記プリンタは、
受信バッファとして利用されるメモリと、
前記ホスト装置から送られて来る印刷データを前記受信バッファに受ける受信手段と、
前記受信バッファに受けた印刷データに基づき印刷を行う印刷手段と、
前記プリンタの現在のステータス及びエラーを把握し、把握したステータス及びエラーを表すステータス情報を作成し保持するステータス情報手段と、
前記ホスト装置から送られてくるデータ送信コマンドに応答して、現在保持されている前記ステータス情報を含んだ応答を作成して前記ホスト装置に返送する応答手段と、
を有し、
前記ホスト装置は、
前記印刷データを作成する印刷データ作成手段と、
作成された１つの印刷ジョブにかかる前記印刷データを複数の部分データに分割して、各部分データをそれぞれ含んだ複数の前記データ送信コマンドを作成し順次に前記プリンタへ送信するデータ送信手段と、
各データ送信コマンドに対して前記プリンタから返送される各応答を受け、各応答に含まれるステータス情報を取得するステータス取得手段と、
を備え、
前記印刷データは各ページ別に異なる１又は複数の前記部分データに分けられており、各ページにかかる前記データ送信コマンドの送信に先立って、各ページのコピー枚数の指定を含んだページ開始宣言コマンドを送ることができるようになっており、
前記プリンタは、前記ページ開始宣言コマンドにより通知されたコピー枚数が複枚であるページについて、１ページ分の前記データ送信コマンドの全部が前記受信バッファに蓄積できた場合、この受信バッファに蓄積した１ページ分の前記データ送信コマンドに基づいて、前記コピー枚数分の印刷を実行するようになっており、
前記ホスト装置は、更に、
各ページにかかる前記データ送信コマンドの送信に先立って、各ページのコピー枚数の指定を含んだページ開始宣言コマンドを送信する手段と、
コピー枚数が複数枚であるページについて、１ページ分の前記データ送信コマンドの全部が前記プリンタの受信バッファに蓄積できるか否か、つまりマルチコピー成功か否かを判断するマルチコピー成否判断手段と、
を有し、
前記ホスト装置のデータ送信手段は、前記マルチコピー成否判断手段がマルチコピー失敗を判断したページについて、１ページ分の前記データ送信コマンドの全部を、前記コピー枚数回繰り返して前記プリンタへ送信するようになっている、
印刷システム。
【請求項２】
プリンタを制御するホスト装置であって、前記プリンタが、
受信バッファとして利用されるメモリと、
前記ホスト装置から送られて来る印刷データを前記受信バッファに受ける受信手段と、
前記受信バッファに受けた印刷データに基づき印刷を行う印刷手段と、
前記プリンタの現在のステータス及びエラーを把握し、把握したステータス及びエラーを表すステータス情報を作成し保持するステータス情報手段と、
前記ホスト装置から送られてくるデータ送信コマンドに応答して、現在保持されている前記ステータス情報を含んだ応答を作成して前記ホスト装置に返送する応答手段と、
を有する場合の前記ホスト装置において、
前記印刷データを作成する印刷データ作成手段と、
作成された１つの印刷ジョブにかかる前記印刷データを複数の部分データに分割して、各部分データをそれぞれ含んだ複数の前記データ送信コマンドを作成し順次に前記プリンタへ送信するデータ送信手段と、
各データ送信コマンドに対して前記プリンタから返送される各応答を受け、各応答に含まれるステータス情報を取得するステータス取得手段と、
を備え、
前記印刷データは各ページ別に異なる１又は複数の前記部分データに分けられており、各ページにかかる前記データ送信コマンドの送信に先立って、各ページのコピー枚数の指定を含んだページ開始宣言コマンドを送ることができるようになっており、
前記プリンタは、前記ページ開始宣言コマンドにより通知されたコピー枚数が複枚であるページについて、１ページ分の前記データ送信コマンドの全部が前記受信バッファに蓄積できた場合、この受信バッファに蓄積した１ページ分の前記データ送信コマンドに基づいて、前記コピー枚数分の印刷を実行するようになっており、
前記ホスト装置が、更に
各ページにかかる前記データ送信コマンドの送信に先立って、各ページのコピー枚数の指定を含んだページ開始宣言コマンドを送信する手段と、
コピー枚数が複数枚であるページについて、１ページ分の前記データ送信コマンドの全部が前記プリンタの受信バッファに蓄積できるか否か、つまりマルチコピー成功か否かを判断するマルチコピー成否判断手段と、
を備え、
前記データ送信手段は、前記マルチコピー成否判断手段がマルチコピー失敗を判断したページについて、１ページ分の前記データ送信コマンドの全部を、前記コピー枚数回繰り返して前記プリンタへ送信するようになっている、
ホスト装置。
【請求項３】
プリンタを制御するホスト装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、前記プリンタが、
受信バッファとして利用されるメモリと、
前記ホスト装置から送られて来る印刷データを前記受信バッファに受ける受信手段と、
前記受信バッファに受けた印刷データに基づき印刷を行う印刷手段と、
前記プリンタの現在のステータス及びエラーを把握し、把握したステータス及びエラーを表すステータス情報を作成し保持するステータス情報手段と、
前記ホスト装置から送られてくるデータ送信コマンドに応答して、現在保持されている前記ステータス情報を含んだ応答を作成して前記ホスト装置に返送する応答手段と、
を有する場合の前記記録媒体において、
前記ホスト装置が、
前記印刷データを作成する印刷データ作成手段と、
作成された1つの印刷ジョブにかかる前記印刷データを複数の部分データに分割して、各部分データをそれぞれ含んだ複数の前記データ送信コマンドを作成し順次に前記プリンタへ送信するデータ送信手段と、
各データ送信コマンドに対して前記プリンタから返送される各応答を受け、各応答に含まれるステータス情報を取得するステータス取得手段と、
を備え、
前記印刷データは各ページ別に異なる１又は複数の前記部分データに分けられており、各ページにかかる前記データ送信コマンドの送信に先立って、各ページのコピー枚数の指定を含んだページ開始宣言コマンドを送ることができるようになっており、
前記プリンタは、前記ページ開始宣言コマンドにより通知されたコピー枚数が複枚であるページについて、１ページ分の前記データ送信コマンドの全部が前記受信バッファに蓄積できた場合、この受信バッファに蓄積した１ページ分の前記データ送信コマンドに基づいて、前記コピー枚数分の印刷を実行するようになっており、
前記ホスト装置が、更に、
各ページにかかる前記データ送信コマンドの送信に先立って、各ページのコピー枚数の指定を含んだページ開始宣言コマンドを送信する手段と、
コピー枚数が複数枚であるページについて、１ページ分の前記データ送信コマンドの全部が前記プリンタの受信バッファに蓄積できるか否か、つまりマルチコピー成功か否かを判断するマルチコピー成否判断手段と、
を備え、
前記データ送信手段は、前記マルチコピー成否判断手段がマルチコピー失敗を判断したページについて、１ページ分の前記データ送信コマンドの全部を、前記コピー枚数回繰り返して前記プリンタへ送信するようになっている、
記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は印刷システムに関する。
【０００２】
【従来の技術】
パーソナルコンピュータのようなホスト装置と、ホスト装置から印刷データを受けて印刷を行うプリンタとからなる印刷システムが知られている。印刷システムに要求される機能や性能はますます高度化してきている。そのため、プリンタは高性能のＣＰＵと大容量のメモリと高速・高機能のエンジンとを備えて高級化する傾向にある。その一方で、プリンタとして最低限度の機能、典型的にはビットマップ展開されたイメージデータをホスト装置から受けて単に印刷するだけの機能しか基本的に備えていないプリンタもあり、この種のプリンタ（ダムプリンタ又はホストベースドプリンタなどど呼ばれる）も価格の安さなどの理由から、それなりの需要がある。
【０００３】
【発明が解決しようとする課題】
ユーザにとってのダムプリンタの魅力は、第１に値段の安い点であり、第２にコントロールパネルの面倒な操作が不要な点である。一方、ダムプリンタの欠点は機能が低いことである。よって、メーカとしては、ダムプリンタの設計にあたり、できるだけ低価格にするために、必然的に能力の高くない部品を用い、コントロールパネルは完全に排除し、しかし、できるだけ高い印刷性能・機能を実現できるように努力しなければならない。
【０００４】
従って、本発明の目的は、ダムプリンタを用いた高機能の印刷システムを提供することにある。
【０００５】
【課題を解決するための手段】
本発明の印刷システムは、プリンタと、このプリンタに通信可能に接続されてプリンタを制御するホスト装置とを備える。プリンタは、受信バッファとして利用されるメモリと、ホスト装置から送られて来る印刷データを受信バッファに受ける受信手段と、受信バッファに受けた印刷データに基づき印刷を行う印刷手段と、プリンタの現在のステータス及びエラーを把握し、把握したステータス及びエラーを表すステータス情報を作成し保持するステータス情報手段と、ホスト装置から送られてくるデータ送信コマンドに応答して、現在保持されているステータス情報を含んだ応答を作成してホスト装置に返送する応答手段とを備える。ホスト装置は、印刷データを作成する印刷データ作成手段と、作成された１つの印刷ジョブにかかる印刷データを複数の部分データに分割して、各部分データをそれぞれ含んだ複数のデータ送信コマンドを作成し順次にプリンタへ送信するデータ送信手段と、各データ送信コマンドに対してプリンタから返送される各応答を受け、各応答に含まれるステータス情報を取得するステータス取得手段とを備える。さらに、前記印刷データは各ページ別に異なる１又は複数の前記部分データに分けられており、各ページにかかる前記データ送信コマンドの送信に先立って、各ページのコピー枚数の指定を含んだページ開始宣言コマンドを送ることができるようになっている。そして、プリンタは、ページ開始宣言コマンドにより通知されたコピー枚数が複枚であるページについて、１ページ分のデータ送信コマンドの全部が受信バッファに蓄積できた場合、この受信バッファに蓄積した１ページ分のデータ送信コマンドに基づいて、前記コピー枚数分の印刷を実行するようになっている。また、ホスト装置は、各ページにかかるデータ送信コマンドの送信に先立って、各ページのコピー枚数の指定を含んだページ開始宣言コマンドを送信する手段と、コピー枚数が複数枚であるページについて、１ページ分の前記データ送信コマンドの全部が前記プリンタの受信バッファに蓄積できるか否か、つまりマルチコピー成功か否かを判断するマルチコピー成否判断手段とを更に有する。そして、ホスト装置のデータ送信手段は、マルチコピー成否判断手段がマルチコピー失敗を判断したページについて、１ページ分の前記データ送信コマンドの全部を、コピー枚数回繰り返してプリンタへ送信するようになっている。
【０００６】
このシステムによれば、ホスト装置は、印刷データを複数の部分データ（例えば、各ページ別及び各バンド別に分けられたバンドデータ）に分けて、各部分データを各データ送信コマンドにしてプリンタに送信するが、その都度にプリンタからの応答を受けて、プリンタの現在のステータスやエラー状況を把握することができる。そして、この把握したステータスやエラー状況をユーザに知らせる。従って、ユーザはホスト装置のユーザインタフェース画面上でプリンタの現在状態を知ることができる。また、ホスト装置は、把握したステータスやエラー状況を、後続のデータ送信を継続したり、控えたり、再送したり、消去したりといった制御に活用したり、ユーザに対する適切な情報表示に活用したりすることができる。従って、プリンタ自体は安価な簡単な構造であっても、ホスト装置側でかなり高機能の印刷制御を行うことができる。
【０００７】
好適な実施形態では、ホスト装置は、データ送信コマンドを送信していないときに、ステータス情報を要求するステータス要求コマンドをプリンタに対して送信するステータス要求手段を更に備えている。これにより、印刷データの送信前や、エラー発生などで印刷データの送信を止めているようなときであっても、ホスト装置はプリンタのステータスを随時に把握して、次の適切な動作を決めていくことができる。
【０００８】
好適な実施形態では、プリンタは、ホスト装置からのメモリサイズ問い合わせに応答してメモリのサイズをホスト装置に通知する手段を更に有し、また、ホスト装置は、１つの印刷ジョブにかかる印刷データを作成する前に、プリンタにメモリサイズ問い合わせを送って、プリンタからメモリサイスの通知を受ける手段を更に備えている。ホスト装置の印刷データ作成手段は、イメージデータを全てビットイメージに展開して印刷データを作成するが、その際、ビットイメージに関して解像度又は階調深さの異なる複数の送信モードを予め有していて、プリンタから通知されたメモリサイズに応じて適切な送信モードを選択し、選択した送信モードに従って印刷データを作成する。これにより、例えば、メモリサイズがより小さければ、より低い解像度と階調深さをもったビットイメージを作成するというように、プリンタがもつメモリサイズの範囲内でプリンタが処理可能な印刷データを作成することができる。そのため、プリンタのメモリサイズが小さくても、正常な印刷が可能である。
【０００９】
好適な実施形態では、上述の部分データは各ページを分割した各バンド単位のバンドデータである。そして、プリンタの印刷手段は、１つの印刷ジョブにかかる印刷データの最初の部分のうち１ページ分より少ない所定バンド数のバンドデータを受信バッファに受信した時点で印刷を開始する。また、プリンタの印刷手段は、上記所定バンド数のバンドデータを受信する前に受信バッファが満杯になったときは、その時点で印刷を開始する。これにより、プリンタのメモリサイズが小さくても、正常な印刷が可能である。
【００１０】
好適な実施形態では、プリンタが返信する応答には、受信バッファが満杯か否かを示すバッファフル情報が含まれている。そして、ホスト装置は、プリンタからの応答に含まれるバッファフル情報が受信バッファの満杯を示しているときには、後続のデータ送信コマンドの送信を一時控え、その後にステータス要求コマンドをプリンタに繰り返し送って、その応答から受信バッファの満杯が解消されたかを判断する。受信バッファの満杯が解消されると、ホスト装置は後続のデータ送信コマンドの送信を再開する。これにより、プリンタのメモリサイズが小さくても、正常な印刷が可能である。
【００１１】
好適な実施形態では、印刷データは各ページ別及び各バンドのバンドデータに分けられており、ホスト装置は、各ページのバンドデータの送信に先立って、各ページのコピー枚数の指定を含んだページ開始宣言コマンドを送信する。また、ホスト装置は、コピー枚数が複数枚であるページについて、１ページ分のバンドデータの全部がプリンタの受信バッファに蓄積できるか否か（つまり、マルチコピー成功か否か）を判断し、マルチコピー失敗と判断したページについては、１ページ分のバンドデータの全部を、コピー枚数回繰り返してプリンタへ送信する。プリンタは、上記ページ開始宣言コマンドにより通知されたコピー枚数が複枚であるページについて、１ページ分のバンドデータの全部が受信バッファに蓄積できた場合には、この受信バッファに蓄積した１ページ分のバンドデータを用いて、コピー枚数分の印刷を繰り返す。これにより、プリンタのメモリサイズが小さくてもマルチコピー印刷（複数部印刷）が正常に行える。
【００１２】
好適な実施形態では、プリンタは、各ページの印刷が完了したときページ印刷完了の通知をホスト装置に送る。ホスト装置は、印刷データをページ単位で管理しており、既にプリンタへ送信したページの印刷データをページ印刷完了の通知を受けるまで保持する。これにより、プリンタ側でエラーが生じてページの印刷を最初からやり直す必要が生じた場合、プリンタのメモリが小さくてそのページ全部のデータを保持してなくても、ホスト装置からそのデータを再送して印刷をやり直せる。
【００１３】
好適な実施形態では、ホスト装置は、プリンタへ送信したページの順序を示したキューを有しており、ページ印刷完了の通知を受ける都度に、キューの先頭のページにかかる印刷データを破棄する。これにより、簡単な構成で、印刷完了で保持不要となったページのデータを確実に破棄できる。
【００１４】
好適な実施形態では、ホスト装置は、プリンタからの応答に含まれるステータス情報がエラーの発生を示しているとき、発生したエラーの種類を判別し、判別したエラー種類に応じたエラー処理を行う。これにより、プリンタがエラー処理機能を持ってなくても、適切なリラー処理が行える。
【００１５】
好適な実施形態では、ホスト装置は、印刷中だけでなくアイドル中も随時にプリンタにステータス情報を要求してプリンタのステータスをチェックし、問題がある場合には印刷データの送信を事前に停止する又は途中で中止する。
【００１６】
本発明のホスト装置は、典型的にはコンピュータにより実施されるが、そのためのプログラムは、記録ディスクや半導体メモリや通信信号などのさまざまな形態の媒体によってコンピュータにインストール又はロードすることができる。
【００１７】
【発明の実施の形態】
図１は、本発明の一実施形態に従うダムプリンタを用いた印刷システムの全体構成を示す。
【００１８】
ホストコンピュータ１にダムプリンタ３が接続されている。ホストコンピュータ１は、ダムプリンタ１を制御するためのプログラムモジュールとして、プリンタドライバ５及びプリントモニタ９を備える。
【００１９】
プリンタドライバ５は、プリンタ３のステータス設定／表示、ビットマップ展開されたイメージデータ（ビットイメージ）の生成、及び、プリントモニタ５への印刷データの生成などを行うものである。プリンタドライバ５は、ステータス設定／表示をするためのグラフィックユーザインタフェース画面を、ホストコンポユータ１１のディスプレイに表示し、そして、マウスやキーボードなどの入力装置１３からのユーザ命令に応答して動作する。プリンタドライバ５は、生成したプリントモニタ５への印刷データを、ＯＳがもつスプーラ７に渡す。
【００２０】
プリントモニタ９は、プリンタドライバ３の生成した印刷データを元にプリンタ３とのプロトコルに従ったコマンドの作成、プリンタ３とのコマンドと応答のやり取り（プリンタ３とのステータスのやり取りが含まれる）、及び、エラー／ワーニング表示などを行うものである。プリントモニタ９は、エラー／ワーニング表示を行うためのグラフィックユーザインタフェース画面を、ディスプレイ１１に表示し、そして、マウスやキーボードなどの入力装置１３からのユーザ命令に応答して動作する。プリントモニタ９は、プリンタドライバ３の生成した印刷データを、スプーラ７から受け取る。
【００２１】
ダムプリンタ３は、例えば、電子複写方式で印刷を行うページプリンタである。このプリンタ３は情報表示や設定を行うためのコントロールパネルを持たず（せいぜい、印刷中に明滅するようなＬＥＤランプしか持たない）、代わりに、プリンタドライバ５及びプリントモニタ９が、そのユーザインタフェース画面上でプリンタ３に関する情報表示や設定を行えるようにする。プリンタドライバ５のユーザインタフェース画面上で設定できる事項は、例えば、トナーカウンタリセット、感光体寿命カウンタのリセット、トナー無しエラー発生時の印刷停止／無視の選択などである。また、プリンドライバ５のユーザインタフェース画面上に表示される情報は、主としてプリンタ３のステータスであって、そのプリンタステータスには例えば、トナー残量、延べ印刷枚数、感光体寿命、給紙装置オプションの有無、搭載ＲＡＭサイズ、通信モード、節電モード、用紙残量、給紙装置用紙サイズなどがある。また、プリントモニタのユーザインタフェース画面に表示される情報は主としてエラーやワーニングに関するものであって、例えば、エラー／ワーニングの通知、エラーの解除、致命的エラー発生時のプリンタ電源ＯＮ／ＯＦＦ確認、トナー無しエラー発生時の（印刷停止が選択されていた場合の）印刷停止の通知とその解除などである。
【００２２】
プリントモニタ９とプリンタ３との間では、所定の通信プロトコルに従って、プリントモニタ９からプリンタ３へコマンドが送られ、プリンタ３からプリントモニタ９へ応答が返される、という動作が繰り返される。コマンドと応答は必ず対になっている。コマンドには、プリンタ３のステータスを問合せるもの、印刷ジョブやページやバンドの開始を宣言するもの、プリンタ２にバンドのビットイメージを送信するものものなど、種々のものがある。応答は、対応するコマンドの受け取りをプリンタ３が完了した直後にプリンタ３から返信可能になる。応答には、この応答を返信可能となった時点でのプリンタ３のステータスやエラーの情報が含まれる。
【００２３】
プリンタ３は、プリントモニタ９からのコマンドをＲＡＭ２３内の受信バッファに受信する機能、受信したコマンドを解釈する機能、受信したコマンドに含まれるビットイメージに伸張処理や輪郭スムージング処理などの前処理を施した上でそのビットイメージを元にパルス幅変調されたレーザパルス信号を生成する機能、そのレーザパルス信号を用いて電子写真方式により用紙上に印刷する機能、プリンタ３のステータスやエラーをチェックする機能、チェックしたスタータスやエラーの情報を上記コマンドに対する応答に含ませてプリントモニタ９に返信する機能などを有する。これらの機能のうち、プリンタ３内のＣＰＵ２１が行うものは、主に、コマンドの解釈、ステータス・エラーのチェック、及びコマンドに対する応答の生成・返信である。上述したビットイメージの前処理及びレーザパルス信号生成は専用ハードウェアである印刷前処理回路２７が行ない、用紙への印刷は専用メカニズムである印刷エンジン２９が行う。また、受信したコマンドを受信バッファに書き込んだり、受信バッファ内のビットイメージを印刷前処理回路２７へ転送する作業は、専用ハードウェアであるＤＭＡコントローラ２５が行う。
【００２４】
このプリンタ３は、上位言語で書かれた印刷データを元にビットイメージを作成する機能は有していない。代わりに、上述したようにプリンタドライバ５がビットイメージ展開処理を行う。また、プリンタ３が受信バッファやワーク領域として使うＲＡＭ２３の容量は比較的に小さく、受信バッファに１ページ分のビットイメージを完全に格納できる保証はない。しかし、そうであっても正常に印刷が行えるように、プリントモニタ９がプリンタステータスに応じてビットイメージの送信を制御する。また、プリンタ９は、フライングスタート機能、つまり受信バッファに１ページ分のイメージデータが貯まらなくても所定量（例えば数バンド分）だけデータが貯まった時点で、そのページの印刷処理を開始する機能を有している。これらの点が相俟って、プリンタ３内のＣＰＵ２１は低機能でよく、ＲＡＭ２３は小容量で済む。よって、プリンタ３は低コストとすることができる。
【００２５】
プリントモニタ９からプリンタ３へ送るコマンドには、例えば次のようなものがある。
【００２６】
（１）ジョブ開始宣言
このコマンドは、１つの印刷ジョブの開始を宣言し、ジョブ単位でビットイメージの解像度（例えば、６００／３００ｄｐｉ）の設定、ビットイメージの階調深さの精／粗（例えば、３ビット／２ビット）の設定、輪郭スムージング処理のＯＮ／ＯＦＦ、トナーセーブのＯＮ／ＯＦＦ、用紙種類の設定などをプリンタ３に指定する。このコマンドに対するプリンタ３からの応答には、その時点でのプリンタステータスやエラーの情報が含まれる。
【００２７】
（２）ジョブ終了宣言
このコマンドは、１つの印刷ジョブの終了を宣言する。ジョブ開始宣言とジョブ終了宣言は必ず対になる。このコマンドに対するプリンタ３からの応答には、その時点でのプリンタステータスやエラーの情報が含まれる。
【００２８】
（３）ページ開始宣言
このコマンドは、１つのページの開始を宣言し、ページ単位で用紙サイズ、１バンドのライン数と幅、マージン、有効ライン数、有効印刷幅、総バンド数、マルチコピー枚数などの設定をプリンタ３に指定する。このコマンドに対するプリンタ３からの応答には、その時点でのプリンタステータスやエラーの情報が含まれる。
【００２９】
（４）ページ終了宣言
このコマンドは１つのページの終了を宣言する。ページ開始宣言とページ終了宣言は必ず対になり、この対はジョブ開始宣言とジョブ終了宣言の対の間に入れらえる。このコマンドに対するプリンタ３からの応答には、その時点でのプリンタステータスがやエラーの情報含まれる。
【００３０】
（５）バンド送信宣言
このコマンドは、１つのバンドを構成するデータ（圧縮／非圧縮の指定、データサイズの指定、及びビットイメージそれ自体）をプリンタ３に送信する。バンド送信宣言はページ開始宣言とページ終了宣言の対の間に入れられる。プリンタ３は、ＲＡＭ２３内の受信バッファ容量が、バンド送信宣言で指定されたデータサイズ以上であるときにのみ、バンド送信宣言を受け付ける。このコマンドに対するプリンタ３からの応答には、その時点でのプリンタステータスやエラーの情報が含まれる。
【００３１】
（６）構成情報要求
このコマンドは、プリンタ３の構成情報（プリンタ３の電源ＯＮ中変化しない固定的な情報で、受信バッファの総サイズや給紙装置の装着状態など）をプリンタ３に要求する。プリンタ３は何時でもこのコマンドを受け付け可能である。このコマンドに対するプリンタ３からの応答には、構成情報だけでなく、その時点でのプリンタステータスやエラーの情報が含まれる。
【００３２】
（７）設定情報要求
このコマンドは、プリンタ３の設定情報（直前の通信で成立した通信モード、現在の節電モード、給紙装置の用紙サイズなど）をプリンタ３に要求する。プリンタ３は何時でもこのコマンドを受け付け可能である。このコマンドに対するプリンタ３からの応答には、設定情報だけでなく、その時点でのプリンタステータスやエラーの情報が含まれる。
【００３３】
（８）ステータス要求
このコマンドは、プリンタ３のステータス及びエラーの情報をプリンタ３に要求する。プリンタ３は何時でもこのコマンドを受け付け可能である。このコマンドに対するプリンタ３からの応答には、その時点でのプリンタステータスやエラーの情報が含まれる。前述したようにプリンタステータスには、例えば、トナー残量、延べ印刷枚数、感光体寿命、給紙装置オプションの有無、搭載ＲＡＭサイズ、通信モード、節電モード、用紙残量、給紙装置用紙サイズなどがある。
【００３４】
以上の他、プリンタ３へ各種ステータスの設定、例えば、トナーカウンタのリセットや値設定、感光体寿命カウンタのリセットや値設定、節電モード設定、プリンタ初期化など、のためのコマンドもある。
【００３５】
図２は、本印刷システムの起動時に行われるプリントモニタ９（ホストコンピュータ１）とダムプリンタ３との間の通信手順を示す。プリントモニタ９はデバイスＩＤをプリンタ３から取得して、当該プロトコルに対応したプリンタであることを確認する。次に、プリントモニタ９は、構成情報要求をプリンタ３に送信して応答を受信し、受信バッファサイズや給紙装置の有無などを認識する。
【００３６】
図３は、印刷処理を行っていないアイドル時におけるプリントモニタ９（ホストコンピュータ１）とダムプリンタ３との間の通信手順を示す。アイドル時でも、プリントモニタ９は必要に応じて又は定期的に、ステータス要求をプリンタ３に送って応答を受信し、プリンタ３のステータスを監視することができる。アイドル時にもプリンタのステータスを監視することにより、プリンタにエラーや支障（例えば、用紙切れ、トナー切れ、カバーオープン等）があればユーザにエラーやワーニングを通知すると共に、ユーザが印刷を命じても印刷を開始しない等の制御を行うことができる。
【００３７】
図４と図５は、印刷時のプリンタドライバ５とプリントモニタ９の動作をそれぞれ示す。
【００３８】
図４に示すように、プリンタドライバ５は、まず、プリントモニタ９を通じてプリンタ３からステータス情報を取得することにより、プリンタ３のＲＡＭ２３のサイズを把握する（Ｓ１）。次に、把握したＲＡＭサイズに基づいて、ビットイメージを送信するときの送信モードを決定する（Ｓ２）。ここで、送信モードとは、ビットイメージの解像度（例えば３００／６００ｄｐｉ）と階調深さ（例えば精／粗）のグレードを示すもので、例えば第１モード：３００ｄｐｉ‐粗階調、第２モード：３００ｄｐｉ‐精階調、第３モード：６００ｄｐｉ‐粗階調、第４モード：６００ｄｐｉ‐精階調のように複数種類ある。これらの中から、例えばＲＡＭサイズが２ＭＢならば第１〜第３モードの中からユーザの要求に最も近いモードを選び、ＲＡＭサイズが４ＭＢならば第１〜第４モードの中からユーザの要求に最も近いモードを選ぶというように、そのＲＡＭサイズで実現できるモードの中からユーザの選択に最も近いものを決定する。
【００３９】
次に、プリンタドライバ５は、ＯＳのグラフィックデバイスインタフェースから印刷ジョブのデータを受け、これをプリントモニタ９が必要とするデータ形式の印刷データに変換して、この印刷データをスプーラ７に渡す（Ｓ３）。１つの印刷ジョブの印刷データは、各ページ毎のページリソースデータに分かれており、各ページリソースデータは各バンド毎のバンドデータに分かれている。スプーラ７に渡された印刷データは、スプーラ７からプリントモニタ９に入力される。
【００４０】
図５に示すように、プリントモニタ９は、スプーラ７から各ジョブ、各ページ及び各バンド単位に区分された印刷データを入力し（Ｓ１１）、これをキューに入れることにより、入力した印刷ジョブ順序、ジョブ内のページリソース順序、及びページリソース内のバンド順序を明確に管理する（Ｓ１２）。これらの順序は、ページの印刷完了した時のページリーソースデータの消去や、エラー時のページリソースデータ又はバンドデータの再送や、ジョブキャンセル時のデータ消去などを行うときに利用される。続いて、プリントモニタ９は、管理した印刷データをプリンタ３との通信プロトコルに沿った形式に直して、これをプリンタ３へ送るためにプリンタ３と通信する（Ｓ１３）。
【００４１】
図６は、図５のステップ１３でプリントモニタ９が行うプリンタ３との通信動作であって、単ページ印刷（１部印刷）の場合のものを示す。図７は、この場合に通常に印刷が行われたときのプリントモニタ９（ホストコンピュータ１）とプリンタ３間の通信手順を示す。図８は、この場合に、バッファフルが検出されたときのプリントモニタ９（ホストコンピュータ１）とプリンタ３間の通信手順を示す。
【００４２】
図６及び図７に示すように、プリントモニタ９は、まず、ジョブ開始宣言をプリンタ３へ送ってその応答を受信する（Ｓ２１）。次に、設定情報要求を送ってその応答を受信することにより、プリンタ３のもつ各給紙装置の用紙サイズを把握し（Ｓ２２）、そして、その把握した用紙サイズとこれから送信しようとするページの用紙サイズとが一致するかどうかをチェックする（Ｓ２３）。用紙サイズが一致しない場合、用紙交換又は適切な給紙装置の選択をユーザインタフェース画面を通じてユーザに要求する（Ｓ２４）。
【００４３】
用紙サイズが一致すると、次に、ページ開始宣言をプリンタ３に送ってその応答を受け（Ｓ２５）、続いて、ページ内の最初のバンドのバンド送信宣言をプリンタ３へ送ってその応答を受ける（Ｓ２９）。
【００４４】
プリンタ３は、バンド送信宣言を受けると、その宣言に示されるバンドサイズ（これから送られてくるバンドデータのサイズ）と受信バッファの空き容量とを比較して、空き容量がバンドサイズより小さいと、受信バッファが満杯である旨（バッファフル）の情報をプリンタステータスに入れ応答に含ませて返してくる。プリントモニタ９は、その応答からバッファフルか否か判断し（Ｓ２６）、バッファフルの場合には、その後定期的にステータス要求をプリンタ３に送って応答を受け（Ｓ２７）、バッファフルが解消された（つまり、受信バッファの空き容量が次に送るバンドサイズより大きくなった）か否かを判断する（Ｓ２６）（図８参照）。
【００４５】
バッファフルでなければ、プリントモニタ９は、次のバンド送信宣言をプリンタ３へ送って、同様にバンドフルか否かをチェックする（Ｓ２６）。この動作を、ページリソース内の最後のバンドデータまで繰り返す（Ｓ３１）。こうして１つのページリソースの全部のバンドデータの送信が終わると、ページ終了宣言をプリンタ３へ送ってその応答を受ける（Ｓ３２）。ステップＳ２２〜Ｓ３２の動作を、ジョブ内の最後のページリソースまで繰り返す（Ｓ３３）。こうして全部のページリソースデータの送信が終わると、ジョブ終了宣言をプリンタ３へ送ってその応答を受ける（Ｓ３４）。これで１つの印刷ジョブの通信処理が完了する。
【００４６】
上記過程で、プリンタ３は、コマンドの受け付けとビットイメージの印刷処理とを非同期に並行して実行する。従って、受信バッファにバンドサイズ分の空きがある限り、プリントモニタ９は、先に送信したページ（又はジョブ）の印刷完了を待たずに、次々とページ（又はジョブ）を送信してよい。
【００４７】
プリンタ３は、１つの印刷ジョブのデータの受信を開始してから、受信バッファに所定量のデータを受信すると（例えば、所定バンド数のデータを受信すると、又は、所定バンド数に満たなくても受信バッファがフルになると）、その時点で印刷エンジンを起動して印刷を開始する。これにより、小さい受信バッファ容量でも正常に印刷することが可能になる。また、プリンタは、各ページの印刷が完了すると、印刷完了通知を（例えば、コマンドに対する応答に含ませて）プリントモニタ９に送る。印刷完了通知は、それがプリントモニタ９に受け取られるまで通知しつづけ、かつ、印刷完了でインクリメントし通知完了でデクリメントするカウンタをもつことで、印刷完了通知のとりこぼしを回避する。
【００４８】
プリントモニタ９は、あるページを構成するデータを全てプリンタ３に送信し終わっても、そのページの印刷完了通知を受け取るまではそのページのデータを保持している。プリンタ３でのページの印刷は必ず送信した順序で実行されるので、ページの印刷完了を認識する毎に、上述したキューの先頭にあるページのデータを破棄することにより、印刷完了したページデータだけを破棄する。
【００４９】
ところで、プリンタ３が印刷エンジンを起動するタイミングは、専らプリンタ３側で決めることもできるが、ホストコンピュータ１側のプリンタドライバ５又はプリントモニタ９が、通信モード、解像度、データ量、階調深さなどに基づいてページリソース毎のエンジンスタートタイミングを決めてプリンタ３に指示するようにしてもよい。専らプリンタ３がエンジンスタートタイミングを決める場合には、アンダーランエラー（印刷エンジンが必要とする印刷データがまだ受信されていないエラー）を防ぐために、エンジンスタートタイミングを一番安全な数値（つまり、最も遅い時期）に設定するような設計を採用する傾向になる。しかし、これでは必要以上にエンジンスタートタイミングを遅らせてしまう場合があり、パフォーマンスが落ちる。しかも、機種毎に実験的に数値を探求する必要がある。そこで、ホストコンピュータ１が、ホスト側の通信モード、ページリソースの解像度、データ量、階調深さなどに基づいて、アンダーランエラーが生じない最も早いエンジンスタートタイミングを決定してプリンタ３へ指示すれば、パフォーマンスを最適化することができる。これは、例えば、ホスト側の通信モードやページリソースの解像度及び階調深さ応じて大まかなスタートタイミングを決定した上で、ページ全体のデータ量のボリュームを加味してページリソース毎のエンジンスタートタイミングをバンド数で決定し、これをプリンタ３へ送るといった方法で行うことができる。その具体的な手順の一例を以下の（１）〜（３）に示す。
【００５０】
（１）  プリンタドライバ５又はプリントモニタ９は、各ページリソースにおける解像度（例えば、３００／６００ｄｐｉ）と階調深さ（例えば、精／粗）、及びホストコンピュータ１の通信モード（例えば、ＣＯＭＰＡＴＩＢＩＬＩＴＹ／ＥＣＰ）に基づき、各ページに関するスタートタイミング係数を、例えば表１のように決定する。
【００５１】
【表１】
0003546935.tif 000002
（２）  プリンタドライバ５又はプリントモニタ９は、各ページリソースのデータサイズにスタートタイミング係数を掛け算して、各ページに関するエンジンスタートタイミングに相当する受信データサイズを決定する。
【００５２】
（３）  プリンタドライバ５又はプリントモニタ９は、各ページに関する上記受信データサイズを各ページのバンドサイズで割り算して、各ページに関するエンジンスタートタイミングの受信バンド数を決定する。この受信バンド数を、各ページのページ開始宣言に入れてプリンタ３に通知する。
【００５３】
プリンタ３は、この通知された受信バンド数に等しいバンド数のバンドデータを受信した時点で、印刷エンジンをスタートさせれば良い。これにより最適なスタートタイミング得られ、アンダーランエラーの防止と高いパフォーマンスとが両立する。
【００５４】
図９は、図５のステップ１３でプリントモニタ９が行うプリンタ３との通信動作であって、マルチコピー印刷（複数部印刷）の場合のものを示す。図１０は、この場合にマルチコピーが失敗したときのプリントモニタ９（ホストコンピュータ１）とプリンタ３間の通信手順を示す。なお、図９の中の多くのステップは上述した図６のそれと同じであるため、その同じステップには図６と同じ参照番号を付して重複した説明は省略する。
【００５５】
図９に示すように、プリントモニタ９は、ページ開始宣言を発行する（Ｓ２５）前に、ページのコピー枚数（印刷部数）が何枚かをチェックし（Ｓ４１）、その枚数が複数であれば、ページ開始宣言の中で、マルチコピーモードをＯＮとし、そのコピー枚数を設定し（Ｓ４２）、そして、そのページ開始宣言をプリンタ３へ送信する（Ｓ２５）。
【００５６】
プリントモニタ９は、各ページに関して、ページ終了宣言をプリンタ３へ送信してその応答を受けた（Ｓ３２）ときに、その応答からマルチコピー成功か失敗かを判断する（Ｓ４３）。ここで、マルチコピー成功とは、１ページ分のページリソースデータ全部をプリンタ３の受信バッファに貯めることができた（つまり、受信バッファの総容量がページリソースデータのサイズより大きい）ことを指し、マルチコピー失敗とは、１ページ分のページリソースデータのうち一部しかプリンタ３の受信バッファに貯めることができなかった（つまり、受信バッファの総容量がページリソースデータのサイズより小さい）ことを指す。マルチコピー成功の場合、プリンタ３側で受信バッファに蓄えたページリソースを繰り返し用いてコピー枚数分のマルチコピーを実行する。従って、プリントモニタ９は、次のページリソースの送信動作に入る。
【００５７】
一方、マルチコピー失敗の場合は、プリンタ３側ではマルチコピーができないので、プリントモニタ９が同じページのページリソースをコピー枚数分だけプリンタに繰り返し送る必要がある。そこで、プリントモニタ９は、マルチコピーモードをＯＦＦとしたページ開始宣言を発行して同じページのページリソースをプリンタ３に再送するという動作を、（既に１枚目のコピー分は送信し終わっているので）「コピー枚数−１」回だけ繰り返す（Ｓ４４）。これにより、プリンタ３のＲＡＭ容量が小さくても、マルチコピー機能を実現できる。
【００５８】
さて、図６及び図９に示した通信処理の流れにおいて、プリントモニタ９は、プリンタ３へバンド送信宣言などのコマンドを送って応答を受信する都度に、その応答からエラーが発生していないかチェックする（Ｓ２８）。エラーが発生している場合には、そのエラーの種類に応じた処理を行う（Ｓ３０）。エラーは、次の３種類に大別できる。
【００５９】
（１）プリンタエラー
プリンタカバーのオープン、用紙無し、トナー無しなどであり、プリンタ３はこれらのエラーが解消されるまでは印刷ができないが、受信バッファがフルになるまでバンドデータを受信することはでき、エラー解消後に印刷済みのバンドに続けて後続のバンドの印刷を開始することができる。プリントモニタ９は、これらのエラーの発生を知るとユーザインタフェース画面を通じてユーザにエラー発生を知らせる。
【００６０】
（２）印刷結果エラー
用紙ジャミング、アンダーラン（つまり、ホスト１側での処理が遅れて、印刷エンジンが必要とするデータの受信が完了していないエラー）などであり、プリンタ３はこれらのエラーが解消されるまでは印刷ができず、エラー解消後は、再度同じページを最初から印刷し直す必要がある。プリントモニタ９は、これらのエラーの発生を知るとユーザインタフェース画面を通じてユーザにエラー発生を知らせ、エラーが解消されたら、ホスト１内に削除されずに残っているデータの内一番古いものからすべてのデータを再送する。ただし、マルチコピー時には、プリンタ３がバッファ内容を捨てずに再印刷処理を行う。
【００６１】
（３）致命的エラー
データ伸長エラー、ビデオ転送エラー、印刷エンジンエラー、通信プロトコルエラーなどであり、プリンタ３はその電源が再投入されるまでコマンドを正しく処理できる状態に復帰できず、電源が再投入され処理可能状態に復帰してからエラーが解消した後、再度同じページを最初から印刷し直す必要がある。プリントモニタ９は、これらのエラーの発生を知るとユーザインタフェース画面を通じてユーザにプリンタ電源の再投入を促し、電源再投入後エラー解消を確認するまで、データを送信しない。確認ボタンが押されると、プリントモニタ９は、ホスト１内に削除されずに残っているデータの内一番古いものからすべてのデータを再送する。再送後、再び致命的エラーが生じたならば、プリントモニタ９は、ユーザインタフェース画面を通じてにサービスコールエラーをユーザに通知する。
【００６２】
図１１は、プリンタエラー発生時にプリントモニタ９が行うエラー処理の流れを示す。図１２は、プリンタエラー発生時のプリントモニタ９（ホストコンピュータ１）とプリンタ３間の通信手順を示す。
【００６３】
プリンタ３からの応答によりプリンタエラーの発生を検出すると、プリントモニタ９は、以後、定期的にステータス要求をプリンタ３に送って応答を受信し（Ｓ５１）、その応答からプリンタエラーが解消したか否かをチェックする（Ｓ５２）。エラーが解消したら、図６、９のステップＳ２９へ進んで未送信の後続のバンドの送信を再開する（Ｓ５３）。
【００６４】
なお、プリンタエラーが発生しても、プリンタ３はバッファフルになるまでバンドデータを受信できるので、図１１のステップＳ５１の前に、バッファフルになるまで、後続のバンドデータを送信し続けるステップを入れても良い。この場合、バッファフルになった時点で、ステップＳ５１へ進むことになる。また、もしバッファフルになる前にプリンタエラーが解消されれば、ステップＳ５１、Ｓ５２に進むことなく、何事もなかったかのように図６、９に示したステップＳ２９へ進んで通常の流れで印刷処理が実行される。
【００６５】
図１３は、印刷結果エラー発生時にプリントモニタ９が行うエラー処理の流れを示す。図１４は、印刷結果エラー発生時のプリントモニタ９（ホストコンピュータ１）とプリンタ３間の通信手順を示す。
【００６６】
プリンタ３からの応答により印刷結果エラーの発生を検出すると、プリントモニタ９は、ページ終了宣言を送信し（Ｓ６１）、続いてジョブ終了宣言を送信する（Ｓ６２）ことにより、現在の印刷ジョブを中止する。その後、定期的にステータス要求を送信して（Ｓ６３）、その応答から印刷結果エラーが解消したか否かをチェックする（Ｓ６４）。印刷結果エラーが解消したならば、改めてジョブ開始宣言を送信し（Ｓ６５）、ホスト１内に保存されている最も古いページリソース（つまり、エラー発生時点で印刷途中であったページリソース）から、新たなジョブとして、そのホスト１内に保存されている印刷データの再送信を開始する（Ｓ６６）。なお、図示してないが、ステップＳ６１、６２のページ終了宣言及びジョブ終了宣言に対する応答でエラー解消を検出した場合には、ステップＳ６３、６４を飛び越えて、直ちにステップＳ６５へ進むことになる。
【００６７】
また、マルチコピーの場合であって、マルチコピー成功のページの印刷中に印刷結果エラーが生じた場合には、プリンタ３の受信バッファ内に当該ページのデータが完全に保存されているので、エラー解消後にプリンタ３側でマルチコピーを完遂し、プリントモニタ９はステップＳ６６では次のページリソースから送信を再開する。
【００６８】
また、印刷結果エラーの中でも特にアンダーランエラーが生じた場合は、ホスト１側の負担が大きすぎるわけであるから、送信を再開しても再びアンダーランエラーを起こす可能性が高い。そこで、プリントモニタ９としては、ページの再送をせずに、当該ジョブのデータを全部破棄し、プリンタドライバ５に命じて、負担のより軽いつまりグレードのより低い（例えば、解像度を６００ｄｐｉから３００ｄｐｉに落としたり、階調深さを３ビットから２ビットに落したりした）送信モードで同じジョブの印刷データを最初のページから（又は印刷未完了のページから）再度作成させて、これをプリンタ３へ送り直すようにしてもよい。
【００６９】
図１５は、致命的エラー発生時にプリントモニタ９が行うエラー処理の流れを示す。図１６は、致命的エラー発生時のプリントモニタ９（ホストコンピュータ１）とプリンタ３間の通信手順を示す。
【００７０】
プリンタ３からの応答で致命的エラーの発生を検出すると、プリントモニタ９は、ユーザインタフェース画面にプリンタ電源の再投入をユーザに促すメッセージと再起動したことをユーザがプリントモニタ９に知らせるための再起動確認ボタンとを表示し（Ｓ７１）、ユーザにより再起動確認ボタンが押されたかチェックし（Ｓ７２）、押されると、次に定期的にステータス要求をプリンタ３に送信して（Ｓ７３）、その応答から致命的エラーが解消されたか否かチェックする（Ｓ７４）。エラーが解消されると、改めてジョブ開始宣言をプリンタ３に送信し（Ｓ７５）、新たなジョブとしてホスト１内に保存されている最も古いページリソース（つまり、エラー発生時点で印刷途中であったページリソース）から、新たなジョブとして、そのホスト１内に保存されている印刷データの再送信を開始する（Ｓ７６）。
【００７１】
以上、本発明の一実施形態を説明したが、上記の実施形態はあくまで本発明の説明のための例示であり、本発明を上記実施形態にのみ限定する趣旨ではない。従って、本発明は、上記実施形態以外の様々な形態でも実施することができるものである。
【図面の簡単な説明】
【図１】本発明の一実施形態に従うダムプリンタを用いた印刷システムの全体構成を示すブロック図。
【図２】プリンタドライバ５の起動時におけるプリントモニタ９（ホストコンピュータ１）とダムプリンタ３との通信手順を示す図。
【図３】アイドル時におけるプリントモニタ９（ホストコンピュータ１）とダムプリンタ３との間の通信手順を示す図。
【図４】印刷時のプリンタドライバ５の動作を示すフローチャート。
【図５】印刷時のプリントモニタ９の動作を示すフローチャート。
【図６】図５のステップ１３でプリントモニタ９が行うプリンタ３との通信動作であって、単ページ印刷（１部印刷）の場合のものを示すフローチャート。
【図７】単ページ印刷の場合に通常に印刷が行われたときのプリントモニタ９（ホストコンピュータ１）とプリンタ３間の通信手順を示す図。
【図８】バッファフルが検出されたときのプリントモニタ９（ホストコンピュータ１）とプリンタ３間の通信手順を示す図。
【図９】図５のステップ１３でプリントモニタ９が行うプリンタ３との通信動作であって、マルチコピー印刷（複数部印刷）の場合のものを示すフローチャート。
【図１０】マルチコピーが失敗したときのプリントモニタ９（ホストコンピュータ１）とプリンタ３間の通信手順を示す図。
【図１１】プリンタエラー発生時にプリントモニタ９が行うエラー処理の流れを示すフローチャート。
【図１２】プリンタエラー発生時のプリントモニタ９（ホストコンピュータ１）とプリンタ３間の通信手順を示す図。
【図１３】印刷結果エラー発生時にプリントモニタ９が行うエラー処理の流れを示すフローチャート。
【図１４】印刷結果エラー発生時のプリントモニタ９（ホストコンピュータ１）とプリンタ３間の通信手順を示す図。
【図１５】致命的エラー発生時にプリントモニタ９が行うエラー処理の流れを示すフローチャート。
【図１６】致命的エラー発生時のプリントモニタ９（ホストコンピュータ１）とプリンタ３間の通信手順を示す図。
【符号の説明】
１  ホストコンピュータ
３  ダムプリンタ
５  プリンタドライバ
７  スプーラ
９  プリントモニタ
１１  ディスプレイ
１３  入力装置
２１  ＣＰＵ
２３  ＲＡＭ
２５  ＤＭＡコントローラ
２７  印刷前処理回路
２９  印刷エンジン
【図１】
0003546935.tif 000003
【図２】
0003546935.tif 000004
【図３】
0003546935.tif 000005
【図４】
0003546935.tif 000006
【図５】
0003546935.tif 000007
【図６】
0003546935.tif 000008
【図７】
0003546935.tif 000009
【図８】
0003546935.tif 000010
【図９】
0003546935.tif 000011
【図１０】
0003546935.tif 000012
【図１１】
0003546935.tif 000013
【図１２】
0003546935.tif 000014
【図１３】
0003546935.tif 000015
【図１４】
0003546935.tif 000016
【図１５】
0003546935.tif 000017
【図１６】
0003546935.tif 000018