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