(57)【要約】【課題】  ランゲージモニタのような監視手段とアプリケーションとのやり取りをもってジョブの監視を行う場合、アプリケーションプログラムが複雑化してしまう。本発明は、簡易な仕組みによる適確なジョブ状態の監視を行える仕組みを提供する。【解決手段】  オペレーティングシステムのスプーラ３０４に、ジョブ発行要求に応じて発行されるジョブをグラフィックドライバ３３を介して出力し、プリンタに出力されたジョブの状態を監視するランゲージモニタ３０８が、監視に基づきスプーラ３０４を制御し、上位アプリは、スプーラ３０４からジョブの情報を取得することにより、ジョブ状態を認識する。【選択図】  図９
2010191994.tif 000002
【特許請求の範囲】
【請求項１】
プリンタと通信可能なジョブ状態監視システムであって、
ジョブ発行要求に応じて発行される第１のジョブをオペレーティングシステムのスプーラへ出力するとともに、印刷出力処理に影響しないダミーデータを生成して前記スプーラへ出力する出力手段を有し、
上位アプリケーションが前記スプーラを参照することによって、前記第１のジョブの状態を認識可能にしたことを特徴とするジョブ状態監視システム。
【請求項２】
前記出力手段は、前記ダミーデータを前記第１のジョブとは別の第２のジョブとして前記スプーラへ出力することを特徴とする請求項１に記載のジョブ状態監視システム。
【請求項３】
前記出力手段は、前記ダミーデータを前記第１のジョブに連続して前記スプーラへ出力することを特徴とする請求項１に記載のジョブ状態監視システム。
【請求項４】
前記ダミーデータを前記プリンタが持つバッファよりも大きいサイズとしたことを特徴とする請求項３に記載のジョブ状態監視システム。
【請求項５】
プリンタと通信可能なジョブ情報処理装置におけるジョブ状態監視方法であって、
ジョブ発行要求に応じて発行される第１のジョブをオペレーティングシステムのスプーラへ出力するとともに、印刷出力処理に影響しないダミーデータを生成して前記スプーラへ出力する出力工程を有し、
上位アプリケーションが前記スプーラを参照することによって、前記第１のジョブの状態を認識可能にすることを特徴とするジョブ状態監視方法。
【請求項６】
請求項５に記載のジョブ状態監視方法をコンピュータに実行させるためのコンピュータプログラム。
【請求項７】
請求項６に記載のコンピュータプログラムを記憶したコンピュータ読取可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリンタにおいて実行されるジョブの監視技術に関する。
【背景技術】
【０００２】
従来からホストコンピュータにおいて印刷ジョブを作成し、該作成した印刷ジョブをプリンタに出力し、プリンタによって紙媒体への記録を行わせる印刷システムが知られている。
【０００３】
そのような印刷システムにおいて、例えばユーザは、マイクロソフト社のＷｉｎｄｏｗｓ（登録商標）におけるプリントキューのグラフィカルユーザインタフェースで閲覧すれば、生成された印刷ジョブがプリンタに転送されたか否かを知ることが出来る。
【０００４】
しかし、印刷キュー内でのジョブに係わる情報の監視による方法では、上位モジュール（例えばアプリケーション）にとって簡易にジョブ状態の監視を行えるものの、正確さという観点では不十分であった。例えば、上記のように、オペレーティングシステム上の印刷キュー内でのジョブの終了と、印刷装置の実際の処理の終了とが一致しないことがある。一方、この問題に対する１つの解決方法として、特許文献１には、ランゲージモニタを用いたジョブの監視技術が開示されている。
【０００５】
図１３のフローチャートは、そのランゲージモニタを利用したジョブの監視処理を示す。まずＳ１３０１でジョブを発行する。そしてステータス表示アプリケーションを起動する（Ｓ１３０２）。無論、Ｓ１３０１の前に事前に起動しても良い。ランゲージモニタは、プリンタ本体の状態を監視し、監視結果をステータ表示アプリケーションに伝達する。そして、ステータス表示アプリケーションは伝達された情報を入力し（Ｓ１３０３）、該入力情報に基づき表示内容を決定する（Ｓ１３０４）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−２４２４４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、ランゲージモニタのような監視手段とアプリケーションとのやり取りをもってジョブの監視を行う場合、以下の不都合がある。例えば、アプリケーションに、ランゲージモニタのような監視手段の様々な出力結果を識別する仕組みを取り入れる必要があり、アプリケーションプログラムが複雑化してしまう。
【課題を解決するための手段】
【０００８】
本願発明は、簡易な仕組みにより適確にジョブの状態を監視できる仕組を提供することを目的とする。
【０００９】
本発明のジョブ状態監視システムは、プリンタと通信可能なジョブ状態監視システムであって、ジョブ発行要求に応じて発行される第１のジョブをオペレーティングシステムのスプーラへ出力するとともに、印刷出力処理に影響しないダミーデータを生成して前記スプーラへ出力する出力手段を有し、上位アプリケーションが前記スプーラを参照することによって、前記第１のジョブの状態を認識可能にしたことを特徴とする。
【発明の効果】
【００１０】
本願発明によれば、簡易な仕組みにより適確にジョブの状態を監視できる。
【図面の簡単な説明】
【００１１】
【図１】実施形態におけるシステムの全体図である。
【図２】コンピュータにおけるハードウェア構成例を示す図である。
【図３】クライアント装置におけるソフトウェアモジュール構成例を示す図である。
【図４】メンテナンスジョブの終了を認識する処理のフローチャートである。
【図５】ジョブ実行中に表示されるダイアログの一例を示す図である。
【図６】監視手段によるジョブ状態監視処理のフローチャートである。
【図７】監視手段によるジョブ状態監視処理のフローチャートである。
【図８】監視手段によるジョブ状態監視処理のフローチャートである。
【図９】印刷ジョブの終了を認識する処理のフローチャートである。
【図１０】終了検知用ジョブを利用したジョブの終了認識のフローチャートである。
【図１１】ジョブ実行中に表示されるダイアログの一例を示す図である。
【図１２】出力手段により出力されるダミー部を付加したジョブの一例を示す図である。
【図１３】従来のジョブ監視処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
〔第１の実施形態〕
以下、本発明の発明を実施するための最良の形態について図面を用いて説明する。
【００１３】
図１は、本実施例のプリントシステムのシステム構成図の一例である。図１において、クライアント装置は、複数台接続されている。
【００１４】
１０７、１０８はクライアント装置であり、ネットワークケーブルによりネットワークに接続され、アプリケーションプログラム等の各種のプログラムを実行可能である。
【００１５】
プリントサーバは、接続されたプリンタをネットワーク上の他のコンピュータと共有し、外部から利用できるようにすることができる。なおこのプリントサーバが無くても、ネットワークプリンタや、クライアントに接続されたプリンタに対して、ネットワークを介して印刷することも通常可能である。
【００１６】
クライアント装置は、情報処理装置の好適な一例であるＰＣにより構成されている。ネットワークは、クライアント装置、ネットワークプリンタ等と接続している。
【００１７】
１０２、１０４、１０５はネットワークプリンタであり、１０３はローカルプリンタである。あるクライアントから、ネットワークを介して、ネットワークプリンタ１０２、１０４，１０５、及びネットワーク中に存在する別のクライアントに接続された、または自身に接続されたローカルプリンタに対して印刷を行うことが可能である。本発明は、図１中のどのクライアントとプリンタの組み合わせにおいても適用可能である。
【００１８】
＜ネットワークコンピュータのハードウェア構成例＞
図２は、プリントサーバ１０１、クライアント装置１０７、１０８の構成例を説明するブロック図である。
【００１９】
図２において、２００は装置全体の制御を行うＣＰＵを示す。そして、ハードディスク（ＨＤ）２０５に格納されているアプリケーションプログラム、プリンタドライバプログラム、ＯＳや、本実施の形態のネットワークプリンタ制御プログラム等を実行する。また、ＲＡＭ２０２にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。
【００２０】
２０１は記憶手段としてのＲＯＭであり、内部には、基本Ｉ／Ｏプログラム等のプログラム、文書処理の際に使用するフォントデータ、テンプレート用データ等の各種データを記憶する。２０２は一時記憶手段としてのＲＡＭであり、ＣＰＵ２００の主メモリ、ワークエリア等として機能する。
【００２１】
２０３は記憶媒体読み込み手段としてのフレキシブルディスクドライブであり、記憶媒体としてのフレキシブルディスク２０４に記憶されたプログラム等を本コンピュータにロードすることができる。２０４は記憶媒体であるフレキシブルディスク（ＦＤ）であり、コンピュータが読み取り可能にプログラムが格納された記憶媒体である。なお、記憶媒体はフレキシブルディスクに限らず、ＣＤ−ＲＯＭ、ＣＤＲ、ＣＤＲＷ、ＰＣカード、ＤＶＤ、ＩＣメモリカード、ＭＯ、メモリスティック等、任意である。
【００２２】
２０５は外部記憶手段の一つであり、大容量メモリとして機能するハードディスク（ＨＤ）であり、アプリケーションプログラム、プリンタドライバプログラム、ＯＳ、ネットワークプリンタ制御プログラム、関連プログラム等を格納している。
【００２３】
２０６は指示入力手段であるキーボードであり、ユーザがクライアントコンピュータに対して、また、オペレータや管理者がプリントサーバに対して、デバイスの制御コマンドの命令等を入力指示するものである。２０７は表示手段であるディスプレイであり、キーボード２０６から入力したコマンドや、プリンタの状態等を表示したりするものである。
【００２４】
２０８はシステムバスであり、コンピュータ内のデータの流れを司るものである。２０９は入出力手段であるインタフェースであり、該インタフェース２０９を介してコンピュータは外部装置とのデータのやり取りを行う。
【００２５】
図３は、クライアント装置におけるソフトウェアブロック図、及び、プリンタの概略構成を示す図である。
【００２６】
なお、この図３で例示では、パーソナルコンピュータ（本発明の情報処理装置に相当する）にＭｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ（登録商標）をオペレーティングシステム（以下、ＯＳと呼ぶ）として使用している。また、印刷処理機能を有する任意のアプリケーション３０１がクライアント装置内にインストールされており、更に、このコンピュータにプリンタ３０９を接続した形態を想定している。プリンタ３０９には、図１で説明したネットワークプリンタ１０２、１０５、ローカルプリンタ１０３を該当させることができる。図中の３１０はプリンタ又は投入されたジョブの状態を検出し、且つ、外部装置に出力する状態管理部であり、状態検知センサ及びメモリ及び状態解析部及び通信部などから構成される。
【００２７】
以下、各々のソフトウェアブロックについて説明する。
アプリケーション３０１を介して印刷要求された描画データ（文書データ、画像データ等の印刷データ）は、ＯＳの描画モジュールであるグラフィックデバイス・インターフェース（Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ：以下、「ＧＤＩ」）３０２経由でジョブ出力手段としてのプリンタグラフィックドライバ３０３に渡される。プリンタグラフィックドライバ３０３は渡されたデータに基づき印刷ジョブを生成する。この生成された印刷ジョブはプリンタ３０９へ印刷要求として出力される。
【００２８】
本実施形態におけるＧＤＩ３０２は、出力データを一旦ＥＭＦ（Ｅｎｈａｎｃｅｄ  Ｍｅｔａ  Ｆｉｌｅ）データとしてスプールする。スプールされたデータは、ＯＳのモジュールで構成されるジョブ管理機能を備えたスプーラ３０４に渡される。スプーラ３０４は渡されたジョブに関する情報をジョブが終了するまで保持し管理する。具体的な管理としては、例えば、プリンタ毎に、印刷ジョブのサイズ、ジョブ名等が管理され、印刷キュー３０５に表示される。また、紙ジャムなどのエラー発生時に備え、描画データを含むジョブそのものをジョブ終了まで保持するようにしても良い。
【００２９】
なお、スプーラがスプールデータを受け取った以後の処理は、アプリケーションの処理とは別プロセスとして動作する。スプールが終了すると、プリントプロセッサ３０６に印刷要求を発行する。
【００３０】
印刷要求の発行に基づき、プリントプロセッサ３０６は、スプーラ３０４から印刷出力情報と描画データをページ単位で読み込み、１ページずつＧＤＩ３０２を介してプリンタグラフィックドライバ３０３に出力して印刷するように要求する。このプリントプロセッサ３０６は、ＯＳのモジュールとして用意されているが、プリンタベンダー等がカスタマイズしたものを用いても良い。
【００３１】
プリントプロセッサ３０６から印刷が要求されたプリンタグラフィックドライバ３０３は、ＧＤＩ３０３が持つ描画機能であるＧＤＩレンダリングエンジンを用いて、その描画データをプリンタの印刷解像度に合わせてラスタイメージデータにレンダリングする。その後、色処理、プリンタコマンドの付加などを行い、印刷ジョブとして生成し、プリンタ３０９に出力する。
【００３２】
実際にはグラフィックドライバ３０３から出力されたデータは、ＧＤＩ３０２経由でランゲージモニタ３０８に送信依頼という形で出力される。
【００３３】
ランゲージモニタ３０８は印刷ジョブを特定サイズのパケットに区切り、プリンタ３０９へ向け逐一出力する。
【００３４】
他方、ランゲージモニタ３０８の機能として、プリンタ又はプリンタに投入されたジョブの各種状態情報を取得する機能がある。ここでのジョブとしては、印刷ジョブや、メンテナンスジョブが含まれる。
【００３５】
メンテナンスジョブには、プリンタにおけるノズルの目詰まりを改善する為のプリントヘッドのクリーニング処理や、プリントヘッドの状態を確認する為のプリントヘッドのノズルチェックパターン印刷処理が含まれる。また、プリントヘッドの正常な位置に対する誤差を補正する為のプリントヘッドの位置調整処理も含まれる。また、プリンタの電源のＯＮ又はＯＦＦをクライアント装置から指示する電源制御処理、又は、プリンタの動作音モード等のプリンタ本体の各種動作モード設定処理プリンタの動作モード変更処理もメンテナンスジョブに含まれる。
【００３６】
ドライバＵＩ３０７は、主に印刷ジョブに係わる各種設定を行えるアプリケーション又はユーティリティーである。また、プリンタ３０９に対して、上に説明したメンテナンスジョブを発行するジョブ出力手段としも機能し、発行したジョブの各種情報の取得も行う。ここで発行されたメンテナンスジョブもスプーラ３０４により管理される。なお、ドライバＵＩ３０７は一例であり、ジョブを発行でき、且つ、スプーラ３０４からジョブの状態情報を取得できるアプリケーション又はユーティリティーであれば、適宜ドライバＵＩ３０７の替わりに適用できる。
【００３７】
＜印刷キュー３０５、スプーラ３０４、ランゲージモニタ３０８との関係＞
ここで、上に説明した印刷キュー３０５、スプーラ３０４、ランゲージモニタ３０８の関係についてより具体的に説明する。印刷キュー３０５はスプーラ３０４が現在保持しているスプールデータの状態を表示する役割を担う。
【００３８】
スプーラ以後の処理は１つのプロセスとして実行されるため、スプーラ３０４に対して処理を返さなかったり、エラーを返したりすることにより、スプーラ３０４の処理を意図的に実質中断している状態とするなど制御できる。これにより、ランゲージモニタ３０８から印刷キュー３０５の状態を間接的に制御することが可能である。
【００３９】
印刷キュー３０５はＷｉｎｄｏｗｓ（登録商標）ＯＳが持つ標準的な機能であり、例えばグラフィックドライバ３０３やドライバＵＩ３０７、アプリケーション３０１などから所定のインタフェース関数を用いて参照できる。参照を行った主体は、現在印刷キュー３０５において管理されているジョブの情報（キューの情報）を取得できる。
【００４０】
以下、上に説明した印刷システムを基に、各種処理を説明する。なお、各フローチャートの各ステップの処理は、特に断りが無い限り、ＲＯＭ２０１又はＨＤ２０５に格納されたプログラムに基づく処理をＣＰＵ２００が実行することにより実現されるものとする。
【００４１】
＜ジョブの見届け処理＞
まず、図４のフローチャートの各ステップについて説明を行う。図４は、ドライバＵＩ３０７がメンテナンスジョブを発行し、メンテナンス処理中にダイアログを表示する際の処理を示す。
【００４２】
まずドライバＵＩ３０７は、ドライバＵＩ３０７を通してユーザからメンテナンスジョブを発行依頼があった場合に、メンテナンスジョブを発行する（Ｓ４０１）。
【００４３】
次にメンテナンス中であることを示すダイアログをＯＳを介して表示させるよう指示する（Ｓ４０２）。
【００４４】
Ｓ４０２において表示部に表示されるダイアログ例を図５に示す。ダイアログ５０１中には、メンテナンス中であり、他の動作を行わないようユーザに促すようなメッセージ５０２が含まれている。後述の処理によりメンテナンス終了に応じてダイアログ５０１を自動的に閉じることも可能であるが、ユーザによるＯＫボタン５０３への押下指示に応じて閉じることもできる。
【００４５】
そして、ドライバＵＩ３０７はＳ４０１で発行したメンテナンスジョブのジョブＩＤを印刷キュー内とは別の記憶領域に保存する（Ｓ４０３）。また、ジョブＩＤの保存期間は例えばジョブの発行からジョブの終了までの間とすることができる。また、ジョブの履歴を保存するという意味で、ジョブが終了した後もジョブＩＤを保存しても良い。
【００４６】
本実施形態では、ランゲージモニタ３０８のスプーラ３０４に対する制御処理により、印刷キュー３０５内でのジョブの終了と、プリンタ３０９の実際の処理の終了とを概ね一致することができる。従って、ドライバＵＩ３０７はＳ４０１で発行したメンテナンスジョブのジョブＩＤが印刷キュー３０５内に存在するかどうかを調べる（Ｓ４０４）。より具体的には、アプリケーション又はユーティリティーとしてのドライバＵＩ３０７は、所定の関数を用いたり、予め定められた記憶領域を参照することにより、ジョブ管理手段としてのスプーラ３０４が管理している情報を取得する。そして取得したジョブ情報と、Ｓ４０３で保存したジョブ情報（ジョブＩＤ）を比較し調査を実行する。このＳ４０４の処理に基づき、メンテナンスジョブの終了を容易に検知できる。なお、ランゲージモニタ３０８のスプーラ３０４に対する制御処理については後述の図６乃至図８を用いて詳しく説明することとする。
【００４７】
印刷キュー３０５内に、Ｓ４０３で保存したジョブＩＤが存在していた場合（Ｓ４０５でＮｏ）、一定時間間隔で再びＳ４０４からの処理を行う。Ｓ４０５で保存したジョブＩＤがまだ存在するということは、ランゲージモニタ３０８の指示によりスプーラ３０４が管理下のジョブ状態を未だ終了と識別していることに対応する。
【００４８】
一方、印刷キュー３０５内に、Ｓ４０３で保存したジョブＩＤが存在しなかった場合（Ｓ４０５でＹｅｓ）、処理をＳ４０６に移行する。Ｓ４０５でＳ４０３で保存したジョブＩＤが無いということは、ランゲージモニタ３０８の指示によりスプーラ３０４が管理下の印刷ジョブの状態を終了と識別したことに対応する。
【００４９】
Ｓ４０２で表示した、メンテナンス中であることを示す図５のダイアログ５０１を閉じるようＯＳを介して表示制御の指示を行う（Ｓ４０６）。該指示により適切なタイミングでメンテナンスジョブのダイアログが表示から消去されることとなる。
【００５０】
＜ランゲージモニタの詳細な処理＞
以下、図６乃至８を用いて、監視手段の一例としてのランゲージモニタ３０８のスプーラ３０４に対する制御処理について説明する。以下では、このランゲージモニタ３０８によるスプーラ３０４に対する制御処理を、ランゲージモニタがプリンタに投入されたジョブの情報を最後まで見届け監視し、該監視結果をスプーラ３０４に反映させることを見届け処理と呼ぶ。
【００５１】
まず、Ｓ３０１では各種コマンドの呼び出しが発生する。
【００５２】
アプリケーション３０１やドライバＵＩ３０７からジョブの開始の指示を表すコマンドが出力され、ランゲージモニタ３０８がその出力を受信すると、初期化処理を行い（Ｓ６０２）、処理を返す（Ｓ６０３）。その後は、実際の印刷データやメンテナンスコマンドなどのデータがランゲージモニタに対して出力されることとなる。
【００５３】
一方、通常のデータを受信すると（Ｓ６０１でＷｒｉｔｅと判定）、ランゲージモニタ３０８は受信したコマンドを解析する（Ｓ６０４）。次に、ジョブの種類によって見届けの手法が異なるため、ジョブの種類を認識する（Ｓ６０５）。ジョブの種類についての情報が無ければ、解析したコマンドから判断し、ジョブの種類を保存しておく（Ｓ６０６）。
【００５４】
Ｓ６０７で、ランゲージモニタ３０８はジョブ種類を識別する。ランゲージモニタ３０８が識別するジョブは主に３種類に分けられる。
【００５５】
１つ目は見届け処理を行わないようなメンテナンスジョブであり、特別な理由により見届け処理が好ましくないようなメンテナンスジョブが該当する。この場合、ランゲージモニタ３０８はプリンタ３０９にデータを出力し、処理を最初に戻す。例えば、プリンタの電源のＯＮ又はＯＦＦをクライアント装置から指示する電源制御処理、プリンタの動作音モード等のプリンタ本体の各種動作モード設定処理などを例としてあげることが出来る。
【００５６】
２つ目は見届け処理を行うようなメンテナンスジョブで、これは先ほどの未届けをしないメンテナンスジョブ以外のメンテナンスジョブが当てはまる。ノズルの目詰まりを改善する為のクリーニング処理、プリントヘッドの状態を確認する為のノズルチェックパターンの印刷処理、プリントヘッドの正常な位置に対する誤差を補正する為のヘッドの位置調整処理などを例として挙げることが出来る。
【００５７】
３つ目は、メンテナンスなどのコマンドによって行われる特殊な動作ではない、通常の印刷である。これは、ビットマップ画像や、ページ記述言語や、マークアップ言語等の描画データを含む印刷データ出力手段（例えばプリンタグラフィックドライバ３０３）により生成された印刷ジョブを指す。
【００５８】
このように、Ｓ６０７の判別処理に基づき、Ｓ６０４の処理でメンテナンスジョブであると解析した場合には、メンテナンスジョブに対応した図７の処理を行える。一方、通常の印刷ジョブと解析した場合には、通常印刷ジョブに対応した図８の処理を切替行うことができる。
【００５９】
次に、見届け処理を行うようなメンテナンスジョブの図６以後のフローについて、図７を用いて説明する。ランゲージモニタ３０８はＳ６０４で既にコマンドを解析しており、その内容によって、今回のジョブ中の最後のＷｒｉｔｅを示すものであるかどうかを判別することができる（Ｓ７０１）。
【００６０】
最後のＷｒｉｔｅでなかった場合、まだ見届けを行う必要は無いため、プリンタに通常通りデータを送信し（Ｓ７０２）、処理を返す。
【００６１】
通常図７から図８にかけての処理が複数回呼ばれ、最後のＷｒｉｔｅとなった場合、まずプリンタ本体に対して、指定されたサイズのデータを出力する（Ｓ７０４）。その後、プリンタ本体からステータス（ジョブの状態）を取得する（Ｓ７０５）。例えばプリンタ３０９が何らかの処理中であることを示すＢｕｓｙのステータスが返ってきた場合（Ｓ７０６）、処理を返す時の戻り値として、指定されＷｒｉｔｅできたサイズ未満のバイトの値をスプーラ３０４に対して返す（Ｓ７０７）。このＳ７０７の処理により、ランゲージモニタのジョブ状態の監視に基づき、スプーラ３０４により管理されるジョブのプリンタへの転送が終了していても、スプーラ３０４にジョブの状態を終了と管理（識別）させないようにできる。
【００６２】
通常戻り値には、プリンタへ正常に出力できたバイト数を返すことで、スプーラ３０４は正しく送信が行われたことを確認する。しかしここではＷｒｉｔｅできたサイズ未満のバイトを返すことで、スプーラ３０４はデータが全て正しく出力されなかったと認識し、最後の未出力バイトのデータを再び出力してくる。ランゲージモニタ３０８は既に全データ送信済みである場合（Ｓ７０３でＹｅｓ）、実際のプリンタへのデータ出力処理は行わず、再びプリンタ本体のステータスを取得し調べる（Ｓ７０５）。
【００６３】
Ｓ７０１乃至Ｓ７０６の処理を繰り返し、プリンタ本体から取得されるステータスがＢｕｓｙで無くなったことに応じて（Ｓ７０６でＮｏ）、スプーラ３０４への戻り値として指定されたサイズを返す（Ｓ７０８）。このＳ７０８の処理によりスプーラ３０４は全てのデータが正常に出力できたと判定し、対象とするジョブを管理外とする。即ち、印刷キュー３０５から対象とするジョブそのもの又はジョブの情報を削除／無効化する。
【００６４】
このように、図７のフローチャートの処理は、スプーラ３０４がランゲージモニタ３０８に依頼した送信データを全て送信できない場合に依頼のリトライを試みる仕組みを利用している。そして、ランゲージモニタ３０８は全てのプリンタへ出力すべきデータを出力しているにも関わらず出力できない旨をスプーラ３０４に返すことで、スプーラ３０４に擬似的にジョブ終了を認識させないよう制御できる。
【００６５】
また、ランゲージモニタ３０８は処理を返さないままで見届け処理を行っているのではなく、スプーラ３０４に処理を返しながら見届け処理を行っているため、同じプロセスの全ての処理を止めることなく見届けを可能としている。
【００６６】
次に、図６のＳ６０７でジョブの種類が通常印刷であると識別された場合に実行される処理を図８のフローチャートを用いて説明する。
【００６７】
まず、Ｓ８０１乃至８０５においては基本的には図７のメンテナンスジョブにおけるフローチャート処理と同様であり詳しい説明は省略する。
【００６８】
Ｓ８０５でプリンタ本体から通信回線を介して状態を取得する。Ｓ８０６では、文書アプリケーションデータに基づく印刷ジョブを受けた場合に対応して、Ｓ８０５で取得した結果を、ステータス表示アプリケーションに伝達するべく、ランゲージモニタにより所定の記憶領域に書き込む。ステータスアプリケーションは、印刷要求元のアプリケーション３０１を該当させても良いし、印刷要求元のアプリケーション３０１とは別のアプリケーションを該当させても良い。また、必要であれば、ドライバＵＩ３０７を該当させても良い。
【００６９】
書き込まれた結果は、ステータス表示アプリケーションにより読み込まれ、ステータス表示アプリケーションは読み込んだ結果を解釈し、該解釈に基づきジョブの状態に係わる表示制御を行う。但し、この場合にステータス表示アプリケーションにはランゲージモニタ３０８の出力結果を解析する機能を含める必要がある。
【００７０】
尚、上の説明では、ランゲージモニタは、取得したステータスの解析結果を所定の記憶領域に書き込み、それをステータス表示アプリケーションに読み込ませるよう説明したが、他の形態も考えられる。例えば、ステータス表示アプリケーションからの問合せがある度に、ランゲージモニタが応答するようにして、ジョブの状態をランゲージモニタからステータス表示アプリケーションに読み込ませるようにしても良い。
【００７１】
そして、Ｓ８０６を経由した後にＳ８０７では、プリンタ本体から通信回線を介して取得される印刷中のページ番号を示すステータスを取得することによって検知する。
【００７２】
このステータスは、印刷を行っていない間は値を持たない（例えば零）ため、それにより印刷中であるかどうかを検知できる。
【００７３】
ノズルチェックパターン印刷をプリンタに実行させる場合、印刷出力するパターンをプリンタ３０９内部に保持している場合と、プリンタドライバやユーティリティー側で保持し、印刷ジョブとしてプリンタに送信する場合がある。前者の場合、ノズルチェックパターンの印刷指示はコマンドの送信によってクライアント側からプリンタに対して行われるため、図７に示されるフローチャートの処理を実行する。また、後者の場合、ノズルチェックパターンの印刷は通常の印刷ジョブとして実行されるため、図８に示されるフローチャートの処理を実行する。
【００７４】
このようにランゲージモニタ３０８による見届け処理を行う事により、印刷キュー３０５のジョブの終了と、プリンタ３０９の実際の処理の終了をほぼ一致させることが可能である。
【００７５】
ここで、図８のフローチャートに対応して、アプリケーション又はユーティリティー又はプリンタドライバにより実行される処理を図９に示す。以下、図４と異なる点について詳しく説明する。
【００７６】
Ｓ９０１では、アプリケーション３０１からの印刷要求に応じて印刷ジョブが発行される。例えばプリンタグラフィックドライバ３０３により印刷ジョブが生成される。
Ｓ９０２では、印刷ジョブの発行に伴い、印刷中のダイアログが表示される。
【００７７】
Ｓ９０３乃至９０４では、発行された印刷ジョブに対して、メンテナンスジョブの場合と同様の処理が行われる。そしてランゲージモニタ３０８はＳ９０３で保存したジョブＩＤが、スプーラ３０４の管理下にあるジョブの情報に含まれるかを調査する。Ｓ９０５の処理と図８との対応関係について説明すると、図８のＳ８０９の処理が、ランゲージモニタにより実行されることに応じてＳ９０５でＮｏと判定される。また、図８の８０８が実行されることに応じてＳ９０５でＹｅｓと判定される。
【００７８】
そして、Ｓ９０２で表示した印刷中のダイアログを閉じるようＯＳを介して表示制御の指示を行う（Ｓ９０６）。
【００７９】
このように、図６乃至８、９のフローチャートを実行し、メンテナンスジョブのみではなく、印刷出力を伴う印刷ジョブに対しても、図７と同様の処理を行える。つまり、所定のアプリケーション又はユーティリティーにより、スプーラ３０４に管理されるジョブの状態の認識を行わせるという簡易な仕組みでジョブ状態を識別させることができる。結果、アプリケーション又はユーティリティーは、ランゲージモニタと直接的に対話しなくとも、ジョブの状態を適確に判断でき、且つ、その判断結果を例えばメッセージダイアログの表示制御に結びつけることができる。
【００８０】
以上説明してきたように、上述の実施形態によれば、アプリケーション又はユーティリティーなどの上位手段は、スプーラ３０４によって管理されるジョブの状態を監視するという簡易な仕組みで、実際のジョブ終了を適確に判定できる。
【００８１】
特に、メンテナンスジョブの発行に際しては、クライアント装置は短時間にメンテナンスコマンドの出力を終え、一方、プリンタ本体ではメンテナンス処理中の状態が長く続く。つまり、クライアント装置からのコマンド出力終了のタイミングと、プリンタにおけるメンテナンス処理終了のタイミングとが一致しない。しかし、上述の実施形態によれば、そのような事態を防ぐことが出来る。例えば、上位手段側に、プリンタのメンテナンス処理に要する時間を保持し、その時間経過に応じて、メンテナンス処理が終了したと見なす方法もあるが、上述の仕組によれば、より正確なジョブの状態を監視できる。
【００８２】
さらに、上位手段側は、ランゲージモニタのような監視手段の出力仕様を考慮せずとも、ジョブ状態の監視をでき、監視手段の出力結果の解析処理を軽減できたり、また、上位手段の開発を容易にする。
【００８３】
〔第２の実施形態〕
上に説明した実施形態では、クライアント装置側とプリンタ側とが、ランゲージモニタによる双方向通信を行えるという前提であった。しかしクライアント装置とプリンタとの通信インターフェースの種類によっては、双方向通信をサポートしない場合がある。また、インタフェースが双方向通信をサポートしていたとしてもＯＳの設定により双方向通信が禁止されていたり、プリンタを特定のプリントサーバに接続して用いている場合などクライアント側からプリンタ側への片方向通信に限定される場合がある。
【００８４】
そして、双方向通信が行えないとクライアント装置側でプリンタからの各種状態情報を取得できない。本実施形態では双方向通信が行えない場合でも、アプリケーションが、簡易且つ適確にジョブの状態を監視できる仕組を説明する。
【００８５】
図１０は、各種アプリケーションや各種ユーティリティーなどの上位手段がジョブを発行し、発行したジョブの終了を検知する場合の、上位手段による処理を示す。尚、図１０のフローチャートは、第１の実施形態で説明したメンテナンスジョブに適用できるが、ジョブとして印刷ジョブを例に説明する。また上位手段としてアプリケーションを例に説明する。
【００８６】
まず、上位手段は印刷ジョブを発行する（Ｓ１００１）。
その後、印刷中にアプリケーションが独自で通知ダイアログを表示する（Ｓ１００２）。ここで、表示するダイアログの一例を図１１に示す。次にアプリケーションは、Ｓ１００１で発行した印刷ジョブの終了を検知するための、プリンタが印刷処理をしないようなダミー印刷ジョブを発行する（Ｓ１００３）。
【００８７】
Ｓ１００３で発行されるジョブは、ユーザが印刷毎に特に意識することなく自動的に発行される。ここでプリンタが印刷処理をしない印刷ジョブとは、先に発行した印刷出力処理に影響せず、且つ、プリンタが随時破棄できるようなデータを適用できる。
【００８８】
アプリケーションは、Ｓ１００３で発行したダミー印刷ジョブジョブＩＤを保存しておく（Ｓ１００４）。当然のことながら、ダミー印刷ジョブのジョブＩＤはスプーラ３０４でも管理される。
【００８９】
ここで、留意する点として、プリンタ３０９は、ある印刷ジョブを処理中に、次の印刷ジョブを受け付けない機能を備える。つまりプリンタは、ある印刷ジョブにかかる印刷データを全て受け取った後も、プリンタのインターフェースをビジーの状態にし、印刷処理が全て終了してから、ビジーを解除し、次のデータを受信する。そのためプリンタ３０９は、Ｓ１００１で発行した印刷ジョブによる印刷を終了したことに応じて、Ｓ１００３で発行したジョブを受け付けることとなる。
【００９０】
次に、アプリケーションは一定間隔でＯＳの持つ印刷キュー２０５を調べ、Ｓ１００４で保存したジョブＩＤを持つジョブが存在するかどうかを調べる（Ｓ１００５）。
【００９１】
Ｓ１００５で存在すると判定した場合、アプリケーションは、Ｓ１００１で発行したジョブが終了したと判定する。そして、該判定に応じてＳ１００２で表示した印刷中に表示するためのダイアログを閉じる（Ｓ１００６）。
【００９２】
Ｓ１００３で発行したジョブは、プリンタ３０９が印刷出力しないジョブであるため、プリンタ３０９が受信後、すぐに処理が終了となる。
【００９３】
これにより、Ｓ１００３で発行したジョブの終了と、Ｓ１００１で発行したジョブ処理の終了タイミングが概ね一致する。
【００９４】
〔第３の実施形態〕
第３の実施形態では、第２の実施形態の仕組みを更に発展させた、ジョブ状態の監視について説明する。
【００９５】
例えばプリンタ３０９をネットワークプリンタとして利用し、複数のＰＣから参照可能であるような形態をとる場合、Ｓ１００３で発行する終了検知用ジョブが、印刷キュー３０５中においてＳ１００１で発行するジョブの次に来ることが保証されない。つまり、他のジョブに割り込まれたり、優先的に追い抜かれる可能性がある。
【００９６】
このため、Ｓ１００３で発行されるダミー印刷ジョブの終了を適確に検知できず、Ｓ１００１で発行された印刷ジョブの処理が実際に終了してしばらく経過した後、ダミー印刷ジョブの終了を検知してしまう場合もある。第３の実施形態この問題をも解決できるジョブ状態の監視に関する。
【００９７】
図１２は、第３の実施形態で送信するジョブデータの内容例である。この図１２には、ジョブ開始コマンド１２０１、印刷データ１２０２、ジョブ終了コマンド１２０３に加えて、プリンタ３０９が持つバッファよりも大きなサイズでプリンタ３０９による印刷処理が行われないデータ１２０４が含まれている。
【００９８】
この図１２の印刷ジョブは、アプリケーション３０１を介して印刷が行われた場合に、アプリケーション３０１が特に指定することなくグラフィックドライバ３０３によって作成される。
【００９９】
図１２のような印刷ジョブによれば、ＯＳにしてみれば一つのジョブとして識別するので、１２０３と１２０４の間に、他の印刷ジョブが割り込まれるようなことはなく、第２の実施形態で想定されるような問題は解決される。
【０１００】
プリンタ３０９はクライアント装置側から出力される受信データを解析し、印刷等の処理を行うが、その際ジョブの終了を示すコマンド１２０３が検出されると、一旦データ受信処理を中止する。データ受信処理の中止は、プリンタのインターフェースをビジーとし、ランゲージモニタ２０８から出力されるデータを受け付けなくすることにより行う。また、データの解析処理を一時中止することによって行っても良い。
【０１０１】
図１２の場合には、ジョブ終了コマンド１２０３の後に、プリンタ３０９が持つバッファよりも大きなサイズのデータ１２０４が存在するため、印刷キュー３０５には、データの送信が完了していないままの状態となる。
【０１０２】
プリンタ３０９は、先に受信した印刷ジョブ（１２０１乃至１２０３）の実際の印刷処理が終了したことに応じて、中断していたデータ受信処理を再開すると共に受信したデータ解析も再開する。この時解析されるデータ１２０４はプリンタ２０９が解析しても印刷出力には影響を持たない為、印刷出力処理を行う場合と比較し、非常に短い時間で全て処理される。そして、１２０１乃至１２０４のデータに対する処理が終了することに応じて、印刷キュー３０５から発行された印刷ジョブの情報が削除される。
【０１０３】
よって、アプリケーションやユーティリティーは、図１２のようなジョブに対して、スプーラ３０４により管理されるジョブの情報を監視するという簡易な仕組みにより、ジョブの状態を監視できる。また、第３の実施形態に説明した仕組みによれば例えランゲージモニタ３０８とプリンタ３０９との通信が片方向であっても、印刷キュー３０５におけるジョブの終了認識とプリンタ３０９の実際の印刷処理終了のタイミングとを概ね一致させることができる。
【０１０４】
また、さらなる応用例として、１２０２に印刷データではなくメンテナンスコマンドを適用することにより、第３の実施形態にメンテナンスジョブを適用することもできる。
【０１０５】
〔第４の実施形態〕
上に説明した第１乃至第３の実施形態では、図３に示されるような、クライアント装置にインストールされる各ソフトウェアモジュールが協働したジョブ状態監視システム、及び、ジョブ状態監視方法を説明してきたが、これを応用した形態も想定される。
【０１０６】
例えば、図３中のランゲージモニタ３０８を別のコンピュータにインストールしジョブ状態監視システムを構築するようにしても良い。この場合には、ランゲージモニタ３０８とスプーラ３０４とがプロセス間通信を行うことにより、上記各実施例と同様の効果を得ることが出来る。
【０１０７】
また、図３においては、ランゲージモニタ３０８や、スプーラ３０４の各々のソフトウェアモジュールを別々に示したが、例えば、１プロセスで実行される１ソフトウェアモジュールによって、ジョブ状態監視システムを構築するようにしても良い。
【０１０８】
このように、本発明は、ユーザのシステム環境に従って、様々なシステム形態をとり、ジョブ状態監視システムを構築することが出来る。
【０１０９】
〔その他の実施の形態〕
本発明の目的は前述したように、各実施形態の機能を実現するプログラムコードを記録した記憶媒体をシステムあるいは装置に提供し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フロッピィディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ，ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【０１１０】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれている。
【０１１１】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含む。
【図１】
2010191994.tif 000003
【図２】
2010191994.tif 000004
【図３】
2010191994.tif 000005
【図４】
2010191994.tif 000006
【図５】
2010191994.tif 000007
【図６】
2010191994.tif 000008
【図７】
2010191994.tif 000009
【図８】
2010191994.tif 000010
【図９】
2010191994.tif 000011
【図１０】
2010191994.tif 000012
【図１１】
2010191994.tif 000013
【図１２】
2010191994.tif 000014
【図１３】
2010191994.tif 000015