(57)【特許請求の範囲】
【請求項１】
印刷データを生成するホスト装置と、
受信バッファを有し、前記ホスト装置から受信した前記印刷データを前記受信バッファに一時蓄積した後、前記受信バッファから前記印刷データを読み出して印刷を行うプリンタと、
を備え、
前記プリンタは、
前記受信バッファの空きサイズを調べる空きサイズ調査手段と、
前記ホスト装置からステータス要求を受けると、前記調べた空きサイズを示す情報を含んだステータスを前記ホスト装置に返信する返信するステータス通知手段を有し、
前記空きサイズ調査手段によって前記受信バッファに所定量のデータの蓄積が行われていることが検知されたとき、前記所定量のデータの蓄積動作と並行して前記受信バッファからのデータ読み出しが開始されるように構成されており、
前記ホスト装置は、
前記プリンタに前記ステータス要求を発するステータス要求手段と、
前記プリンタが前記ステータ要求に応答して返信した前記ステータスに含まれる前記空きサイズが所定の条件を満たしていれば、前記空きサイズで受信できる量の印刷データを連続的に前記プリンタへ送信するデータ送信手段と、
を有し、
前記ステータス要求手段は、前記データ送信手段が前記空きサイズで受信できる量の印刷データを連続的に送り終わった後に、再び前記ステータス要求を発するように構成されたプリントシステム。
【請求項２】
前記ホスト装置の前記データ送信手段は、前記プリンタから取得した前記空きサイズが、これから送ろうとする印刷データの１バンド分のサイズ以上であれば、前記空きサイズで受信できるバンド数分の印刷データを連続的に前記プリンタに送り、
前記ホスト装置の前記ステータス要求手段は、前記データ送信手段が前記空きサイズで受信できるバンド数の印刷データが送り終わった後に、再び前記ステータス要求を発するように構成された請求項１記載のプリントシステム。
【請求項３】
前記ホスト装置の前記データ送信手段は、前記印刷データを連続的に送っている間、前記プリンタから取得した空きサイズと、送り済みの印刷データの量とから、前記受信バッファの残りの空きサイズを計算し、この計算した残りの空きサイズが前記所定条件を満たさなくなるまで、連続的に前記印刷データを前記プリンタに送信する請求項１記載のプリントシステム。
【請求項４】
前記プリンタは、
印刷が成功したがその印刷成功を未だ前記ホスト装置に通知していないページ数を示す成功枚数カウンタを更に有し、
前記プリンタのステータス通知手段は、前記ホスト装置から前記ステータス要求を受けたとき、前記成功枚数カウンタが１以上のページ数を示していたならば、印刷成功を示す情報を更に含んだ前記ステータスを前記ホスト装置に返信し、
前記ホスト装置は、
前記プリンタから受信した前記ステータスに前記印刷成功を示す情報が含まれていれば、未だ削除していない送信済みのデータの中で最先のページのデータを削除するデータ削除手段を更に有する請求項１記載のプリントシステム。
【請求項５】
前記プリンタは、
紙ジャム及びアンダーランエラーの発生を検知するエラー検知手段を更に有し、
前記プリンタのステータス通知手段は、前記ホスト装置から前記ステータス要求を受けたとき、前記エラー検知手段により前記紙ジャム又は前記アンダーランエラーが検知されていたならば、前記紙ジャム又は前記アンダーランエラーを示す情報を更に含んだ前記ステータスを前記ホスト装置に返信し、
前記ホスト装置は、
前記プリンタから受信した前記ステータスに前記紙ジャム又は前記アンダーランエラーを示す情報が含まれていれば、送信済みのデータを前記プリンタに再送するエラー処理手段を更に有する請求項１記載のプリントシステム。
【請求項６】
前記ホスト装置のエラー処理手段は、
前記ステータスに前記アンダーランエラーを示す情報が含まれていた場合、前記プリンタに対して前回より印刷開始のタイミングを遅らせるよう指示して前記送信済みのデータを再送するか、又は、イメージデータの解像度を前回より落として前記送信済みのデータを再送する請求項１記載のプリントシステム。
【請求項７】
印刷データを生成するホスト装置と、受信バッファを有し、前記ホスト装置から受信した前記印刷データを前記受信バッファに一時蓄積した後、前記受信バッファから前記印刷データを読み出して印刷を行うプリンタとを備えたプリントシステムの動作方法において、
前記ホスト装置が前記プリンタにステータス要求を発するステップと、
前記プリンタが、前記ステータス要求に応答して、前記受信バッファの空きサイズを示す情報を含んだステータスを前記ホスト装置に返信するステップと、
前記プリンタにおいて、前記受信バッファに所定量のデータの蓄積が行われていることが検知されたとき、前記所定量のデータの蓄積動作と並行して前記受信バッファからのデータ読み出しが開始されるステップと、
前記ホスト装置が、前記プリンタから返信された前記ステータスに含まれる前記空きサイズが所定の条件を満たしていれば、前記空きサイズで受信できる量の印刷データを連続的に前記プリンタへ送信するステップと、
前記ホスト装置が、前記空きサイズで受信できる量の印刷データを連続的に送り終わった後に、再び前記ステータス要求を発するステップと、
を有するプリントシステムの動作方法。
【請求項８】
ステータス要求に応答して受信バッファの空きサイズを示す情報を含んだステータスをホスト装置へ返信する機能を持ったプリンタに対して、印刷データを送信する前記ホスト装置において、
前記受信バッファに所定量のデータの蓄積が行われていることが検知されたとき、前記所定量のデータの蓄積動作と並行して前記受信バッファからのデータ読み出しを開始する前記プリンタに前記ステータス要求を発するステータス要求手段と、
前記ステータス要求に応答して前記プリンタが返信した前記ステータスに含まれる前記空きサイズが所定の条件を満たしていれば、前記空きサイズで受信できる量の印刷データを連続的に前記プリンタへ送信するデータ送信手段と、
を備え、
前記ステータス要求手段は、前記データ送信手段が前記空きサイズで受信できる量の印刷データを連続的に送り終わった後に、再び前記ステータス要求を発するように構成されたホスト装置。
【請求項９】
前記データ送信手段は、前記プリンタから取得した前記空きサイズが、これから送ろうとする印刷データの１バンド分のサイズ以上であれば、前記空きサイズで受信できるバンド数分の印刷データを連続的に前記プリンタに送り、
前記ステータス要求手段は、前記データ送信手段が前記空きサイズで受信できるバンド数の印刷データが送り終わった後に、再び前記ステータス要求を発するように構成された請求項８記載のホスト装置。
【請求項１０】
前記データ送信手段は、前記印刷データを連続的に送っている間、前記プリンタから取得した空きサイズと、送り済みの印刷データの量とから、前記受信バッファの残りの空きサイズを計算し、この計算した残りの空きサイズが前記所定条件を満たさなくなるまで、連続的に前記印刷データを前記プリンタに送信する請求項８記載のホスト装置。
【請求項１１】
前記プリンタにて印刷が成功したがその印刷成功を未だ前記ホスト装置に通知していないページが１ページ以上あるときには、前記プリンタからの前記ステータスには印刷成功を示す情報が含まれており、
前記ホスト装置は、
前記プリンタから受信した前記ステータスに前記印刷成功を示す情報が含まれていれば、未だ削除していない送信済みのデータの中で最先のページのデータを削除するデータ削除手段を更に有する請求項８記載のホスト装置。
【請求項１２】
前記プリンタにて紙ジャム又はアンダーランエラーが発生した場合、前記プリンタからの前記ステータスには前記紙ジャム又は前記アンダーランエラーを示す情報が含まれていると共に、前記紙ジャム又は前記アンダーランエラーを示す情報を検知するエラー検知手段を更に有し、
前記ホスト装置は、
前記プリンタから受信した前記ステータスに前記紙ジャム又は前記アンダーランエラーを示す情報が含まれていれば、送信済みのデータを前記プリンタに再送するエラー処理手段を更に有する請求項８記載のホスト装置。
【請求項１３】
前記エラー処理手段は、
前記ステータスに前記アンダーランエラーを示す情報が含まれていた場合、前記プリンタに対して前回より印刷開始のタイミングを遅らせるよう指示して前記送信済みのデータを再送するか、又は、イメージデータの解像度を前回より落として前記送信済みのデータを再送する請求項１２記載のホスト装置。
【請求項１４】
ステータス要求に応答して受信バッファの空きサイズを示す情報を含んだステータスをホスト装置へ返信する機能を持ったプリンタに対して、印刷データを送信する前記ホスト装置の動作方法において、
前記受信バッファに所定量のデータの蓄積が行われていることが検知されたとき、前記所定量のデータの蓄積動作と並行して前記受信バッファからのデータ読み出しを開始する前記プリンタに前記ステータス要求を発するステップと、
前記ステータス要求に応答して前記プリンタが返信した前記ステータスに含まれる前記空きサイズが所定の条件を満たしていれば、前記空きサイズで受信できる量の印刷データを連続的に前記プリンタへ送信するステップと、
前記空きサイズで受信できる量の印刷データを連続的に送り終わった後に、再び前記ステータス要求を発するステップと、
を有するホスト装置の動作方法。
【請求項１５】
ステータス要求に応答して受信バッファの空きサイズを示す情報を含んだステータスをホスト装置へ返信する機能を持ったプリンタに対して、印刷データを送信する前記ホスト装置であって、
前記受信バッファに所定量のデータの蓄積が行われていることが検知されたとき、前記所定量のデータの蓄積動作と並行して前記受信バッファからのデータ読み出しを開始する前記プリンタに前記ステータス要求を発するステータス要求手段と、
前記ステータス要求に応答して前記プリンタが返信した前記ステータスに含まれる前記空きサイズが所定の条件を満たしていれば、前記空きサイズで受信できる量の印刷データを連続的に前記プリンタへ送信するデータ送信手段と、
を備え、
前記ステータス要求手段は、前記データ送信手段が前記空きサイズで受信できる量の印刷データを連続的に送り終わった後に、再び前記ステータス要求を発するように構成されたホスト装置として、
コンピュータを機能させるためのコンピュータプログラムを担持したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ホスト装置からプリンタに印刷データを送ってプリンタで印刷するプリントシステムに関する。
【０００２】
【従来の技術】
ホスト装置からプリンタに送信された印刷データは一旦プリンタ内の受信バッファメモリに格納された後に、受信バッファから読み出されて印刷処理される。ホスト装置は、印刷データがプリンタで確実に処理されるよう、随時にプリンタのステータスを確認しつつ印刷データをプリンタに送っていく。特に「ホストベースプリンタ」又は「ダムプリンタ」などと呼ばれるプリンタの場合、基本的に、プリンタはホスト装置から受信したイメージデータを単に印刷するだけであり、ホスト装置が、イメージのビットマップ展開を始め、プリンタでエラーが生じたときの対応や、印刷が終了したイメージデータの破棄など、プリンタでの印刷処理の進捗状況に応じた種々の制御を行う必要があるので、ホスト装置はプリンタのステータスをできるだけリアルタイムに把握することが望まれる。
【０００３】
しかし、ホスト装置がプリンタのステータスを頻繁に把握しようとすると、そのためのプリンタとの通信が頻繁になるため、印刷速度が低下するという問題がある。
【０００４】
従って、本発明の目的は、プリンタからホストへのステータスを送信する回数を必要最小限にして、印刷速度を向上させることにある。
【０００５】
【課題を解決するための手段】
本発明のプリントシステムは、印刷データを生成するホスト装置と、ホスト装置から受信した印刷データを受信バッファに一時蓄積した後に受信バッファから読み出して印刷を行うプリンタとを備える。プリンタは、受信バッファの空きサイズを調べる空きサイズ調査手段と、ホスト装置からステータス要求を受けると、調べた空きサイズを示す情報を含んだステータスをホストに返信するステータス通知手段とを有する。ホスト装置は、プリンタにステータス要求を発するステータス要求手段と、このステータス要求に応答してプリンタが返信したステータスに含まれる空きサイズが所定の条件（例えば、データ受信に必要な最低のサイズより大きい）を満たしていれば、空きサイズで受信できる量の印刷データを連続的にプリンタへ送信するデータ送信手段とを有する。そして、このデータ送信手段が上記空きサイズで受信できる量の印刷データを連続的に送り終わった後に、ステータス要求手段が再びステータス要求をプリンタに発する。
【０００６】
このプリントシステムによれば、ホスト装置は、プリンタからステータスを取得すると、このステータスに示される受信バッファの空きサイズで受信可能な量の印刷データを、連続的にプリンタへ送る（ここで、「連続的」とは、「途中でプリンタにステータス要求を発することなく」という意味である）。そして、それだけの量の印刷データをプリンタに連続的に送り終わった後に、再びプリンタにステータス要求を送って受信バッファの空き容量を確認し、これが再び所定条件を満たすようになると、再び、その空き容量で受信可能な量の印刷データを連続的にプリンタへ送る。この動作により、ホストがプリンタのステータスを取得する頻度が減り、ホストからプリンタへのデータ送信速度が上がるので、プリンタのスループットが向上する。
【０００７】
好適な実施形態では、ホスト装置は、イメージのバンド単位で印刷データをプリンタへ送る。そのため、ホスト装置は、プリンタから取得したバッファ空きサイズが、これから送ろうとする印刷データの１バンド分のサイズ以上であれば、データ送信を開始して、そのバッファ空きサイズで受信できるバンド数分の印刷データを連続的にプリンタに送る。この連続的なデータ送信が終わると、再びステータス要求をプリンタに発してバッファ空きサイズを調べ、それが再びこれから送ろうとする印刷データの１バンド分のサイズ以上になれば、再び受信可能なバンド数分の連続的なデータ送信を再開する。このようにして、一旦プリンタからステータスを取得すると、その時のバッファ空き容量でプリンタが受信できる限りのバンド数のデータを連続的にプリンタに送信することにより、ステータスを取得する頻度を最小限にする。
【０００８】
好適な実施形態では、ホスト装置は、印刷データを連続的に送っている間、プリンタから取得したバッファ空きサイズと、送り済みの印刷データの量とから、受信バッファの残りの空きサイズを計算し、この計算した残りの空きサイズが上記所定条件（例えば、データ受信に必要な最低のサイズ）を満たさなくなるまで、連続的に印刷データをプリンタに送信する。これにより、プリンタが受信できる限りの量の印刷データを連続的にプリンタへ送信することができる。
【０００９】
好適な実施形態では、プリンタは、印刷が成功したが未だその印刷成功をホスト装置に通知していないページ数を示す成功枚数カウンタを有しており、そして、ホスト装置からステータス要求を受けたとき、成功枚数カウンタが１以上のページ数を示していたならば、印刷成功を示す情報を更に含んだステータスをホスト装置に返信する。ホスト装置は、プリンタから受信したステータスに印刷成功を示す情報が含まれていれば、未だ削除していない送信済みのデータの中で最先のページのデータを削除する。これにより、印刷成功したページ数を取りこぼし無くホスト装置に知らせて、そのページのデータをホスト装置から削除することができる。
【００１０】
好適な実施形態では、プリンタは、紙ジャム及びアンダーランエラー（受信バッファからのデータ読み出しアドレスが受信バッファへのデータ書き込にアドレスに追いついてしまし、それ以上データ読み出しができなくなるエラー）の発生を検知するエラー検知手段を更に有し、ホスト装置からステータス要求を受けたとき、紙ジャム又はアンダーランエラーが検知されていたならば、紙ジャム又はアンダーランエラーを示す情報を更に含んだステータスを前記ホスト装置に返信する。ホスト装置は、プリンタから受信したステータスに紙ジャム又はアンダーランエラーを示す情報が含まれていれば、送信済みのデータをプリンタに再送する、これにより、紙ジャム又はアンダーランエラーによって印刷が失敗しても、失敗したページから再度印刷を行うことができる。その際、アンダーランエラーの場合には、プリンタに対して前回より印刷開始のタイミングを遅らせる指示してデータを再送するか、又は、イメージデータの解像度を前回より落としてデータを再送する。これにより、再度のアンダーランエラーの発生を防止する。
【００１１】
本発明のホスト装置は、典型的にはコンピュータにより実施することができるが、そのためのコンピュータプログラムは、ディスク型ストレージ、半導体メモリおよび通信ネットワークを伝播する信号などの各種の媒体を通じてコンピュータにインストールまたはロードすることができる。
【００１２】
【発明の実施の形態】
図１は、本発明の一実施形態の構成を示す。
【００１３】
本実施形態のページプリンタ３は、ホスト１側でビットマップ展開されたイメージデータをホスト１から受信して電子写真方式によりページ単位で印刷するホストベースのページプリンタである（但し、これは一例であって、他のタイプのプリンタにも本発明の原理は適用できる）。このプリンタ３は、パラレルインタフェースのような専用インタフェ−ス又はＬＡＮのようなネットワークを介して、ホスト１と双方向通信可能に接続され、ホスト１からはコマンドデータ及びビットマップ展開されたイメージデータを受信し、また、ホスト１へはプリンタの各種ステータス（例えば、受信バッファの空きサイズ、プリンタレディ情報、印刷成功情報、エラー情報など）を送信することができる。ホスト１から受信したイメージデータを蓄えるための受信バッファは、プリンタ３内のＤＲＡＭ２１内に固定又は可変の容量で確保されている。この受信バッファの容量は、１ページ分のイメージデータのサイズより小さくてよい。ＣＰＵ２３のワークエリアもＤＲＡＭ２１内に確保されており、このワークエリアには、上述したプリンタのステータスなどが書き込まれる。
【００１４】
プリンタ３は、電子写真プロセスを実行する機構である印刷エンジン２７と、ホスト１との双方向通信によりイメージデータをホスト１から受信して必要な加工を施し印刷エンジン２７に渡す一連の処理回路、すなわちホストインタフェース回路１１、ＤＭＡコントローラ１３、データ伸張回路１５、ビデオコントローラ１７、後処理回路１９及びタイマ３０を有している。これらの処理回路１１〜１９、３０は、例えば専用ハードウェアロジック回路で構成されていて純粋にハードウェアだけで夫々の動作をするので、ソフトウェアに依って動作するものに比較して高速である。
【００１５】
さらに、プリンタ３は、ホスト１からの要求の解釈やエラーの検出やプリンタステータスの管理や上記処理回路１１〜１９の制御や動作履歴（トナー消費量、印刷枚数など）の管理などを行うためのマイクロコンピュータ、つまり、ＣＰＵ２３と、ＣＰＵ２３のためのプログラムや固定データなどを格納したＲＯＭ２５と、主として受信バッファとして用いられる前述のＤＲＡＭ２１と、上記の動作履歴を保存するためのＥＥＰＲＯＭ２９などを有している。このマイクロコンピュータ２１〜２５、２９、３０はバス３２を介して上述したハードウェア処理回路１１〜１９とデータ授受可能に接続されている。各部の機能は次のとおりである。
【００１６】
ホストインタフェース回路１１は、ホスト１からのコマンドデータやイメージデータの受信や、ホスト１へのステータス情報の送信などの、ホスト１との双方向通信の制御を行う。図示してないが、ホストインタフェース回路１１内には、ホスト１から受信したデータを一時保持する入力ＦＩＦＯ（先入先出）バッファと、ホスト１へ送信すべきデータを一時保持する出力ＦＩＦＯバッファがある。
【００１７】
ＤＭＡコントローラ１３は、ＤＲＡＭ２１内に設けられた受信バッファへのイメージデータの書き込み及び受信バッファからのイメージデータの読み出しをＤＭＡにより行う。ＤＭＡによるイメージデータのＤＲＡＭ２１への入出力経路には、受信ＤＭＡ３１と転送ＤＭＡ３３の２チャンネルがある。受信ＤＭＡ３１を通じて、ホスト１からのイメージデータがＤＲＡＭ２１に書き込まれる。また、転送ＤＭＡ３３を通じて、イメージデータがＤＲＡＭ２１からデータ伸張回路１５へ転送される。
【００１８】
データ伸張回路１５は、ホスト１からのイメージデータが圧縮されていた場合、これを元のデータに伸張してから後段のビデオコントローラ１７へ渡し、一方、ホスト１から圧縮されずに来たデータには、そのままビデオコントローラ１７へ渡す。ビデオコントローラ１７は、印刷エンジン２７へのイメージデータの転送（ビデオ転送という）のタイミングを制御する。
【００１９】
後処理回路１９は、イメージデータの解像度を印刷エンジン２７に合わせるための解像度変換、文字などの輪郭を滑らかなものにするエッジスムージング、ガンマ特性などを考慮して階調値を調整する階調制御などの後処理をイメージデータに施し、その後処理したイメージデータを印刷エンジン２７に送る。上述した解像度変換は、例えば印刷エンジン２７の解像度が６００ｄｐｉである場合、ホストから受信したデータが３００ｄｐｉであったならば、これをエンジン２７と同じ６００ｄｐｉに変換する機能である。この解像度変換機能があることによって、例えば、ホスト１から最初に６００ｄｐｉのイメージデータを送ったところデータ量が多すぎて印刷も失敗した場合、次にホスト１から解像度を３００ｄｐｉに落としたイメージデータを再送して印刷をリトライする、といったことが可能になる。
【００２０】
ＣＰＵ２３は、印刷の開始時にホスト１からの要求を受けてプリンタ情報（通信モード、ＲＡＭサイズなどの１つの印刷ジョブである程度固定的な状態情報）をホスト１に通知したり、印刷の最中にプリンタの現在のステータス（印刷エンジン２７の状態、受信バッファの空き容量、エラーが発生中か、各ページ毎に印刷が成功したか、などの時々刻々変動する状態情報）を実時間で取得してＤＲＡＭ２１内のワークエリアに記録し、ホスト１から要求があるとそのステータスをホスト１に通知したり、ＤＭＡコントローラ１３が行う受信ＤＭＡ３１や転送ＤＭＡ３３の開始タイミングや開始アドレス等を制御したり、プリンタ３の動作履歴を計算してＥＥＰＲＯＭ２９に保存したりする。
【００２１】
上記の構成において、ハードウェア処理回路１１〜１９が行う処理とＣＰＵ２３がソフトウェアに依り行う処理との役割分担は次の観点に基づいてなされている。
【００２２】
(1)ハードウェアで制御する処理
a)リアルタイム性が要求される処理
印刷エンジン２７は決められた速度で１ページのイメージを印刷するので、印刷エンジン２７の印刷動作に間に合うように、且つ印刷動作に同期させて、イメージデータを印刷エンジン２７へ転送しなければならない。そこで、印刷エンジン２７へイメージデータ転送の速度とタイミングに直接関与する処理、つまり、受信バッファに対するイメージデータの読み書き、伸張処理、ビデオコントローラ１７の転送タイミング制御、及び後処理は、専用ハードウェア（ＤＭＡコントローラ１３〜後処理回路１９）で行う。また、ホスト１との通信インタフェースのうち、リアルタイム性が要求されるものも専用ハ−ドウェア回路（ホストインタフェース回路１１）が行う。
【００２３】
b)印刷速度に影響する処理
ホスト１から送られてくるデータ、特にイメージデータはサイズが大きいので、印刷スループットを向上させるには、これを高速に転送する必要がある。そこで、イメージデータの転送は専用ハードウェア回路（ＤＭＡコントローラ１３）で行う。
【００２４】
(2)ソフトウェアで制御する処理
a)高速処理が必要とされない処理、及びフレキシブルに制御しなければならない処理
印刷エンジンの監視や、ホストインタフェースの制御のうちリアルタイム性が要求されない部分（例えば、ホストへのステータス返信（一般に受信に比べてデータ量が少ない））や、トナー量の計算や印刷枚数のカウントのように頻度の少ない計算や、ＤＭＡや印刷の開始命令の発行（これは、受信バッファに蓄積したイメージデータ量を監視して適量時に発行する必要がある）などが、これに当たる。
【００２５】
上記の役割分担を処理種類別に述べれば次の通りである。
【００２６】
(1)印刷エンジン２７の監視
ＣＰＵ２３が、ビデオコントローラ１７内のレジスタにコマンドを書き込むことにより、印刷エンジン２７に対してコマンドを発行し、そして、ビデオコントローラ１７内のレジスタを読み取ることにより、印刷エンジン２７から得られたステータスを得る。
【００２７】
(2)ホストインタフェースの制御
ＣＰＵ２３がホストインタフェース回路１１のレジスタに読み書きを行うことで、ホストインタフェースプロトコルの制御を行う。応答のリアルタイム性が要求される部分は、ハードウェアたるホストインタフェース回路１１が受け持つ。
【００２８】
(3)ホスト１からのデータ受信
コマンドデータについては、ホストインタフェース回路１１の入力ＦＩＦＯバッファに蓄えられたコマンドデータをＣＰＵ２３が直接読み込む。イメージデータについては、ＤＭＡコントローラ１３経由で、ホストインタフェース回路１１の入力ＦＩＦＯバッファから直接ＤＲＡＭ２１の受信バッファにイメージデータをＤＭＡ転送する。その際、ＣＰＵ２３は、ＤＭＡコントローラ１３のレジスタに対し、受信ＤＭＡ３１のスタートアドレス（ＤＲＡＭ２１のどのアドレスからデータ書き込みを開始するか）と、ＤＭＡ転送回数（何バイトＤＭＡを実行するか）をセットした後、受信ＤＭＡ３１の開始命令をＤＭＡコントローラ１３に発行することで、受信ＤＭＡ３１が開始される。
【００２９】
(4)ホスト１へのステータス返信
ＣＰＵ２３は、ホスト１からステータスリクエストコマンドを受信すると、プリンタ３内の各モジュールの状態を調べ、或いは、そのリクエストコマンドとは非同期で予め調べておいたステータスをＤＲＡＭ２１のワークエリアから読み出して、ホストインタフェース回路１１の出力ＦＩＦＯバッファにセットする。尚、ステータス量が多い場合には、ＤＭＡコントローラ１３経由でＤＲＡＭ２１から直接出力ＦＩＦＯバッファへステータスをＤＭＡ転送するようにしてもよい（一般にステータスは受信するイメージデータに比べデータ量が少ないのでＤＭＡ転送は必要ではない。）。
【００３０】
(5)印刷動作
ＣＰＵ２３は、ＤＲＡＭ２１にイメージデータが所定量蓄えられたと判断したら、印刷動作を開始する。すなわち、ＣＰＵ２３が、ＤＭＡコントローラ１３に対し、転送ＤＭＡ３３のスタートアドレス（ＤＲＡＭ２１のどのアドレスからデータ読み出しを開始するから）と、ＤＭＡ転送回数（何バイトＤＭＡを実行するか）をセットした後、転送ＤＭＡ３３の開始命令をＤＭＡコントローラ１３に発行することで、転送ＤＭＡ３３が開始される。転送ＤＭＡ３３の開始直後に、ＣＰＵ２３は、ビデオコントローラ１７に対して印刷開始命令を発行し、印刷エンジン２７をスタートさせる。転送ＤＭＡ３３が行われている間、圧縮されたイメージデータはデータ伸張回路１５にて伸張され、ビデオコントローラ１７にてタイミング制御されて印刷エンジン２７へ送られる。途中、後処理回路１９にてエッジスムージング、階調補正などの処理が施される。
【００３１】
(6)履歴管理
ＣＰＵ２３は、印刷枚数をカウントする。また、後処理回路１９が１ページ印刷したときのイメージドット数をカウントしているので、ＣＰＵ２３は、そのイメージドット数値を後処理回路１９から読み込んでトナー消費量を算出する。求めた印刷枚数とトナー消費量は、ＥＥＰＲＯＭ２９に保存することで、プリンタ３の電源がＯＦＦになっても保持される。
【００３２】
図２は、ホスト１がプリンタ３へイメージデータ送るときに各ページ毎に行う制御のフローを示す。
【００３３】
ホスト１は、まず、印刷しようとするページが１ページ目か２ページ目以降かを判断し（Ｓ１）、１ページ目であれば、プリンタ３からプリンタ情報（通信モード（プリンタ３とホスト１との間のネゴシエーションで成立した通信モードであって、例えばパラレル通信の場合はCompatibilityやECPなど）、ＤＲＡＭサイズなどであり、これらのプリンタ情報が準備できていない場合には準備中を示す情報）を取得し（Ｓ２）、これに基づきプリンタ３の制限事項を把握する。２ページ目以降は、プリンタ情報の取得は行なわない。また、１ページ目のときだけでなく、紙ジャム等の印字エラーが発生した後もプリンタ情報を取得し、プリンタ３がエラーから復帰しているか否かをチェックする。
【００３４】
プリンタ３からプリンタ情報を受けると、ホスト１は、そのプリンタ情報が有効か無効か、つまり上述した通信モードやＤＲＡＭサイズなどを示した有効なプリンタ情報であるか、準備中を示す無効なプリンタ情報かを判断し（Ｓ３）、情報が準備中（無効）の場合は、ホスト１は有効なプリンタ情報を受けるまでプリンタ情報をプリンタ３から繰り返しリードする。なお、プリンタ情報が準備中（無効）になる原因は、プリンタ３がプリンタイニシャライズ中か、又はエラーからの復帰中であることである。
【００３５】
有効なプリンタ情報を取得すると、ホスト１は、プリンタ３の通信モードやＲＡＭサイズを基にイメージデータの送信モード（解像度など）を決定する。さらに、ホスト１は、プリンタ３との通信で用いるポートの種類（パラレル、ＵＳＢ、イーサネットなど）、又はプリンタ３から通知された通信モード（例えば、パラレルの場合のCompatibility、ECPなど）に応じて、プリンタ３がビデオ転送を開始するタイミング（１ページ中の何バンド目のデータを受信したらビデオ転送を開始するか）を決定する。このビデオ転送開始タイミングは、次のような考えに基づいて決定する。すなわち、ホスト１からプリンタ３へのデータ送信速度をｘ〔バイト／秒〕、プリンタ３内でのビデオ転送の速度をｙ〔バイト／秒〕、ホスト３から送るイメージデータの圧縮率をα、１ページの全イメージデータ数をＴ〔バイト〕、受信バッファのサイズをＭ〔バイト〕、ビデオ転送を開始する時点で受信バッファに蓄えられているデータサイズをＰ〔バイト〕とする。通常、データ受信速度ｘよりもビデオ転送速度ｙの方が高速であり、この高速のビデオ転送の転送ＤＭＡアドレス（図６のＴＡＤ）が低速のデータ受信の受信ＤＭＡアドレス（図６のＲＡＤ）に追いついてしまうと、そこでビデオ転送がストップしてしまい印刷失敗となる。これを「アンダーランエラー」という。しかし、
Ｐ≦Ｍ                    …（１）
（α×Ｔ−Ｐ）／ｘ＜Ｔ／ｙ  …（２）
を満足するようにＰを設定しておけば、ビデオ転送の転送ＤＭＡアドレスがデータ受信の受信ＤＭＡアドレスに追いつかないうちに１ページ分のデータ受信が完了するので、アンダーランエラーは生じない。（１）、（２）式より、
Ｍ≧Ｐ＞Ｔ（α−ｘ／ｙ）  …（３）
が導かれる。この（３）式を満たすようにＰを設定すればアンダーランエラーは生じない。そこで、（３）式を満たす最小のＰ〔バイト〕を圧縮バンドサイズ〔バイト〕で割って、その商に１を加えたバンド数を、ビデオ転送の開始タイミング（つまり、このバンド数分のデータが受信バッファに受信された時点でビデオ転送を開始する）として設定する。その際、通信ポートの種類や通信モードによって上記データ送信速度ｘが異なるから、それに応じて上記ビデオ転送開始タイミングとしてのバンド数（以下、「指定バンド数」）を変える。例えば、パラレルポートのように常に帯域を確保できる場合はフライングスタート（つまり、１ページの全バンド数を受信する前に印刷開始）を行うよう、また、ネットワーク通信のように帯域が安定していないポートの場合は１ページの全バンド数を受信してから印刷を開始するよう、指定バンド数（ビデオ転送開始タイミング）を設定する。また、パラレルポートの中でも、ECPのように送信速度ｘの速いモードについては、開始タイミングを早くし（指定バンド数を少なくし）、Compatibilityのように送信速度ｘの遅いモードについては、開始タイミングを遅く（指定バンド数を多く）設定する。
【００３６】
このようにイメージデータの解像度や、ビデオ転送開始タイミング（指定バンド数）を決定した上で、ホスト１は、印刷しようとするイメージデータに関するホスト情報（上記決定したイメージデータの解像度、１ページのトータルバンド数、及び上記決定した指定バンド数など）をプリンタ３へ送信する（Ｓ４）。プリンタ３は、このホスト情報を基に、レジスタの設定やバッファクリアなどのページ設定を行う。
【００３７】
次に、ホスト１は、プリンタ３にステータス要求を送って、プリンタ３からプリンタステータス（エンジンの状態、受信バッファの空きサイズ、１ページの印刷が成功したか、エラーが発生中か、など）を受信する（Ｓ５）。プリンタ３から送られてくるプリンタステータスには、例えば、図３に示すように、「バッファ空きサイズ」、「プリンタレディ」フラグ、「印刷成功」フラグ、「紙ジャム」フラグ、「アンダーランエラー」フラグなどが含まれている。ここで、「バッファ空きサイズ」とは、受信バッファの現在の空きサイズである。「プリンタレディ」フラグは、これが１にセットされて（つまり、立って）いれば、印刷エンジン２７が印刷動作可能であり（つまり、印刷エンジン２７がデータ受信可能で、印刷不能状態（紙無し、紙ジャム、カバーオープン、エンジン異常など）ではなく、かつ、定着器の温度が規定値である）、かつ、プリンタ３へのページ設定が終了していることを意味する。「印刷成功」フラグは、これが１にセットされて（つまり、立って）いれば、１ページの印刷が完了したから当該ページのデータを削除してよいことを意味する。「紙ジャム」フラグは、これが１にセットされていれば、紙ジャムが発生していることを示する。プリンタ３内では、ジャムした用紙が除去されれば、紙ジャムフラグは解消される。「アンダーランエラー」フラグは、これが１にセットされて（つまり、立って）いれば、アンダーランエラーが発生したことを意味する。プリンタ３内では、プリンタステータスが読まれると、アンダーランエラーフラグが解消される。
【００３８】
再び図２を参照する。プリンタ３は１ページの印刷が終了する度に、印刷の成功／失敗を示すフラグを立てる（成功の場合は印刷成功フラグを、失敗の場合は、その原因である紙ジャム又はアンダーランエラーのフラグを立てる）ようになっており、上記プリンタステータスはその結果を示している。ホスト１は、プリンタ３から取得したステータスに含まれる印刷成功やエラーのフラグを見て（Ｓ６）、「印刷成功」（つまり、印刷成功フラグが１）であれば（Ｓ６）、その成功したページのイメージデータ（つまり、未だ残っているイメージデータの中で最先のページのデータ）をホスト１内から削除し（Ｓ７）、「印刷失敗」（紙ジャム又はアンダーランエラーフラグが１）であれば（Ｓ９）、ステップＳ８のエラー処理に進んで印刷失敗したページから（つまり、まだ削除されていない送信済みの最先のページから）イメージデータを再送信する。再送信する場合、印刷失敗の原因が紙ジャムであった場合には、失敗したページから単純に前回と同じイメージデータを再送信する。一方、印刷失敗の原因がアンダーランエラーであった場合には、最初のエラー処理（Ｓ８）では、指定バンド数として１ページ分の全バンド数をプリンタ３に再指定してから（つまり、１ページの全データを受信し終わってからビデオ転送を開始するようプリンタ３に指定してから）、失敗したページから前回と同じイメージデータを送信する。そして、このように開始タイミングを１ページの全データ受信後に設定しても再びアンダーランエラーが生じたならば、ホスト１はエラー処理（Ｓ８）で、失敗したページからイメージデータの解像度をもっと低い値に変換して（例えば、６００ｄｐｉから３００ｄｐｉに落とし）、その解像度の低いイメージデータを再送信する。解像度を落とすことによってデータサイズが小さくなるので、再送信ではアンダーランエラーが生じにくくなる。尚、データ再送信の際、ホスト１が上記のように自動的に再送信を行っても良いが、別法として、エラーが発生したことをユーザに知らせて、再送するか否か及び解像度を落とすか否かを、ユーザに選択させてもよい。
【００３９】
ホスト１は、受信したプリンタステータスから次の▲１▼〜▲３▼の条件が満たされているかチェックし、全て満たされていれば、プリンタ３が１バンド以上のイメージデータを受信可能であると判断する（Ｓ１０）。
【００４０】
▲１▼プリンタレディフラグが１である。すなわち、印刷エンジン２７が印刷動作可能であり、かつ、プリンタ３のページ設定が完了している。
【００４１】
▲２▼受信バッファに、これから送信しようとするバンドデータの１バンド分（ヘッダサイズも含む）以上の空きがある。
【００４２】
▲３▼エラーが発生していない。
【００４３】
ステップＳ１０でプリンタ３が１バンド以上を受信可能と判断した場合にのみ、ホスト１はバンドヘッダ（圧縮データであるか否か（圧縮ON／OFF）、バンド圧縮サイズ（圧縮OFFの場合は元のバンドサイズ））と１バンドのイメージデータをプリンタ３へ送信する（Ｓ１１）。これにより、オーバーランエラー（受信バッファが満杯になり後続のデータが書き込めなくなるエラー）が回避される。尚、ホスト１は、バンドイメージデータを送信する前に、そのバンドデータが圧縮によってサイズが縮小する否か判断し、縮小する場合にはそのバンドデータを圧縮し、縮小しない場合は圧縮しない。プリンタ３は、ホスト１からのバンドイメージデータをＤＲＡＭ２１の受信バッファに蓄え、そして、受信バッファ４３内に、前述のステップＳ４でホスト１から指示された指定バンド数分のバンドデータが蓄えられた時点、又は受信バッファ４３内の空きサイズが１バンドデータ分未満になった時点でビデオ転送をスタートする。指定バンド数分のデータが蓄えられたらビデオ転送をスタートする。
【００４４】
次にホスト１は、１ページの全てのバンドデータを送信し終えたかチェックし（Ｓ１２）、送信し終えてなければ、次のバンドデータをプリンタ３へ送れるか否かを判断するために、受信バッファの空きサイズＮを計算する（Ｓ１３）。すなわち、前回（前のバンド送信直前）の受信バッファ空きサイズをＭ、前のバンドヘッダサイズをＨ、前のバンドサイズをＤとすると、
Ｎ＝Ｍ−（Ｈ＋Ｄ）
により空きサイズＮを求める。
【００４５】
そして、計算したバッファ空きサイズＮが、これから送信しようとするバンドデータの１バンド分（ヘッダサイズも含む）以上であれば（Ｓ１４）、続けてそのバンドデータを送信する（Ｓ１１）。このようにして、ホスト１は、送信前にプリンタステータスをチェックしてプリンタ３が１バンド以上のデータを受信できることを確認すると、後は、プリンタステータスをチェックすることなく、計算上でバッファ空きサイズＮが１バンド未満になるまで、続けて後続のバンドデータを送りつづける、つまり、計算でプリンタ３が受信可能と判断されるバンド数分のイメージデータを一気に連続してプリンタ３に送信する。そして、空きサイズＮが１バンド未満になると、ステップＳ５へ戻り、受信バッファに１バンド以上のサイズの空きが生じてプリンタ３が１バンド以上受信可能になるまで、プリンタステータスを受信する。これにより、オーバーランエラーを生じることなく、かつ、プリンタステータスをいちいちチェックする面倒もなしに、高速に印刷データをプリンタ３へ送ることができる。
【００４６】
図４は、プリンタ３がホスト１からデータを受信するときの動作フローを示す。
【００４７】
まず、ホスト１がプリンタ情報を要求してきた場合（Ｓ２１でＹＥＳ）、プリンタ３のＣＰＵ２３が、通信モード（例えば、パラレル通信の場合のECPやCompatibility）やＤＲＡＭサイズなどのプリンタ情報をホスト１に送信する（Ｓ２３）。また、プリンタ情報が準備できていない場合（Ｓ２２でＮＯ）（具体的には、プリンタイニシャライズ中、又はエラーからの復帰中である場合）には、準備中であることをホスト１に知らせる（Ｓ２４）。
【００４８】
プリンタ情報をホスト１に送信した後、プリンタ３のＣＰＵ２３は、ホスト１からイメージデータに関するホスト情報（解像度３００ｄｐｉ／６００ｄｐｉ、トータルバンド数、指定バンド数（ビデオ転送開始タイミング））を受信し、その情報を基にデータ受信に関するレジスタ設定、バッファクリアなどのページ設定を行う（Ｓ２５）。
【００４９】
次に、ホスト１からステータス要求があると（Ｓ２６）、プリンタ３はステータス（受信バッファ空きサイズ、プリンタレディ、印刷成功、エラー）をホスト１に返信する（Ｓ３１〜ＳＳ３６）。ステータス返信の際、プリンタ３は、成功枚数カウンタ（印刷成功したページであって、その印刷成功をホスト１に未だ通知していないページが何ページあるか示すカウンタ）の値を調べ（Ｓ３１）、その値が１以上であれば、印刷成功フラグを１にセットしたステータスを返信し（Ｓ３５）、成功枚数カウンタの値を１だけデクリメントして（Ｓ３６）から、ステップＳ２６へ戻る。一方、成功枚数カウンタの値が０の場合、印刷エラー（紙ジャム又はアンダーランエラー）が発生していれば（Ｓ３２）、その印刷エラーのフラグを１にセットしたステータスを返信し（Ｓ３４）、印刷エラーが発生してなければ、どの印刷成功フラグにもエラーのフラグにも１がセットされていないステータスを返信して（Ｓ３３）、ステップＳ２６へ戻る。いずれの場合でも、ステータスには、そのときの受信バッファの空きサイズがセットされている。空きサイズは、例えば、ＤＭＡコントローラ１３の転送ＤＭＡアドレスと受信ＤＭＡアドレスから計算する。前述したように、ホスト１は、このステータス情報を基にプリンタ１が１バンド分のデータを受信できるか判断し、受信できると判断すると、バンドデータをプリンタ３に送る。
【００５０】
ホスト１からバンドデータの送信があると（Ｓ２７）、プリンタ３はそのバンドデータを受信する（Ｓ２８）。前述のように、データ送信はバンド単位で行われ、１バンドのデータはバンドヘッダ（圧縮ON／OFF、バンド圧縮サイズ（圧縮OFFのときはバンドサイズ）のバンド情報）とバンドのイメージデータとから構成される。１バンド分のデータを受信する都度、受信バッファの空きサイズを計算し直してＤＲＡＭにセットして（Ｓ２９）ホストから都度ステータス要求に応えられるようにする。また、このバンドデータ受信の過程、（フローチャートには図示してないが）ホスト１から指定された指定バンド数分のデータが受信バッファに蓄えられると、又は、受信バッファオの空きサイズが１バンド未満になると、プリンタ３はＤＭＡコントローラ１３にビデオ転送を許可する。ビデオ転送はデータ受信と非同期に実行される。ビデオ転送が開始されると、ＤＭＡコントローラ１３が受信バッファからイメージデータを読み出してデータ伸張回路１５へ転送し、データ伸張回路１５、ビデオコントローラ１７及び後処理回路１９もそれぞれの処理を開始して、印刷エンジン２７が印刷を開始する。
【００５１】
上記のように指定バンド数が受信バッファに蓄積された時点でビデオ転送を開始することにより、アンダーランエラーが回避できる。それに加え、ビデオ転送の開始を必要最小限だけ遅らせるに過ぎないので、印刷速度も高い。なお、ページの最初でビデオ転送開始タイミング（上記指定バンド数）を決めても、ページの途中で圧縮率が低下したり、ホスト１からのデータ受信速度が低下したりすると、アンダーランエラーが発生する可能性が出てくる。この場合、バッファサイズより大きく確保するか、イメージの解像度を落として１ページの全データサイズＴを小さくする必要がある。特に解像度変換の効果は大きく、例えば、６００ｄｐｉから３００ｄｐｉに解像度を落とすとデータサイズＴは４分の１になる。従って、一旦アンダーランエラーが生じた後のデータ再送信の際に解像度変換を行うことは（図２、ステップＳ８）、アンダーランエラーを再び生じさせなくする効果が大きい。解像度変換により印刷画質は若干悪化するが、利用者にとって、印刷できないよりは好ましい。
【００５２】
図５は、ビデオ転送に関してプリンタ３のＣＰＵ２３が行う制御フローである。
【００５３】
プリンタ３のＣＰＵ２３は、ビデオ転送が可能であるか（すなわち、イメージデータがホスト１から指示された指定バンド数以上受信済みか、又は受信バッファの空きサイズが１バンドのデータサイズ未満か）をチェックし（Ｓ４１）、ビデオ転送が可能であれば、イメージデータに関するホスト情報（解像度、トータルバンド数など）を基にビデオ転送に関するレジスタ設定を行う（Ｓ４２）。次に、圧縮ON／OFF、圧縮バンドサイズ（圧縮OFFの場合はバンドサイズ）などのバンド情報を基にＤＭＡコントローラ１３の転送ＤＭＡに関するパラメータ（転送ＤＭＡドレスの開始ポイント、バンドデータのバイト数など）及びデータ伸張回路１５のパラメータ（伸張ＯＮ／ＯＦＦなど）を設定する。転送ＤＭＡアドレスの開始ポイントを設定する際、現在実行中（又は、これから開始する）の受信ＤＭＡアドレスの開始ポイントと、設定しようとしている転送ＤＭＡアドレスの開始ポイントとを比較し（Ｓ４３）、両者が一致する場合はアンダーランエラーと判断する。
【００５４】
アンダーランエラーが発生した場合、アンダーランエラーフラグをＤＲＡＭ２１のワークエリアにセットする（Ｓ４４）。このアンダーランエラーは、前述したようにホスト１がプリンタステータスを読み出すことによって（図２、Ｓ５）、ホスト１に通知される（アンダーランエラーの発生とホストへの通知は同期していない）。ホスト１がプリンタのステータスを読み出した時点で、アンダーランエラーフラグは解除される。前述したように、ホスト１は、アンダーランエラーを検知したら、ビデオ転送の開始タイミングを「１ページ受信完了後」に変更し、又はイメージデータの解像度を６００ｄｐｉから３００ｄｐｉに落として、失敗したバンドからデータを再送信する。
【００５５】
アンダーランエラーが発生していない場合、プリンタ３のＣＰＵ２３は、ＤＭＡコントローラ１３に１バンドの転送ＤＭＡを許可し（Ｓ４５）、それによりビデオ転送と印刷が開始される。１バンドの転送ＤＭＡが終了する都度、受信バッファの空きサイズを計算してＤＲＡＭ２１のワークエリアにセットし（Ｓ４６）、また、印刷エンジン２７の状態をチェックし、紙ジャムが発生していたら紙ジャムエラーフラグを１にセットしてＤＲＡＭ２１のワークエリアにセットする（Ｓ４８）。前述したように、ホスト１は紙ジャムを検知したら、パラメータを変更することなくデータを再送する。アンダーランエラーや紙ジャムが生じなければ、１ページの全バンドについて、各バンドの転送ＤＭＡ設定とビデオ転送とを繰り返す（Ｓ４９）。
【００５６】
１ページのビデオ転送が完了したら（Ｓ４９でＹＥＳ）、成功枚数カウンタを１だけインクリメントする（Ｓ５０）。そして、制御はステップＳ４１へ戻り、次のページのビデオ転送が同様の手順で開始される。イメージデータの圧縮率が高い、もしくは受信バッファサイズが十分に大きい場合は、複数ページのイメージデータが受信バッファに蓄えられ、印刷エンジン２７の最大スループットで連続印刷される。
【００５７】
図６は、ＤＲＡＭ２１の構成を示す。
【００５８】
既に説明したように、ＤＲＡＭ２１内にはワークエリア４１と受信バッファ４３が確保されている。ワークエリア３１はヒープメモリ及びスタックメモリとして使用される。受信バッファ４３はリングバッファとして利用される。図示の例では、ＤＲＡＭ２１の全エリアのうちバッファ先頭アドレスＢＵＦＴＯＰからバッファ最終アドレスＢＵＦＢＴＭまでが受信バッファ４３である。受信ＤＭＡでは、そのアドレスポイント（受信ＤＭＡアドレス）ＲＡＤを、バッファ先頭アドレスＢＵＦＴＯＰからバッファ最終アドレスＢＵＦＢＴＭへ向かう方向へ進めていき、バッファ最終アドレスＢＵＦＢＴＭに達するとバッファ先頭アドレスＢＵＦＴＯＰに戻る。同様に、転送ＤＭＡでも、そのアドレスポイント（転送ＤＭＡアドレス）ＴＡＤを、バッファ先頭アドレスＢＵＦＴＯＰからバッファ最終アドレスＢＵＦＢＴＭへ向かう方向へ進めていき、バッファ最終アドレスＢＵＦＢＴＭに達するとバッファ先頭アドレスＢＵＦＴＯＰに戻る。
【００５９】
図示の例は、受信バッファ４３にＢページのデータ５３を蓄積中であり、且つＢページの前のＡページのデータ５１のビデオ転送を開始しようとしている状態を示している。各ページのデータ５１、５３には、各ページイメージに関するホスト情報（解像度、トータルバンド数など）、各バンドの情報（圧縮ＯＮ／ＯＦＦ、圧縮バンドサイズなど）及び各バンドのイメージデータなどが含まれている。
【００６０】
この実施形態では、前述したように、プリンタ３はステータス返信時に受信バッファ４３の空きサイズを返信する。ホスト１は、プリンタ３から受信バッファ４３の空きサイズを取得し、それがこれから送ろうとするバンドのデータサイズより大きければ、バンドデータの送信を開始し、そして、１バンドのデータを送信する都度に残りの空きサイズを計算することで、プリンタ３から取得した空きサイズに収容できる限りのバンド数のバンドデータを連続してプリンタ３へ送信する。計算した受信バッファの空きサイズがこれから送ろうとする１バンドのデータサイズより小さくなると、ホスト１は、バンドデータの送信を一時止め、プリンタ３のステータスをチェックし続け、プリンタ３から通知される受信バッファの空きサイズがこれから送ろうとする１バンドのデータサイズより再び大きくなると、後続のバンドデータの送信を再開する。
【００６１】
以下に、プリンタ３側で受信バッファの空きサイズを把握する方法を説明する。
【００６２】
図７は、受信バッファ４３の２つの状態を示している。つまり、図７（Ａ）は「受信ＤＭＡアドレスＲＡＤ＞転送ＤＭＡアドレスＴＡＤ」の状態、図７（Ｂ）は「受信ＤＭＡアドレスＲＡＤ＜転送ＤＭＡアドレスＴＡＤ」の状態を示している。ハッチングで示した領域に受信データが蓄積されており、「空」と記した領域が空き領域である。
【００６３】
図７（Ａ）に示す「受信ＤＭＡアドレスＲＡＤ＞転送ＤＭＡアドレスＴＡＤ」のときには、
空き容量＝（ＴＡＤ−ＢＵＦＴＯＰ）＋（ＢＵＦＢＴＭ−ＲＡＤ）
であり、図７（Ｂ）に示す「受信ＤＭＡアドレスＲＡＤ＜転送ＤＭＡアドレスＴＡＤ」のときには、
空き容量＝ＴＡＤ−ＲＡＤ
である。
【００６４】
図８は、この空き容量の計算に用いられる回路（又はソフトの処理流れ）を示す。
【００６５】
図８において、ＴＡＤＳＴは転送ＤＭＡアドレスのスタートポイントであり、ＲＡＤＳＴは受信ＤＭＡアドレスのスタートポイントであり、既に述べたように、これらは各バンドの転送ＤＭＡ及び各バンドの受信ＤＭＡをそれぞれ開始するときにＣＰＵ２３によってそれぞれ設定される。ＴＡＤＣＮＴは転送ＤＭＡを行おうとする受信バッファのアドレスを示すカウンタであり、ＲＡＤＣＮＴは受信ＤＭＡを行おうとする受信バッファのアドレスを示すカウンタである。
【００６６】
転送ＤＭＡアドレスカウンタ６１は、各バンドの転送ＤＭＡが実行される間、転送ＤＭＡスタートアドレスＴＡＤＳＴを出力値の初期値として、その出力値を、バッファ先頭アドレスＢＵＦＴＯＰから受信バッファ最終アドレスＢＵＦＢＴＭまでリング状に循環するるように１づつ進めていく。この転送ＤＭＡアドレスカウンタ６１の出力値が転送ＤＭＡアドレスＴＡＤである。
【００６７】
同様に、受信ＤＭＡアドレスカウンタ６３は、各バンドの受信ＤＭＡが実行される間、受信ＤＭＡスタートアドレスＲＡＤＳＴを出力値の初期値として、その出力値を、バッファ先頭アドレスＢＵＦＴＯＰから受信バッファ最終アドレスＢＵＦＢＴＭまでリング状に循環するように１づつ進めていく。この受信ＤＭＡアドレスカウンタ６１の出力値が受信ＤＭＡアドレスＲＡＤである。
【００６８】
比較器６５が、転送ＤＭＡアドレスＴＡＤと受信ＤＭＡアドレスＲＡＤを比較して、いずれが大きいかを示すアドレス比較フラグＡＤＣＭＰＲをセットする。減算器６７、６９、７１が、「ＴＡＤ−ＢＵＦＴＯＰ＝ＴＳＵＢＴＰ」、「ＴＡＤ−ＲＡＤ＝ＴＳＵＢＲ」、「ＢＵＦＢＴＭ−ＲＡＤ＝ＢＴＳＵＢＲ」をそれぞれ計算する。
【００６９】
ＣＰＵ２３は、アドレス比較フラグＡＤＣＭＰＲを見て、「受信ＤＭＡアドレスＲＡＤ＞転送ＤＭＡアドレスＴＡＤ」のときには、
空き容量＝ＴＳＵＢＴＰ＋ＢＴＳＵＢＲ
とし、「受信ＤＭＡアドレスＲＡＤ＜転送ＤＭＡアドレスＴＡＤ」のときには、
空き容量＝ＴＳＵＢＲ
とする。
【００７０】
以上説明した実施形態によれば、ホスト１は、プリンタ３の受信バッファの空きサイズをプリンタ３から取得した後、プリンタ３が受信可能なバンド数分のデータを一気に（すなわち、途中でプリンタ３のステータスを読むことなく）プリンタ３へ送る。これにより、ホスト１がプリンタ３のステータスを取得する頻度が減り、プリンタ３のステータスを読むことで生じるオーバヘッドが小さくなるため、受信速度が向上し、ビデオ転送開始を早めることができる。ホスト１がプリンタステータスを取得する頻度が減ることにより、ステータス取得と次のステータス取得とのインターバルが長くなる。このインターバルの間に複数ページの印刷が完了する場合があるが、プリンタ３は１ページの印刷が完了する都度に成功枚数カウンタをインクリメントし、成功枚数カウンタが１以上である限りホスト１に印刷成功のステータスを通知し、そして、ホスト１が印刷成功のステータスを受信したら成功枚数カウンタをデクリメントすることで、印刷成功したページ数を取りこぼしなくホスト１に伝える。ホスト１は、印刷成功のステータスを受信すると、送信済みのページのデータを先のページから順番に削除する。また、ホスト１は、印刷失敗のステータスを受信すると、まだ削除されていない送信済みのデータのトップからデータをプリンタ３へ再送する。以上により、ホスト１からプリンタ３へのステータス要求を必要最小限になるのでホストからのデータ送信速度が高まりプリンタのスループットが向上し、また、ホスト１での印刷完了したデータの破棄や印刷失敗したデータの再送なども適切に行うことができる。
【００７１】
以上、本発明の一実施形態を説明したが、これらの実施形態はあくまで本発明の説明のための例示であり、本発明をこれら実施形態にのみ限定する趣旨ではない。従って、本発明は、上記実施形態以外の様々な形態でも実施することができるものである。
【図面の簡単な説明】
【図１】本発明の一実施形態の構成を示すブロック図。
【図２】ホスト１がプリンタ３へイメージデータ送るときときに各ページ毎に行う制御のフローチャート。
【図３】プリンタ３からホスト１に送られてくるプリンタステータスのデータフォーマットを示す図。
【図４】プリンタ３がホスト１からデータを受信するときのプリンタＣＰＵ２３の制御のフローチャート。
【図５】ビデオ転送の制御のフローチャート。
【図６】ＤＲＡＭ２１のメモリマップ。
【図７】受信バッファ４３の２つの状態を示す図。
【図８】空きバッファ容量の計算に用いられる回路（又はソフト）の構成図。
【符号の説明】
１  ホスト
３  プリンタ
１３  ＤＭＡコントローラ
２１  ＤＲＡＭ
２３  ＣＰＵ
４３  受信バッファ
【図１】
0003772585.tif 000002
【図２】
0003772585.tif 000003
【図３】
0003772585.tif 000004
【図４】
0003772585.tif 000005
【図５】
0003772585.tif 000006
【図６】
0003772585.tif 000007
【図７】
0003772585.tif 000008
【図８】
0003772585.tif 000009