(57)【要約】【課題】  ジョブ間のダウンタイムを最小限に抑える。【解決手段】  ホスト装置１が印刷ジョブを開始する際に、プリンタ７を占有状態に移行するように指示し、プリンタ７がホスト装置１からの指示に従ってプリンタ７を占有状態に移行させ、ホスト装置１が当該ジョブの印刷データを転送し終えると、プリンタ７からの印刷完了通知を待つことなく、占有解除状態に移行するように指示する。プリンタ７はホスト装置１からの指示に従ってプリンタ７を占有解除状態に移行させる。【選択図】      図１
2005202912.tif 000002
【特許請求の範囲】
【請求項１】
双方向インタフェースで接続されるホスト装置とプリンタとから構成され、前記ホスト装置にエラー回復のためのページメモリを有する印刷システムであって、
前記ホスト装置は、印刷ジョブを開始する際に、プリンタを占有状態に移行するように指示し、当該印刷ジョブの印刷データを転送し終えると、前記プリンタからの印刷完了通知を待つことなく、占有解除状態に移行するように指示する指示手段を有し、
前記プリンタは、前記ホスト装置からの指示に従ってプリンタを占有状態又は占有解除状態に移行させる手段を有することを特徴とする印刷システム。
【請求項２】
前記ホスト装置は、前記占有解除状態に移行するように指示した後に、前記プリンタのステータスを監視し、ページの印刷が正常終了した場合には前記ページメモリを解放することを特徴とする請求項１記載の印刷システム。
【請求項３】
前記ホスト装置は、前記占有解除状態に移行するように指示した後に、前記プリンタのステータスを監視し、エラーを検出した場合には前記占有状態に移行するように指示し、前記エラーが発生したページの印刷データを再送信することを特徴とする請求項１記載の印刷システム。
【請求項４】
前記ホスト装置は、前記占有状態に移行するように指示した後に、前記プリンタのステータスを監視し、他の印刷ジョブに関するエラーを検出した場合には前記占有解除状態に移行するように指示することを特徴とする請求項１記載の印刷システム。
【請求項５】
前記プリンタは、正常に印刷できなかったページがある場合、該ページの印刷を指示したホスト装置とは異なるホスト装置からの占有状態へ移行する指示を拒否することを特徴とする請求項１記載の印刷システム。
【請求項６】
前記プリンタは、占有中でない他の印刷ジョブに関するエラーを検出した場合には前記占有解除状態に移行することを特徴とする請求項１記載の印刷システム。
【請求項７】
双方向インタフェースで接続されるホスト装置とプリンタとから構成され、前記ホスト装置にエラー回復のためのページメモリを有する印刷システムの制御方法であって、
前記ホスト装置が、印刷ジョブを開始する際に、プリンタを占有状態に移行するように指示し、当該印刷ジョブの印刷データを転送し終えると、前記プリンタからの印刷完了通知を待つことなく、占有解除状態に移行するように指示する工程と、
前記プリンタが、前記ホスト装置からの指示に従ってプリンタを占有状態又は占有解除状態に移行させる工程とを有することを特徴とする印刷システムの制御方法。
【請求項８】
占有要求をプリンタに送信し、印刷ジョブのデータをプリンタに送信する工程と、
前記印刷ジョブのデータを送信し終えた場合、占有解除要求をプリンタに送信する工程と、
前記占有解除要求をプリンタに送信後、ステータスを監視し、エラーの場合、占有要求をプリンタに送信し、前記印刷ジョブのデータをプリンタに送信する工程とを有することを特徴とする印刷方法。
【請求項９】
占有要求をプリンタに送信し、印刷ジョブのデータをプリンタに送信する手段と、
前記印刷ジョブのデータを送信し終えた場合、占有解除要求をプリンタに送信する手段と、
前記占有解除要求をプリンタに送信後、ステータスを監視し、エラーの場合、占有要求をプリンタに送信し、前記印刷ジョブのデータをプリンタに送信する手段とを有することを特徴とするホスト装置。
【請求項１０】
請求項８記載の印刷方法をコンピュータに実行させるためのプログラム。
【請求項１１】
占有要求を受信した場合、エラージョブがあるか否かを判別する工程と、
前記エラージョブがあると判別された場合、占有要求のあったジョブとエラージョブとが一致しているか否かを判別する工程と、
前記占有要求のあったジョブとエラージョブとが一致している場合は正常応答し、前記占有要求のあったジョブとエラージョブとが一致していない場合はエラー応答する工程とを有することを特徴とする印刷方法。
【請求項１２】
占有要求を受信した場合、エラージョブがあるか否かを判別する手段と、
前記エラージョブがあると判別された場合、占有要求のあったジョブとエラージョブとが一致しているか否かを判別する手段と、
前記占有要求のあったジョブとエラージョブとが一致している場合は正常応答し、前記占有要求のあったジョブとエラージョブとが一致していない場合はエラー応答する手段とを有することを特徴とするプリンタ。
【請求項１３】
前記占有要求のあったジョブとエラージョブとが一致していない場合、占有解除状態に移行することを特徴とする請求項１２記載のプリンタ。
【請求項１４】
請求項１１記載の印刷方法をコンピュータに実行させるためのプログラム。
【請求項１５】
第１のジョブの占有要求に応じて該第１のジョブを占有状態にし、前記第１のジョブの占有解除要求に応じて該第１のジョブの占有状態を解除する手段と、
第２のジョブの占有中に、前記第１のジョブのエラーに応じて前記第２のジョブの占有状態を解除する手段とを有することを特徴とするプリンタ。
【請求項１６】
前記第２のジョブの占有状態を解除する手段は、第２のジョブの占有中に、前記第１のジョブのエラーに応じて前記第２のジョブの占有状態を解除し、前記第１のジョブの占有要求以外受付けないことを特徴とする請求項１５記載のプリンタ。
【請求項１７】
第１のジョブの占有要求に応じて該第１のジョブを占有状態にし、前記第１のジョブの占有解除要求に応じて該第１のジョブの占有状態を解除する工程と、
第２のジョブの占有中に、前記第１のジョブのエラーに応じて前記第２のジョブの占有状態を解除する工程とを有することを特徴とする印刷方法。
【請求項１８】
前記第２のジョブの占有状態を解除する工程は、第２のジョブの占有中に、前記第１のジョブのエラーに応じて前記第２のジョブの占有状態を解除し、前記第１のジョブの占有要求以外受付けないことを特徴とする請求項１７記載の印刷方法。
【請求項１９】
請求項１７又は請求項１８記載の印刷方法をコンピュータに実行させるためのプログラム。
【請求項２０】
印刷ジョブを開始する際に、プリンタを占有状態に移行するように指示し、印刷ジョブの印刷データを転送し終えると、前記プリンタからの印刷完了通知を待つことなく、占有解除状態に移行するように指示する指示手段と、
前記指示手段により占有解除状態に移行した後、ステータス監視処理を行い、エラーを検知した場合、プリンタを占有状態に移行するように指示する手段とを有することを特徴とする情報処理装置。
【請求項２１】
印刷ジョブを開始する際に、プリンタを占有状態に移行するように指示し、印刷ジョブの印刷データを転送し終えると、前記プリンタからの印刷完了通知を待つことなく、占有解除状態に移行するように指示する指示工程と、
前記指示工程により占有解除状態に移行した後、ステータス監視処理を行い、エラーを検知した場合、プリンタを占有状態に移行するように指示する工程とを有することを特徴とする印刷方法。
【請求項２２】
請求項２１記載の印刷方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、双方向インタフェースで接続されるホスト装置とプリンタとから構成され、前記ホスト装置にエラー回復のためのページメモリを有する印刷システムに関する。
【背景技術】
【０００２】
ホスト装置とプリンタとで構成される印刷システムにおいて、ジャムなどのエラー回復を行うために、プリンタにページメモリを具備し、プリンタでジャムなどのエラーが発生した場合には、そのページメモリに格納された印刷データを用いてエラー回復を行うのが一般的である。
【０００３】
しかしながら、このエラー回復方法では、少なくとも１ページの印刷データを保持可能な容量のメモリをプリンタに具備していなければエラー回復を行うことができない。またプリンタエンジンの最高印刷速度で印刷するには複数のページの給紙、印刷、排紙を並列に行う必要があるため、３ページ〜６ページ程度の印刷データを保持可能な容量のメモリをプリンタに具備していなければエラー回復が行えない。このため、特にデータサイズが大きい高解像度プリンタ或いはカラープリンタの場合、１ページの印刷データを保持するために大容量のメモリが必要になり、プリンタのコストが上昇するという問題がある。
【０００４】
そこで、この問題を解決するために、エラー回復用のページメモリをホスト装置に具備することにより、プリンタのメモリ容量を最小限に抑える技術（例えば、特許文献１及び特許文献２参照。）が知られている。
【特許文献１】特開平８−２５８３７５号公報
【特許文献２】特開平９−２８２１１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、これらの方法では、１つの印刷ジョブが終了するまでの間は、他の印刷ジョブのページが割り込まないようにプリンタを占有する必要があるため、その印刷ジョブの最終ページが排紙され、印刷が正常に終了するまでプリンタを占有しつづけなければならず、また別の印刷ジョブのページを連続して印刷することができないため、ジョブ間にダウンタイムが生じてしまい、パフォーマンスが低下するという問題がある。
【０００６】
本発明は、上記課題を解決するためになされたもので、ジョブ間のダウンタイムを最小限に抑えることを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、双方向インタフェースで接続されるホスト装置とプリンタとから構成され、前記ホスト装置にエラー回復のためのページメモリを有する印刷システムであって、前記ホスト装置は、印刷ジョブを開始する際に、プリンタを占有状態に移行するように指示し、当該ジョブの印刷データを転送し終えると、前記プリンタからの印刷完了通知を待つことなく、占有解除状態に移行するように指示する指示手段を有し、前記プリンタは、前記ホスト装置からの指示に従ってプリンタを占有状態又は占有解除状態に移行させる手段を有することを特徴とする。
【０００８】
また、本発明は、双方向インタフェースで接続されるホスト装置とプリンタとから構成され、前記ホスト装置にエラー回復のためのページメモリを有する印刷システムの制御方法であって、前記ホスト装置は、印刷ジョブを開始する際に、プリンタを占有状態に移行するように指示し、当該ジョブの印刷データを転送し終えると、前記プリンタからの印刷完了通知を待つことなく、占有解除状態に移行するように指示する工程を有し、前記プリンタは、前記ホスト装置からの指示に従ってプリンタを占有状態又は占有解除状態に移行させる工程を有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ジョブ間のダウンタイムを最小限に抑えることができ、印刷システムのパフォーマンスを向上させることができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。尚、本実施例では、複数のホスト装置とプリンタとが双方向インタフェースを介して接続され、ホスト装置からプリンタへ送出される印刷ジョブにおけるジョブ間のダウンタイムを最小限に抑える方法について説明する。
【実施例１】
【００１１】
図１は、実施例１におけるホスト装置の構成を示すブロック図である。図１において、１（１１）はホスト装置として機能するパーソナルコンピュータやワークステーションであり、ＣＰＵ、メモリ、ハードディスク、フレキシブルディスクドライブ、キーボード、マウス、モニタ、ネットワークインタフェースなどのハードウェア（不図示）を備える。２（１２）はオペレーティングシステムであり、コンピュータ１（１１）が備えるハードウェア、及び後述するアプリケーション、プリンタドライバ、ランゲージモニタ、ネットワークポートドライバなどのソフトウェアモジュールを管理する。
【００１２】
３（１３）はアプリケーションであり、例えばワードプロセッサのようなソフトウェアであり、操作者の指示に従って文書の作成或いは印刷などを行う。４（１４）はプリンタドライバであり、アプリケーション３（１３）から発行された印刷指令をオペレーティングシステム２（１２）を経由して受け取り、その印刷指令を後述するランゲージモニタ、及びプリンタが解釈可能なプリンタコマンドに変換する。５（１５）はランゲージモニタであり、プリンタドライバ４（１４）から出力されたプリンタコマンドを受け取り、後述するネットワークポートドライバを介してプリンタに送信する。
【００１３】
尚、実施例１では、プリンタドライバ４（１４）はアプリケーション３から発行された印刷指令に基づき、画像データに変換して圧縮し、圧縮した画像データを、用紙サイズ、画像データのライン長とライン数などを指定するページ開始コマンド、画像データの終了を示す画像データ終了コマンドと共に出力するものとする。
【００１４】
また、コンピュータ１（１１）のメモリに、詳細は後述するページバッファを定義し、そのページバッファにプリンタドライバ４（１４）が圧縮した画像データを格納するものとする。
【００１５】
６（１６）はネットワークポートドライバであり、ランゲージモニタ５（１５）が出力したプリンタコマンドを、ネットワークインタフェースを介してプリンタへ送信すると共に、プリンタからステータスを受信した場合、ランゲージモニタ５（１５）に出力する。７はプリンタであり、ネットワークポートドライバ６（１６）から出力されたプリンタコマンドを受信し、そのプリンタコマンドに従って印刷処理を行う。
【００１６】
図２は、実施例１におけるプリンタ７の構成を示す概略ブロック図である。尚、実施例１では、プリンタとして電子写真方式のレーザビームプリンタを例に説明するが、本発明はこれに限らず、インクジェット方式のプリンタに適用しても良い。
【００１７】
図２において、２１はネットワークインタフェースであり、コンピュータ１（１１）とネットワークを介して行われるデータ通信を制御する。例えば、コンピュータ１（１１）から上述のプリンタコマンドを受信し、コンピュータ１（１１）へプリンタのステータスを送信する。２２はＦＩＦＯ（ファーストインファーストアウト）メモリであり、ネットワークインタフェース２１が受信した圧縮された画像データを格納する。２３は復号回路であり、ＦＩＦＯメモリ２２から圧縮された画像データを読み出し、復号化し、後述するプリンタエンジンに出力する。２４はプリンタエンジンであり、後述する制御回路の指示により、復号回路２３が出力した画像データに従って印刷を行う。２５は制御回路であり、例えば１チップＣＰＵで構成され、上述のネットワークインタフェース２１、ＦＩＦＯメモリ２２、復号回路２３及びプリンタエンジン２４の制御を行う。
【００１８】
ここで、上述した構成を有するコンピュータ１及び１１とプリンタ７とから構成される印刷システムにおける印刷動作の概要について説明する。
【００１９】
操作者がコンピュータ１側でアプリケーション３を操作し、文書の印刷を指示すると、印刷指令がアプリケーション３からオペレーティングシステム２を経由してプリンタドライバ４へ渡される。これにより、プリンタドライバ４がアプリケーション３から発行された印刷指令に基づき、画像データ（ビットマップデータ）に変換して圧縮し、圧縮された画像データを、用紙サイズ、画像データのラインの長さとライン数などを指定するページ開始コマンド及び画像データの終了を示す画像データ終了コマンドと共に出力する。
【００２０】
そして、プリンタドライバ４からプリンタコマンドが出力されると、オペレーティングシステム２はランゲージモニタ５にジョブの開始を通知した後、プリンタドライバ４から出力されたプリンタコマンドを順次ランゲージモニタ５に引き渡す。ここで、ランゲージモニタ５が印刷ジョブを開始すると、占有要求コマンドを、ネットワークポートドライバ６を介してプリンタ７へ送信する。
【００２１】
これにより、ランゲージモニタ５がプリンタ７の占有に成功すると、オペレーティングシステム２から受け取ったプリンタコマンドを、ネットワークポートドライバ６を介して順次プリンタ７へ送信する。尚、ランゲージモニタ５は、画像データコマンドをプリンタ７に送信する前にステータス要求コマンドを送信し、プリンタ７のステータスを取得し、画像データコマンドが送信可能であることを確認する。そして、ランゲージモニタ５が、１ページのプリンタコマンドを送信し終えると、印刷要求コマンドを送信する。
【００２２】
一方、プリンタ７の制御回路２５がネットワークインタフェース２１を介して印刷要求コマンドを受信すると、プリンタエンジン２４に対して印刷開始を指示する。これにより、プリンタエンジン２４は、給紙を行い、用紙が所定の位置に達したときに画像データの出力を要求する。画像データの出力が要求されると、復号回路２３はＦＩＦＯメモリ２２から圧縮された画像を読み出し、復号した元の画像データをプリンタエンジン２４に出力する。このときＦＩＦＯメモリ２２から読み出された画像データは、ＦＩＦＯメモリ２２から取り除かれる。
【００２３】
その後、ランゲージモニタ５がページの印刷を正常に終了したことを示すステータスをプリンタ７から取得した場合には、該当するページメモリを解放する。また、ランゲージモニタ５がページの印刷を正常に終了していないことを示すエラーステータスをプリンタ７から取得した場合には、印刷が正常に終了していないページから再送信を試みる。
【００２４】
このようにして、１つの印刷ジョブにおける全ページのプリンタコマンドを転送し終えると、ランゲージモニタ５は排紙完了を待たずに、占有解除コマンドを送信する。また、ランゲージモニタ５が占有解除コマンドを送信した後も、プリンタ７のステータス取得を続け、取得したステータスがページの印刷が正常に終了したことを示した場合には、該当するページメモリを解放する。また、エラーが検出された場合は、再度占有要求コマンドを送信し、エラーページの回復を試みる。
【００２５】
次に、図３を参照しながらランゲージモニタ５が管理するジョブ管理情報のデータ構造について説明する。
【００２６】
図３は、実施例１におけるジョブ管理情報のデータ構造の一例を示す図である。図３に示すように、ジョブキュー（JobQueue）３０１は、ジョブ管理情報３１０の先頭アドレスを示している。このジョブ管理情報３１０には、リンクリストを構成するネクストジョブ（NextJob）３１１を含み、オペレーティングシステム２からジョブの開始が通知される毎にネクストジョブ３１１によってリンクリストの末尾に新しいジョブ管理情報がリンクされる。
【００２７】
カレントジョブ（CurrentJob）３０２は、送信が終了していない先頭のジョブ管理情報のアドレスを指すものであり、ジョブの全ページのプリンタコマンドを送信し終えると、このジョブ管理情報のネクストジョブ３１１に基づいて次のジョブ管理情報のアドレスを指すように更新される。
【００２８】
また、ジョブ管理情報３１０には、ジョブを識別するためのジョブ番号（JobNumber）３１３を含み、このジョブ番号３１３には占有要求コマンドの応答でプリンタ７から通知される番号が格納される。また、ジョブ管理情報３１０には、このジョブ管理情報３１０で管理されるページ管理情報３２０の先頭のアドレスを示すページキュー（PageQueue）３１２を含む。このページ管理情報３２０には、リンクリストを構成するネクストページ（NextPage）３２１を含み、オペレーティングシステム２から１ページ分の画像データを渡される毎にネクストページ３２１によってリンクリストの末尾に新しいページ管理情報がリンクされる。
【００２９】
カレントページ（CurrentPage）３０３は、送信が終了していない先頭のページ管理情報のアドレスを指すものであり、１ページの全プリンタコマンドを送信し終えると、このページ管理情報のネクストページ３２１に基づいて次のページ管理情報のアドレスを指すように更新される。
【００３０】
また、ページ管理情報３２０には、ページを識別するためのページ番号（PageNumber）３２２を含み、このページ番号３２２には後述する手順により、占有要求時に決定された基底ページ番号の次から始まる連続番号が格納される。また、ページ管理情報３２０には、このページ管理情報３２０で管理されるページバッファ（PageBuffer）３３０の先頭のアドレスを示すバッファ（Buffer）３２３を含む。このページバッファ３３０には、そのページを構成する一連のプリンタコマンドが格納される。
【００３１】
そして、カレントコマンド（CurrentCmd）３０４は、ページバッファ３３０内の送信が終了していない、先頭のプリンタコマンドのアドレスを示し、１つのプリンタコマンドを送信すると、その次のプリンタコマンドを指すように更新される。
【００３２】
ここで、ランゲージモニタ５がプリンタ７からカレントページ３０３で示されるページの印刷が正常終了した旨のステータスを受信すると、そのページのページバッファ３３０及びページ管理情報３２０を解放し、ジョブ管理情報３１０のページキュー３１２をその次のページ管理情報を指すように更新する。その後、カレントコマンド３０４で示されるプリンタコマンドを全て送信し、カレントジョブ３０２で示されるジョブ管理情報３１０のページキュー３１２で示されるページの印刷が全て正常終了し、ページ管理情報３２０を全て解放すると、このジョブのジョブ管理情報３１０を解放し、カレントジョブ３０２をジョブキュー３０１が示す次のジョブ管理情報のアドレスを指すように更新する。
【００３３】
次に、図４を参照しながら実施例１におけるランゲージモニタ５が実行する処理を詳細に説明する。
【００３４】
図４は、実施例１におけるランゲージモニタの処理を示すフローチャートである。まずステップＳ１において、ランゲージモニタ５が詳細は後述するステータス監視処理を行い、プリンタ７のステータスを取得する。そして、ステップＳ２において、ステップＳ１で取得したステータスを参照し、エラーが発生しているか否かを判定する。ここで、エラーが発生している場合はステップＳ３へ進み、ジョブとページを全て未送信に戻す。具体的には、図３に示すカレントジョブ３０２に、ジョブキュー３０１に格納されている先頭のジョブ管理情報３１０のアドレスを格納し、またカレントページ３０３に、先頭のジョブ管理情報３１０のページキュー３１２に格納されている先頭のページ管理情報３２０のアドレスを格納し、更にカレントコマンド３０４に、先頭のジョブ管理情報３１０の先頭のページ管理情報３２０のバッファ３２３に格納されているページバッファの先頭のアドレスを格納する。また、ステップＳ２において、エラーが発生していない場合は、そのままステップＳ４へ進む。
【００３５】
次に、ステップＳ４において、未送信のジョブがあるか否かを判定し、未送信ジョブがない場合はステップＳ１に戻り、オペレーティングシステム２からジョブの開始が通知されるのを待つ。また、未送信ジョブがある場合はステップＳ５へ進み、プリンタ７へ占有要求コマンドを送信する。この占有要求コマンドを送信するときに、このジョブ管理情報３１０のジョブ番号３１３をパラメータとして通知する。尚、ジョブ番号３１３の初期値は“０”なので、このジョブの最初の占有時には、“０”が通知される。
【００３６】
次に、ステップＳ６において、占有要求応答を受信し、正常応答でない場合、プリンタ７の占有に失敗しているので、ステップＳ１に戻り、再度占有を試みる。また、正常応答である場合は、通知されたジョブ番号をジョブ管理情報のジョブ番号３１３に記録すると共に、現在占有中のジョブ番号（不図示）に格納する。そして、ステップＳ７において、ステータス監視処理を行う。
【００３７】
次に、ステップＳ８において、ステップＳ７で取得したステータスを参照し、エラーが発生しているか否かを判定する。ここで、エラーが発生していない場合はステップＳ９へ進み、プリンタ７が印刷中であるか否かを判定する。ここで、プリンタ７が印刷中でない場合はステップＳ１０へ進み、送信ページ番号に“０”を格納し、次のステップＳ１１において、データクリアコマンドを送信する。このとき、ページ番号の初期値として“０”を指定する。
【００３８】
また、ステップＳ９において、プリンタ７が印刷中である場合はステップＳ１２へ進み、ステップＳ７で取得したステータスを参照し、送信ページ番号に印刷開始ページ番号を格納する。そして、ステップＳ１３において、後述するデータ転送処理を行う。処理中のジョブのページを全て送信し終えるか、或いはエラーを検出するとデータ転送処理が終了するので、ステップＳ１４へ進み、ステップＳ１３で取得した最新のステータスを参照し、エラーが発生しているか否かを判定する。ここで、エラーが発生していない場合は、処理中のジョブのページを全て送信し終えた場合なので、ステップＳ１５へ進み、占有解除コマンドを送信する。このとき、現在占有中のジョブ番号をクリアする。そして、上述のステップＳ１に戻る。
【００３９】
この後、ステップＳ１、Ｓ２、Ｓ４からなるループを実行し、ジョブの全ページの印刷が正常終了した場合に、ステップＳ１におけるステータス監視処理内でジョブ終了処理が行われる。また、ジョブの全ページの印刷が正常終了する前に、エラーが発生した場合はステップＳ３〜Ｓ５へ進み、プリンタの占有を行い、エラーが発生したページからデータ転送をやり直す。
【００４０】
また、ジョブの全ページの印刷が正常に終了する前に、次のジョブの開始を通知された場合はステップＳ５へ進み、プリンタの占有を行い、上述した処理を行い、エラーが発生していなければ、ステップＳ１３において、新しいジョブのデータ転送処理を行う。
【００４１】
その後、ステップＳ８又はＳ１４において、エラーが発生した場合はステップＳ１６へ進み、ジョブとページを全て未送信に戻す。そして、ステップＳ１７において、取得した最新のステータスを参照し、プリンタステータスの先頭ジョブ番号と、現在占有中のジョブ番号とが同一であるか否かを判定する。ここで、プリンタステータスの先頭ジョブ番号と、現在占有中のジョブ番号とが同一である場合はステップＳ１０へ進み、以下、エラーが発生したページからデータの転送をやり直す。
【００４２】
また、プリンタステータスの先頭ジョブ番号と、現在占有中のジョブ番号が同一でない場合、即ち、前のジョブが終了する前に新しいジョブを開始し、前のジョブのページ印刷でエラーが発生した場合はステップＳ１５へ進み、占有解除コマンドを送信し、上述したステップＳ１に戻る。
【００４３】
その後、ステップＳ１、Ｓ２、Ｓ４を経由してＳ５へ進み、プリンタの占有を試みる。後述するように、プリンタの先頭ジョブが、そのホストが発行したジョブであれば直ちに占有が認められ、以下エラーが発生したページからデータの転送をやり直す。そうでない場合は、エラー回復が行われてプリンタの先頭ジョブが正常終了するまで、占有は拒否される。
【００４４】
図５は、図４のＳ１３に示すデータ転送処理の詳細を示すフローチャートである。まずステップＳ３０において、送信すべき印刷データがあるか否かを判定する。ここで、送信すべき印刷データがない場合は、直ちに処理を終了する。また、送信すべき印刷データがある場合はステップＳ３１へ進み、送信ページ番号をインクリメントし、ページ管理情報３２０のページ番号３２２に格納する。次に、ステップＳ３２において、ステータス監視処理を行う。そして、ステップＳ３３において、エラーが発生しているか否かを判定する。ここで、エラーが発生している場合は、直ちに処理を終了する。また、エラーが発生していない場合はステップＳ３４へ進み、ステップＳ３２で取得したプリンタステータスを参照し、印刷データの送信が可能か判定する。
【００４５】
このステップＳ３４で、印刷データの送信が可能である場合はステップＳ３７へ進み、印刷データを送信する。そして、ステップＳ３８において、１ページのデータ送信が終了したか否かを判定する。ここで、１ページのデータ送信が終了していない場合はステップＳ３２に戻り、現在送信中のページのデータ送信を続ける。また、１ページのデータ送信が終了している場合はステップＳ３９へ進み、このページの印刷要求を発行済みであるか否かを判定する。このページの印刷要求を発行済みである場合はステップＳ３０に戻り、次のページのデータ送信を行う。また、このページの印刷要求を発行済みでない場合にはステップＳ４０へ進み、印刷要求コマンドを送信し、ステップＳ３０に戻る。
【００４６】
また、ステップＳ３４において、印刷データの送信が可能でない場合はステップＳ３５へ進み、このページの印刷要求を発行済みであるか否かを判定する。ここで、このページの印刷要求を発行済みである場合はステップＳ３２に戻り、印刷データが送信可能になるまで待つ。また、このページの印刷要求を発行済みでない場合はステップＳ３６へ進み、ステップＳ３２で取得したプリンタステータスを参照し、前ページの画像データの出力が終了しているか否かを判定する。ここで、前ページの画像データの出力が終了していない場合は、プリンタ７のＦＩＦＯメモリ２２に、前ページの画像データの一部が格納されているので、ステップＳ３２に戻り、印刷データが送信可能になるまで待つ。
【００４７】
また、ステップＳ３６において、前ページの画像データの出力が終了している場合は、プリンタ７のＦＩＦＯメモリ２２には、前ページの画像データが全く格納されておらず、待っていても空きができる可能性はないので、ステップＳ４１へ進み、印刷要求コマンドを送信し、ステップＳ３２に戻る。
【００４８】
図６は、ステータス監視処理の詳細を示すフローチャートである。まずステップＳ５１において、プリンタ７へステータス要求コマンドを送信する。そして、ステップＳ５２において、プリンタ７からのステータス応答を受信し、エラーが発生しているか否かを判定する。ここで、エラーが発生している場合には、直ちに処理を終了する。また、エラーが発生していない場合にはステップＳ５３へ進み、印刷完了したページがあるか否かを判定する。
【００４９】
具体的には、受信したステータスの印刷完了ページ番号とページ管理情報３２０のページ番号３２２とを比較し、等しいページ番号があれば、そのページの印刷が完了していると判定する。等しいページが存在しなければ、直ちに処理を終了するが、等しいページが存在した場合にはステップＳ５６へ進み、そのページのページバッファ３３０及びページ管理情報３２０を削除する。
【００５０】
次に、ステップＳ５７において、印刷完了したページが属するジョブのページの印刷が全て完了したか否かを判定する。そのページが属するジョブのページの印刷が完了していない場合には、直ちに処理を終了する。また、そのページが属するジョブのページの印刷が全て完了した場合にはステップＳ５８へ進み、そのジョブのジョブ管理情報３１０を削除し、処理を終了する。
【００５１】
次に、図７を参照しながら上述したランゲージモニタ５からのプリンタコマンドを受信するプリンタ７側の制御回路２５によって実行されるコマンド処理について説明する。
【００５２】
図７は、プリンタ７におけるコマンド処理を示すフローチャートである。まずステップＳ１０１において、ネットワークインタフェース２１がプリンタコマンドを受信するのを待ち、コマンド受信が行われた場合はステップＳ１０２へ進み、受信コマンドが占有要求コマンドであるか否かを判定する。ここで、占有要求コマンドであった場合はステップＳ１２１へ進み、現在プリンタが占有されているか否かを判定し、占有されている場合にはステップＳ１２６へ進み、エラー応答を送信し、ステップＳ１０１に戻る。
【００５３】
また、現在プリンタが占有されていない場合にはステップＳ１２２へ進み、エラージョブがあるか、即ちエラージョブ番号が“０”以外であるか判定する。エラージョブがない場合にはステップＳ１２３へ進み、次ジョブ番号を占有ジョブ番号に格納し、ステップＳ１２４において、次ジョブ番号をインクリメント（＋１）する。尚、次ジョブ番号の初期値は“１”である。そして、ステップＳ１２５において、占有ジョブ番号と共に正常応答を送信し、ステップＳ１０１に戻る。
【００５４】
また、ステップＳ１２２において、エラージョブがあった場合にはステップＳ１４１へ進み、エラージョブ番号と占有要求コマンドに付加されたジョブ番号とが一致するか否かを判定する。ここで、エラージョブ番号と占有要求コマンドに付加されたジョブ番号とが一致しない場合にはステップＳ１４５へ進み、エラー応答を送信し、ステップＳ１０１に戻る。また、エラージョブ番号と占有要求コマンドに付加されたジョブ番号とが一致した場合にはステップＳ１４２へ進み、エラージョブ番号を占有ジョブ番号に格納する。そして、ステップＳ１４３において、エラージョブ番号をクリアし、続くステップＳ１４４において、占有ジョブ番号と共に正常応答を送信し、ステップＳ１０１に戻る。
【００５５】
一方、上述のステップＳ１０２において、受信コマンドが占有要求コマンドでなかった場合はステップＳ１０３へ進み、受信コマンドがデータクリアコマンドであるか否かを判定する。ここで、受信コマンドがデータクリアコマンドであった場合はステップＳ１３１へ進み、データクリア処理を行い、ステップＳ１０１に戻る。このデータクリア処理は、具体的には、ＦＩＦＯメモリ２２に格納された画像データ及び制御回路２５のワーク領域に格納されたページ開始コマンドなどをクリアすると共に、データクリアコマンドで指定されたページ番号を印刷開始ページ番号、画像出力完了ページ番号、及び印刷完了ページ番号に格納する処理である。
【００５６】
また、ステップＳ１０３において、受信コマンドがデータクリアコマンドでなかった場合にはステップＳ１０４へ進み、受信コマンドが印刷データコマンドであるか否かを判定する。ここで、受信コマンドが印刷データコマンドであった場合はステップＳ１３２へ進み、印刷データ処理を行い、ステップＳ１０１に戻る。この印刷データ処理は、具体的には、印刷データコマンドとして画像データコマンドを受信したのであればＦＩＦＯメモリ２２に画像データを格納し、またページ開始コマンドを受信したのであれば制御回路２５のワーク領域に格納する処理である。
【００５７】
また、ステップＳ１０４において、受信コマンドが印刷データコマンドでなかった場合はステップＳ１０５へ進み、受信コマンドが印刷要求コマンドであるか否かを判定する。受信コマンドが印刷要求コマンドであった場合はステップＳ１３３へ進み、印刷開始要求処理を行い、ステップＳ１０１に戻る。この印刷開始要求処理は、具体的には、先に受信したページ開始コマンドに従ってプリンタエンジン２４に対し印刷開始を要求すると共に、印刷開始ページ番号をインクリメント（＋１）する処理である。
【００５８】
また、ステップＳ１０５において、受信コマンドが印刷要求コマンドでなかった場合はステップＳ１０６へ進み、受信コマンドがステータス要求コマンドであるか否かを判定する。受信コマンドがステータス要求コマンドであった場合にはステップＳ１３４へ進み、ステータス応答を送信することによりプリンタステータスを通知する。ここで通知されるプリンタステータスには、先頭ジョブ番号、エラー状態、印刷開始ページ番号、画像出力完了ページ番号、及び印刷完了ページ番号が含まれる。そして、ステップＳ１０１に戻る。
【００５９】
また、ステップＳ１０６において、受信コマンドがステータス要求コマンドでなかった場合は、占有解除コマンドを受信した場合であり、ステップＳ１３５へ進み、占有ジョブ番号をクリアし、ステップＳ１０１に戻る。
【００６０】
次に、図８を参照しながら上述したコマンド処理と並列に実行される印刷処理について説明する。
【００６１】
図８は、実施例１におけるプリンタ７の印刷処理を示すフローチャートである。まず、ステップＳ２０１において、印刷が正常終了したページがあるか否かを判定する。ここで、印刷が正常に終了したページがなければ後述するステップＳ２１１へ進む。また、印刷が正常に終了したページがあればステップＳ２０２へ進み、印刷完了ページ番号をインクリメント（＋１）する。そして、ステップＳ２０３において、印刷が正常終了したページが属するジョブの全ページの印刷が正常終了したか否かを判定する。印刷が正常終了したページが属するジョブの全ページの印刷が正常終了していない場合は後述するステップＳ２１１へ進む。また、印刷が正常終了したページが属するジョブの全ページの印刷が正常終了した場合はステップＳ２０４へ進み、先頭ジョブのジョブ終了処理を行う。そして、ステップＳ２０５において、未終了ジョブがあるか否かを判定する。未終了ジョブがあった場合はステップＳ２０６へ進み、先頭ジョブ番号を更新した後に、ステップＳ２１１へ進む。また、未終了ジョブがなかった場合はステップＳ２０７へ進み、先頭ジョブ番号をクリアした後、ステップＳ２１１へ進む。
【００６２】
次に、ステップＳ２１１において、画像出力が終了したページがあるか否かを判定し、画像出力が終了したページがなかった場合は、そのままステップＳ２２１へ進む。また、画像出力が終了したページがあった場合はステップＳ２１２へ進み、画像出力完了ページ番号をインクリメント（＋１）し、ステップＳ２２１へ進む。
【００６３】
次に、ステップＳ２２１において、エラーが発生しているか否かを判定する。ここで、エラーが発生していない場合はステップＳ２０１に戻るが、エラーが発生している場合はステップＳ２２２へ進み、先頭ジョブ以外のジョブの終了処理を行う。そして、ステップＳ２２３において、先頭ジョブが現在プリンタを占有中であるか、即ち先頭ジョブ番号と占有ジョブ番号とが一致するか否かを判定する。ここで、先頭ジョブが現在プリンタを占有中である場合にはステップＳ２０１に戻る。また、先頭ジョブが現在プリンタを占有中でない場合にはステップＳ２２４へ進み、先頭ジョブ番号をエラージョブ番号に格納し、ステップＳ２０１に戻る。
【００６４】
以上に説明したように、実施例１によれば、ホスト装置が印刷ジョブの全ページを送信し終えたときに、プリンタからの排紙完了通知を待つことなく、プリンタの占有を解除することで、次の印刷ジョブのデータ送信を直ちに開始することができ、ジョブ間のダウンタイムを避けることができる。また、エラー回復用のページメモリをホスト装置に保持することにより、エラーが発生した場合にもエラーの回復を正しく行うことができる。
【実施例２】
【００６５】
次に、図面を参照しながら本発明に係る実施例２について詳細に説明する。実施例１では、占有中でない他の印刷ジョブに関するエラーが発生した場合に、プリンタ側はホスト装置からの指示に従って占有解除状態に移行しているが、実施例２では占有中でない他の印刷ジョブに関するエラーが発生した場合に、プリンタ側で占有状態を強制的に解除するものである。
【００６６】
尚、実施例２におけるホスト装置及びプリンタの構成は、図１及び図２に示した構成と同様であり、その詳細な説明は省略する。
【００６７】
また、実施例２でも実施例１と同様に、ランゲージモニタ５が図３に示したジョブ管理情報に基づいて印刷ジョブを管理するものとする。
【００６８】
ここで、図１１を用いてエラーが発生した際のジョブの占有状態から占有解除状態への移行について説明する。
【００６９】
まず、Ｔ１でジョブＡの占有要求により、プリンタはジョブＡに占有される。そして、Ｔ２でジョブＡの転送が終わると、ジョブＡの占有が解除される。
【００７０】
次に、Ｔ３でジョブＢの占有要求により、プリンタはジョブＢに占有される。その後、Ｔ４でジョブＡのエラーが検知されると、Ｔ５の実施例１では、ホストからの指示によりジョブＢの占有が解除される。またＴ６の実施例２では、プリンタ側でジョブＢの占有が解除される。
【００７１】
Ｔ７の期間では、プリンタはジョブＡの占有要求以外は受け付けない。例えば、Ｔ８でジョブＣの占有要求が来ても受付けない。
【００７２】
Ｔ９でジョブＡの占有要求に応じてジョブＡが占有し、エラーのリカバリ処理を行う。その後、Ｔ１０でジョブＡの転送が終わると、ジョブＡの占有が解除される。
【００７３】
次に、Ｔ１１でジョブＢは途中で（Ｔ４で）占有が解除されてしまったので、再送信を行うために、占有要求を行いプリンタを占有する。Ｔ１２でジョブＢの転送が終わると、ジョブＢの占有が解除される。
【００７４】
次に、図９を参照しながら実施例２におけるランゲージモニタ５が実行する処理を詳細に説明する。尚、図９に示すステップＳ３０１〜Ｓ３１６の処理は、実施例１で参照した図４に示したステップＳ１〜Ｓ１６の処理と同じであり、ここでは、異なる部分について説明する。
【００７５】
図９は、実施例２におけるランゲージモニタの処理を示すフローチャートである。上述した実施例１と同様に、ランゲージモニタ５がオペレーティングシステム２からジョブの開始を通知され、プリンタ７へ占有要求コマンドを送信した後、ジョブの全ページの印刷が正常に終了する前に次のジョブの開始が通知されると、プリンタの占有を行い、新しいジョブのデータ転送処理を行い、ステータス監視処理により、エラーが発生した場合は、ステップＳ３０８又はＳ３１４からステップＳ３１６へ進む。
【００７６】
このステップＳ３１６において、ジョブとページを全て未送信に戻し、次のステップＳ３１７において、取得した最新のステータスを参照し，現在占有中のジョブ番号が“０”であるか否かを判定する。現在占有中のジョブ番号が“０”でない場合は、引き続き占有中の場合なのでステップＳ３１０へ進み、以下エラーが発生したページからデータの転送をやり直す。
【００７７】
また、現在占有中のジョブ番号が“０”である場合は，先行する他のジョブのエラーにより占有が解除された場合なのでステップＳ３０１に戻り、その後、ステップＳ３０２、Ｓ３０４からステップＳ３０５へ進み、プリンタの占有を試みる。即ち、プリンタの先頭ジョブが、このホストが発行したジョブであれば、直ちに占有が認められ，以下エラーが発生したページからデータの転送をやり直す。そうでない場合は、エラー回復が行われてプリンタの先頭ジョブが正常終了するまで、占有は拒否される。
【００７８】
次に、実施例２におけるプリンタ７側の処理について説明するが、プリンタ側７の制御回路２５によって実行されるコマンド処理は、図７を参照して説明した実施例１と同じであり、その説明は省略する。
【００７９】
ここでは、図１０を参照しながら上述したコマンド処理と並列に実行される印刷処理について説明する。尚、図１０に示すステップＳ４０１〜Ｓ４０７、Ｓ４１１〜Ｓ４１２、及びＳ４２１〜Ｓ４２４の処理は、実施例１で参照した図８に示したステップＳ２０１〜〜Ｓ７０７、Ｓ２１１〜Ｓ２１２、及びＳ２２１〜Ｓ２２４の処理と同じであり、ここでは、異なる部分について説明する。
【００８０】
図１０は、実施例２におけるプリンタ７の印刷処理を示すフローチャートである。上述した実施例１と同様に、ページの印刷終了及びジョブの終了をチェックした後、エラーが発生している場合は、先頭ジョブ以外のジョブの終了処理を行う。そして、先頭ジョブが現在プリンタを占有中であるか、即ち、先頭ジョブ番号と占有ジョブ番号とが一致するか否かを判定し、先頭ジョブが現在プリンタを占有中でない場合はステップＳ４２４へ進み、先頭ジョブ番号をエラージョブ番号に格納し、次のステップＳ４２５において、占有中ジョブ番号に“０”を格納することにより、強制的に占有を解除し、ステップＳ４０１に戻る。
【００８１】
以上説明したように、実施例２によれば、占有中でない他の印刷ジョブに関するエラーが発生した場合に、プリンタ側で占有を強制的に解除することにより、ジョブ間のダウンタイムを最小限に抑えることができる。
【００８２】
尚、本発明は複数の機器（例えば、ホストコンピュータ，インタフェース機器，リーダ，プリンタなど）から構成されるシステムに適用しても、１つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用しても良い。
【００８３】
また、本発明の目的は前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【００８４】
この場合、記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【００８５】
このプログラムコードを供給するための記録媒体としては、例えばフロッピー（登録商標）ディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【００８６】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００８７】
更に、記録媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００８８】
【図１】実施例１におけるホスト装置の構成を示すブロック図である。
【図２】実施例１におけるプリンタ７の構成を示す概略ブロック図である。
【図３】実施例１におけるジョブ管理情報のデータ構造の一例を示す図である。
【図４】実施例１におけるランゲージモニタの処理を示すフローチャートである。
【図５】図４のＳ１３に示すデータ転送処理の詳細を示すフローチャートである。
【図６】ステータス監視処理の詳細を示すフローチャートである。
【図７】プリンタ７におけるコマンド処理を示すフローチャートである。
【図８】実施例１におけるプリンタ７の印刷処理を示すフローチャートである。
【図９】実施例２におけるランゲージモニタの処理を示すフローチャートである。
【図１０】実施例２におけるプリンタ７の印刷処理を示すフローチャートである。
【図１１】エラーが発生した際のジョブの占有状態から占有解除状態への移行について説明するための図である。
【符号の説明】
【００８９】
１  コンピュータ
２  オペレーティングシステム
３  アプリケーション
４  プリンタドライバ
５  ランゲージモニタ
６  ネットワークポートドライバ
７  プリンタ
２１  ネットワークインタフェース
２２  ＦＩＦＯメモリ
２３  復号回路
２４  プリンタエンジン
２５  制御回路
【図１】
2005202912.tif 000003
【図２】
2005202912.tif 000004
【図３】
2005202912.tif 000005
【図４】
2005202912.tif 000006
【図５】
2005202912.tif 000007
【図６】
2005202912.tif 000008
【図７】
2005202912.tif 000009
【図８】
2005202912.tif 000010
【図９】
2005202912.tif 000011
【図１０】
2005202912.tif 000012
【図１１】
2005202912.tif 000013