(57)【要約】【課題】既存のシステムの機能を利用しつつ、装置の稼動状態を管理する。【解決手段】接続する装置とデータの授受をするポートの総数を取得し、各ポートに関して、印刷ジョブの割り当ての有無を識別する。印刷ジョブの割り当ての無いポート数分の制御ジョブを生成し、装置の状態を示すステータス情報を取得するために、ステータス取得制御コマンドを、制御ジョブ及び／または印刷ジョブに付加したデータブロックを生成する。このデータブロックに基づき、ポートに対応する装置のステータス情報を取得する。【選択図】  図４
2004185217.tif 000002
【特許請求の範囲】
【請求項１】
接続する装置とデータの授受をするポートの総数を取得するポート数取得工程と、
前記ポートに関し、印刷ジョブの割り当ての有無を識別し、該印刷ジョブの割り当ての無いポート数分の制御ジョブを生成する第１生成工程と、
前記装置の状態を示すステータス情報を取得するために、ステータス取得制御コマンドを、前記制御ジョブ及び／または印刷ジョブに付加したデータブロックを生成する第２生成工程と、
前記データブロックに従い、前記ポートに対応する装置のステータス情報を取得するステータス情報取得工程と、
を備えることを特徴とする装置管理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、印刷装置の状態を特定するための情報を取得して、印刷装置を管理する装置管理技術に関するものである。
【０００２】
【従来の技術】
従来の印刷システムにおいて、ユーザがホストコンピュータ側で作成した印刷データを所定のプリンタで処理する場合、プリンタの動作状態は、ホストコンピュータと、プリンタとの間の双方向通信により検出され、ホストコンピュータのディスプレイ装置上に表示され、ユーザに通知されていた。
【０００３】
また、印刷システムにおいて、複数のプリンタを用い、印刷ジョブを複数のプリンタに分配することにより大量の印刷ジョブを高速に処理することが行われている。このような印刷システムとして、例えば、特許文献１（特許第２８６２４３０号公報）の印刷システムがある。これは各プリンタに対応付けてスプーラを設け、印刷キュー中のジョブを順次空いているスプーラに割り当てるものである。
【０００４】
その印刷システムと同様の機能を持つものとして、例えばマイクロソフト社から供給されるオペレーティングシステムであるＷｉｎｄｏｗｓ（登録商標）  ＮＴおよびその後継オペレーティングシステムが提供する「プリンタプール」がある。いずれも印刷システムのユーザは出力先のプリンタを個別に指定せず、そのシステムの制御部またはオペレーティングシステムのスプーラがユーザの介在なしに分配対象のプリンタ群の中からジョブの割り当てられていないプリンタを選択し、選択されたプリンタへジョブを送信することにより大量のジョブを高速に処理すると共にユーザをプリンタ選択の手間から解放している。
【０００５】
更に、複数のプリンタの動作状態を同時に監視し、ユーザに通知するシステムとして、特許文献２（特開平１１−３５３０７５号）、特許文献３（特開２０００−７６０３２号）、特許文献４（特開２０００−２９３３３６号）各公報にそれぞれ開示されているものがある。
【０００６】
【特許文献１】
特許第２８６２４３０号公報
【特許文献２】
特開平１１−３５３０７５号
【特許文献３】
特開２０００−７６０３２号
【特許文献４】
特開２０００−２９３３３６号
【０００７】
【発明が解決しようとする課題】
上記における複数のプリンタの動作状態を監視するシステムはいずれも、各プリンタの状態を取得する際に監視対象プリンタの接続先を指定し、そのプリンタへアクセスし、指定した対象のプリンタのステータス情報を取得しようとするものである。
【０００８】
しかし、上記の「プリンタプール」のようにジョブ送信先のポートを指定せず、システム側が送信先を選択するシステムにおいては、プリンタステータス取得要求コマンドの送信先を制御することができず、ジョブ分配対象のすべてのプリンタに確実にアクセスすることができないため、ステータス取得要求コマンドの送信やプリンタステータスの受信のために、プリンタにアクセスする仕組みを独自に持つ必要があった。
【０００９】
本発明の目的は、上記の「プリンタプール」のような、複数のポートの中からジョブが割り当てられていないポートをジョブの出力先として選択し、印刷キューから取得したジョブを順次送信する印刷処理分散システムにおいて、既存システムの機能を利用しつつ、すべてのジョブ分配対象ポートに対して確実にプリンタステータス要求コマンドを送信し、全プリンタのステータス情報をユーザに対して表示して、状態監視を可能にする装置管理技術を提供することにある。
【００１０】
【課題を解決するための手段】
前述の課題を解決するために本発明にかかる装置管理方法は、主として以下の工程を有することを特徴とする。
【００１１】
すなわち、装置管理方法は、接続する装置とデータの授受をするポートの総数を取得するポート数取得工程と、
前記ポートに関し、印刷ジョブの割り当ての有無を識別し、該印刷ジョブの割り当ての無いポート数分の制御ジョブを生成する第１生成工程と、
前記装置の状態を示すステータス情報を取得するために、ステータス取得制御コマンドを、前記制御ジョブ及び／または印刷ジョブに付加したデータブロックを生成する第２生成工程と、
前記データブロックに基づき、前記ポートに対応する装置のステータス情報を取得するステータス情報取得工程と、を備えることを特徴とする。
【００１２】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００１３】
［第１実施形態］
＜システムの構成（図１）＞
図１は、本発明の第１実施形態の構成を示すブロック図である。１はユーザが文書を作成し、印刷命令を実行し、後述のプリンタ（２−１）に対して印刷データを送信するホストコンピュータであり、（２−１）〜（２−ｎ）は、ユーザが作成した印刷データを受信して、かかる印刷データの処理を実行するプリンタ群である。
【００１４】
ホストコンピュータ１には、アプリケーションプログラム１１、プリンタドライバ１２、スプーラ１３、プリントモニタ（１４−１〜１４−ｎ）、ポートドライバ（１５−１〜１５−ｎ）、ステータスモニタ１７が含まれる。
【００１５】
まず、ユーザによる操作で、アプリケーションプログラム１１は所定のデータを作成して印刷開始を指示し、プリンタドライバ１２は、アプリケーション１１からの指示を受けて、生成されたデータをプリンタ（２−１）〜（２−ｎ）に特有な印刷データに変換する。
【００１６】
スプーラ１３は、印刷データをジョブ単位で一時的に格納し、キューイングし、順次プリントモニタ（１４−１、１４−２、・・・１４−ｎ）に渡す。
【００１７】
プリントモニタ（１４−１〜１４−ｎ）は、スプーラ１３から渡された印刷データを、プリンタと接続する入出力ポートへ送信するための送信制御を行うと共に、入出力ポートを介して各プリンタから受信したデータの処理を行う。
【００１８】
ポートドライバ（１５−１〜１５−ｎ）は、入出力ポートを介して各プリンタ（２−１〜２−ｎ）との間でのデータ送受信の制御を行い、プリンタ側のインタフェースから受信した、プリンタに関するステータス情報をプリントモニタ（１４−１〜１４−ｎ）に受け渡す。
【００１９】
ステータスモニタ１７は、各プリントモニタ（１４−１〜１４−ｎ）から対応するプリンタに関するステータス情報を受信して、各プリンタ（２−１〜２−ｎ）の状態をユーザに対して表示制御する。
【００２０】
これらの構成要素のうち、スプーラ１３およびポートドライバ（１５−１〜１５−ｎ）はホストコンピュータ１のオペレーティングシステム１６の一部として動作するものとする。
【００２１】
スプーラ１３は、プリントモニタ（１４−１〜１４−ｎ）の中に、印刷ジョブを処理していないものがあれば、直ちにスプーラのキューの先頭からジョブを一つ取り出し、ジョブを処理していないプリントモニタに印刷ジョブデータを渡す。ジョブを処理していないポートが複数ある場合には、それらの内の任意の一つが選択される。またジョブを処理していないポートが一つもなければ、キュー中のすべてのジョブはいずれかのポートのジョブ処理が終了するまでスプーラ１３で待機状態となる。
【００２２】
一方、プリンタ（２−１、２−２、・・・２−ｎ）はすべて同等の機能、構成を持つプリンタである。以下プリンタ（２−１）の構成を代表例として説明するが、他のプリンタ（２−２〜２−ｎ）も同一の構成要素から成るものとする。
【００２３】
プリンタ２−１はホストコンピュータ１との間で双方向通信を行うインタフェースコントローラ２１と、プリンタ内部の制御を行う印刷制御部２２と、プリンタ２−１内部で使用するデータを一時的に格納するＲＡＭ２３と、記録媒体上に画像の記録を実行するプリントエンジン２４を含む。
【００２４】
ＲＡＭ２３はインタフェースコントローラ２１を介してホストコンピュータ１から受信した印刷データを一時的に格納する受信バッファを含み、印刷制御部２２がその印刷データに従ってプリントエンジン２４を制御し、画像の記録を行う。また、印刷制御部２２は、プリントエンジン２４をはじめとするプリンタ内のステータス情報を収集し、ＲＡＭ２３に格納するとともに、そのステータス情報をインタフェースコントローラ２１を介してホストコンピュータ１へ送信する。
【００２５】
ホストコンピュータ１とプリンタ（２−１〜２−ｎ）を接続するインタフェースにはＩＥＥＥ１２８４パラレルインタフェースやＵＳＢインタフェースが用いられるが、これらに限らず他のインタフェース技術を用いてもよい。
【００２６】
＜印刷制御部２２の処理（図２）＞
次に、図２のフローチャートを参照して、プリンタ２−１における印刷制御部２２の処理動作について説明する。尚、他のプリンタ（２−２〜２−ｎ）の構成も、同様のものであり、プリンタ２−１と全く同じ処理動作をすることが可能である。
【００２７】
まず、ステップＳ１０１で、各プリンタの電源が投入されると、印刷制御部２２は電源投入時に行うべき起動動作を行う。次いで、処理をステップＳ１０２に進め、フラグ変数Ｆを「ＦＡＬＳＥ」に初期化する。このフラグ変数Ｆはホストコンピュータ１に対するステータス情報送信の要否を示すものである。
【００２８】
ステップＳ１０３ではプリンタ２−１の電源が断たれたかどうかを判定する。電源が切られた場合（Ｓ１０３−ＹＥＳ）は処理をステップＳ１１５に進め処理を終了させ、電源が切られていない場合（Ｓ１０３−ＮＯ）、処理をステップＳ１０４へ進める。ステップＳ１０４ではＲＡＭ２３の受信バッファにホストコンピュータ１からの受信データがあるかどうかを判定し、受信データがあれば（Ｓ１０４−ＹＥＳ）、処理をステップＳ１０５に進め、受信データが無い場合（Ｓ１０４−ＮＯ）は、処理をステップＳ１１０へ進める。
【００２９】
ステップＳ１０５では受信データのコマンドを解析し、その結果により分岐する。受信データがプリンタの状態を特定するためのステータス要求コマンドであれば（Ｓ１０５−ＹＥＳ）、処理をステップＳ１０６に進め、フラグ変数Ｆを「ＴＲＵＥ」（ステータス情報の送信が要）に設定し、受信データがステータス要求コマンドでなければ（Ｓ１０５−ＮＯ）、処理をステップＳ１０７へ進める。
【００３０】
ステップＳ１０７では更に、受信データがステータス要求解除コマンドか否かにより分岐する。ステータス要求解除コマンドであれば（Ｓ１０７−ＹＥＳ）、処理をステップＳ１０８に進め、フラグ変数Ｆを「ＦＡＬＳＥ」（ステータス情報の送信が否）に設定し、ステータス要求解除コマンドでなければ（Ｓ１０７−ＮＯ）、処理をステップＳ１０９に進め、プリントエンジン２４を制御して印刷動作を実行する。
【００３１】
なお、ステップＳ１０５で判断されるステータス要求コマンドは図３の（ａ）のようなデータ列であり、また、ステップＳ１０７で判断されるステータス要求解除コマンドは図３の（ｂ）に例示するようなデータ列である。
【００３２】
その後、ステップＳ１１０ではプリンタ内部の状態をステータス情報として印刷制御部２２が収集し、ＲＡＭ２３に格納する。
【００３３】
ステップＳ１１１ではフラグ変数Ｆの値により、変数値が「ＴＲＵＥ」であれば（Ｓ１１１−ＹＥＳ）、処理をステップＳ１１２に進め、変数値が「ＦＡＬＳＥ」であれば（Ｓ１１１−ＮＯ）、処理をステップＳ１０３へ分岐する。
【００３４】
ステップＳ１１２では、先にステップＳ１１０でＲＡＭ２３に格納したプリンタの状態（ステータス情報）に変化があったか否かを判断し、変化があれば（Ｓ１１２−ＹＥＳ）、処理をステップＳ１１３に進め、ステータス情報に変化がなければ（Ｓ１１２−ＮＯ）、処理をステップＳ１０３へ分岐する。
【００３５】
ステップＳ１１３では、ステータス情報の変化をホストコンピュータ１へ返送するステータス応答データを生成し、ステップＳ１１４でインタフェースコントローラ２１を介してホストコンピュータ１へステータス応答データを返送する。
【００３６】
図３の（ｃ）はホストコンピュータ１に応答するステータス情報（「ステータス応答データ」）の一例を示す図である。これはプリンタにエラーは発生していないが、種別「０２」の警告（例えば、「イエローインクの残量が少ない」）が発生している状態を示すものである。
【００３７】
ステップＳ１０３の判断ステップにおいて、ステップＳ１１５へ処理を分岐した場合には、電源切断時に行うべき終了動作を行い、プリンタの動作を終了する。
【００３８】
以上の処理により、プリンタ２−１〜２−ｎはホストコンピュータ１から受信する印刷データに従って印刷動作を行うと共に、ステータス要求コマンド受信以後、ステータス要求解除コマンド受信までの間はフラグ変数Ｆを「ＴＲＵＥ」（ステータス情報の送信が要）とし、プリンタ内のステータスが変化するたびにホストコンピュータ１へプリンタステータス情報を送信する。
【００３９】
＜ステータスモニタの処理（図４）＞
次に、図４のフローチャートを参照して本実施形態にかかるステータスモニタ１７の処理動作を説明する。
【００４０】
ホストコンピュータ１のオペレーティングシステム（ＯＳ）１６が起動する際にステータスモニタ１７は起動され、図４に示す処理が起動する。
【００４１】
ステップＳ２０１では整数変数ｎにポートの数を設定する。これはプリントモニタ（１４−１〜１４−ｎ）の数、プリンタ（２−１〜２−ｎ）の数と同じ数である。
【００４２】
ステップＳ２０２では、ステータスモニタ１７がｎ個の制御ジョブを生成し、プリンタドライバ１２を介してスプーラ１３のキューに投入する。ここで生成される制御ジョブはプリンタ用の印刷命令を含まないジョブであり、プリントモニタ（１４−１〜１４−ｎ）が通常の印刷ジョブから判別できるものである。
【００４３】
ステップＳ２０３ではオペレーティングシステム１６が終了するかどうかを判定し、システム終了時（Ｓ２０３−ＹＥＳ）にはステータスモニタ１７も起動を終了する。システム終了でなければ（Ｓ２０３−ＮＯ）、処理をステップＳ２０４へ進め、プリントモニタ（１４−１〜１４−ｎ）からプロセス間通信によりステータス情報を取得する。
【００４４】
ステップＳ２０５ではステップＳ２０４で取得したステータス情報の対象となるポート名を文字列変数Ｐに設定し、ステップＳ２０６でポートＰのステータス情報をユーザに対して表示する。ポート名は、例えばＩＥＥＥ１２８４パラレルポートについては「ＬＰＴ１：」、「ＬＰＴ２：」など、ＵＳＢポートについては「ＵＳＢ００１」、「ＵＳＢ００２」などとなる。その後ステップＳ２０３へ戻り、一連の処理をシステム終了まで繰り返す。
【００４５】
図５はステータスモニタ１７によるユーザへの表示例を示す図であり、図５の３１には監視対象となるプリンタ群をオペレーティングシステム１６上で識別する名称を表示する。３２にはジョブを分配する対象のポート群の名称をリスト表示し、その中のいずれかをユーザ操作により選択可能とする。３３には３２で選択されたポートを介して接続されたプリンタから取得した状態を示す情報がユーザに対して表示される。図５の３３には、先に図３（ｃ）で説明した、ステータス情報に対応する警告の表示（例えば、「イエローインクの残量が少ない」）が示される。
【００４６】
＜プリントモニタの処理（図６）＞
次に、図６のフローチャートを参照してプリントモニタ（１４−１〜１４−ｎ）の処理動作を説明する。プリントモニタ（１４−１〜１４−ｎ）は、スプーラ１３によって新たに、ジョブがポートに割り当てられた際に、プリントモニタ（１４−１〜１４−ｎ）の内、割り当てられたポートに対応するプリントモニタが起動される。この場合、プリントモニタの処理動作はポートによらず同一である。
【００４７】
ステップＳ３０１において、まず適当なサイズ（例えば最大４０９６バイトでそのジョブの残りデータがそれより小さい時はジョブ終端まで）のデータブロックをスプーラ１３中のジョブから取得する。
【００４８】
ジョブはステータスモニタ１７の処理で説明した図４のステップＳ２０２で投入された制御ジョブや、またはアプリケーション１１を用いてユーザ操作により投入されたユーザジョブのいずれかである。
【００４９】
ステップＳ３０２では、取得したデータブロックに含まれるコマンドを解析し、ステップＳ３０３では、データブロックがジョブ先頭部に該当するか否かを判断する。データブロックがジョブ先頭の場合（Ｓ３０３−ＹＥＳ）は、処理をステップＳ３０４に進め、そのデータブロックの先頭部にステータス要求コマンドを付加する。
【００５０】
一方、ジョブの先頭でない場合（Ｓ３０３−ＮＯ）は、ステップＳ３０４をスキップして処理をステップＳ３０５へ進める。ステップＳ３０４で付加されるステータス要求コマンドは図３の（ａ）で例示したデータである。
【００５１】
ステップＳ３０５ではデータブロックを該当するプリントモニタに対応するポートドライバ（１５−１〜１５−ｎ）に受け渡す処理が実行され、該当するポートドライバは所定のインタフェースを介してプリンタ（２−１〜２−ｎ）の内、対応するプリンタに上述のデータブロックを送信する。
【００５２】
続くステップＳ３０６ではステータス取得処理が実行され、ステップＳ３０７ではデータブロックでジョブが終了するかどうかにより分岐し、ジョブ終了の場合（Ｓ３０７−ＹＥＳ）は処理をステップＳ３０８へ進め、終了でない場合（Ｓ３０７−ＮＯ）には処理をステップＳ３０１へ戻し、再びジョブの処理を続行する。
【００５３】
ステップＳ３０８ではプリントモニタに次のジョブが割り当てられたか、またはオペレーティングシステム１６が終了するか否かを判定する。両者がいずれも満たされない場合（Ｓ３０８−ＮＯ）には、処理をステップＳ３０９に進め、ステータス取得処理を行い、処理をステップＳ３０８に戻す。ステップＳ３０８の条件のいずれか一方でも満たされる場合（Ｓ３０８−ＹＥＳ）、プリントモニタは一連の処理を終了する。ただし次のジョブが割り当てられている場合には、再びステップＳ３０１からの処理が起動される。
【００５４】
＜ステータス取得処理（図７）＞
次に、図７のフローチャートを参照して、図６で説明したステップＳ３０６およびステップＳ３０９のステータス取得処理の詳細について説明する。
【００５５】
ステータス取得処理では、まずステップＳ４０１でプリントモニタ１４−１〜１４−ｎに対応するポートドライバ１５−１〜１５−ｎを介して、そのポートに対応するプリンタから受信したステータス情報を取得する。
【００５６】
ステップＳ４０２ではステップＳ４０１の処理でエラーが発生したか否かにより処理を分岐させる。エラーが発生した場合（Ｓ４０２−ＹＥＳ）、処理をステップＳ４０３に進め、エラーが発生しない場合（Ｓ４０２−ＮＯ）、ステップＳ４０４へ分岐する。ただし、単に何もデータが受信できなかっただけで、プリンタ（２−１〜２−ｎ）との通信自体は切断されていない場合はエラーとはみなさない。
【００５７】
ステップＳ４０３では、プリントモニタ（１４−１〜１４−ｎ）とステータスモニタ１７の間でのプロセス間通信によりステータスモニタ１７へプリントモニタが対応する「ポート名」と「ポートエラー」の発生を通知する。この通知はステータスモニタ１７側の処理を説明する図４のステップＳ２０４で取得され、図４のステップＳ２０６でユーザに対して表示される。
【００５８】
ステップＳ４０４ではステップＳ４０１の処理でプリンタのステータス情報を受信したか否かによって、受信した場合（Ｓ４０４−ＹＥＳ）にはステップＳ４０５へ進み、ステータス情報を受信していない場合（Ｓ４０４−ＮＯ）は、処理を終了する。
【００５９】
ステップＳ４０５ではプリントモニタ（１４−１〜１４−ｎ）とステータスモニタ１７の間でのプロセス間通信によりステータスモニタ１７へ該当するプリントモニタが対応する「ポート名」と共に取得した「プリンタステータス情報」を通知する。
【００６０】
以上の処理により、ホストコンピュータ１のオペレーティングシステム１６の起動時にはステータスモニタ１７が起動され、図４のステップＳ２０２でポート数分の制御ジョブがスプーラ１３に投入される。これらの各制御ジョブがそれぞれどのポートに割り当てられるかを制御することはできないが、ポート数と同数のジョブが同時に投入されるため、すべてのプリントモニタ（１４−１〜１４−ｎ）にジョブが割り当てられ、各プリントモニタ（１４−１〜１４−ｎ）が起動される。
【００６１】
これによりシステム起動以降、常時、接続された全プリンタ（２−１〜２−ｎ）の状態をプリントモニタ（１４−１〜１４−ｎ）が取得し、ステータスモニタ１７に表示することができる。
【００６２】
各制御ジョブの処理終了後の状態は、プリントモニタ（１４−１〜１４−ｎ）の処理で説明した図６のステップＳ３０８、Ｓ３０９の処理により継続的にプリンタの状態の監視を行うことができ、ステップＳ３０８の分岐により次のジョブが投入されプリントモニタ（１４−１〜１４−ｎ）に割り当てられた場合には、直ちに次のジョブの処理に移り、かつ、プリンタ状態の監視を続行することができる。
【００６３】
印刷データの送信先として複数ポートを指定しながら印刷制御をする場合、その送信先ポートをオペレーティングシステム外部から選択することができないシステムにおいても、複数ポートすべてを介したプリンタのステータス情報を取得し、これをユーザへ表示することが可能になる。また、図５の例のように、接続先の複数ポートの内の一部をユーザが選択する場合であっても、それらのポートについてのみ、該等するプリンタのステータス情報を取得して、その情報をユーザに表示することも可能である。
【００６４】
なお、上記の説明において、ユーザジョブはホストコンピュータ１上で動作するアプリケーション１１が生成するものとしたが、これには限られず、ホストコンピュータ１とＬＡＮなどのコンピュータネットワークを介して接続した他のホストコンピュータ上で動作するアプリケーションが生成するジョブが、他のホストコンピュータおよびホストコンピュータ１の各オペレーティングシステムのネットワーク機能によりホストコンピュータ１のスプーラ１３に転送されるものを含んでもよい。
【００６５】
また、上記の説明において各プリンタ（２−１〜２−ｎ）は各種インタフェースによってホストコンピュータ１と直接接続されている形態（図１）について説明したが、ホストコンピュータ１とプリンタ（２−１〜２−ｎ）はそれぞれＬＡＮなどのネットワークに接続され、ポートドライバ１５−１〜１５−ｎの代わりにＩＥＴＦ（Ｔｈｅ  Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）のＲＦＣ（Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔｓ）１１７９に記載されているＬＰＤ（Ｌｉｎｅ  Ｐｒｉｎｔｅｒ  Ｄａｅｍｏｎ）プロトコルを実装した通信モジュールが動作し、インタフェースコントローラ２１はＬＰＤサーバとして機能することにより、ＬＡＮを介したネットワーク接続を利用するものであってもよい。
【００６６】
また、図１に示すようにホストコンピュータ１とプリンタ（２−１〜２−ｎ）とが直接接続されている形態とネットワーク接続を利用するものが混在する形態であってもよい。ネットワークはインターネットなどＬＡＮとは異なる形態のネットワークでもよく、ＬＰＤプロトコルの代わりに他の通信制御方式を用いるものでも構わない。
【００６７】
［第２実施形態］
＜システムの構成（図８、図９）＞
第１実施形態ではホストコンピュータ１上のオペレーティングシステム１６の動作中常時、ステータスモニタ１７を動作させ、プリンタのステータス情報を取得し、表示するものとしたが、ホストコンピュータを操作するユーザによって任意にステータスモニタを起動し、終了させられるように構成してもよい。
【００６８】
図８は本発明の第２実施形態の構成を示すブロック図である。ホストコンピュータ１０１を構成するアプリケーション１１、プリンタドライバ１２、スプーラ１３、ポートドライバ（１５−１〜１５−ｎ）の各構成要素、およびプリンタ（２−１〜２−ｎ）の各構成要素は第１実施形態における構成と同一である。
【００６９】
ただし、プリントモニタ（１１４−１〜１１４−ｎ）およびステータスモニタ１１７は後述の通り上述の第１実施形態とは異なる動作をし、ホストコンピュータ１０１はオペレーティングシステム１１６の提供する機能として、プロセス間共有メモリ１１８を備える点において第１実施形態と相違する。
【００７０】
図９はプロセス間共有メモリの内容の一例を示す図である。１３１−１、１３１−２はそれぞれ「キー」と称し、任意の文字列を名称としたデータが設定されるものとする。この図９の例ではキー１３１−１、１３１−２の名称はそれぞれ「ＬＰＴ１：」、「ＵＳＢ００１」というポートの名称である。キーは相互に名称が一致しない限り任意に作成、削除することができる。
【００７１】
各キーの配下には０個以上のエントリを作成することができる。各エントリは任意の文字列を名称として持ち、文字列または数値をキーに設定された名称に対応する値として持つ。キー１３２−１、１３２−２はそれぞれ文字列「ＥＲＲ＝ＮＯ；ＷＲＮ＝０２；」（１３２−１）、数値「２」（１３２−２）を値として持ち、名称がそれぞれ「Ｓｔａｔｕｓ」、「Ｍｏｎｉｔｏｒｉｎｇ」であるエントリの例であり、いずれもキー１３１−１、１３１−２の配下にある。これらエントリも同一キーの配下において名称が一致しない限り任意に作成、削除することができ、また任意にその値を書き換えることができる。異なるキーの配下にあるエントリ同士は同一名称であってもよい。プロセス間共有メモリ１１８はホストコンピュータ１０１上の任意のプロセスが読み書きすることができるものである。
【００７２】
＜ステータスモニタの処理（図１０Ａ、１０Ｂ）＞
次に、図１０Ａおよび図１０Ｂのフローチャートを参照して本実施形態におけるステータスモニタ１１７の処理動作を説明する。
【００７３】
ホストコンピュータ１のオペレーティングシステム１１６の動作中にユーザがステータスモニタ１１７を起動すると、図１０のステップＳ１１０１から処理が開始する。ステップＳ１１０１では、プリントモニタ（１１４−１〜１１４−ｎ）が対応付けられる各ポートの名称の「キー」をプロセス間共有メモリ１１８中に作成し、各キー中に名称「Ｍｏｎｉｔｏｒｉｎｇ」、値「１」の数値エントリを作成する。既にキー、エントリが存在する場合にはそれらを上書きする。数値エントリの値「１」はプリントモニタ（１１４−１〜１１４−ｎ）にステータス要求コマンドを送信させることを意味するデータである。
【００７４】
ステップＳ１１０２では、オペレーティングシステム（ＯＳ）１１６は、プロセス間共有メモリ１１８中の各ポート名称のキーについて、「Ｍｏｎｉｔｏｒｉｎｇ」エントリの値が１であるものの数を計数し、その数を整数変数ｎに格納する。
【００７５】
ステップＳ１１０３では、ＯＳ１１６がｎの値が０であるかどうかを判定し、「ｎ＝０」であれば（Ｓ１１０３−ＹＥＳ）、処理をステップＳ１１０８に進め、「ｎ≠０」ならば（Ｓ１１０３−Ｎｏ）、処理をステップＳ１１０４へ進める。
【００７６】
ステップＳ１１０４では、ステップＳ１１０２で見つかったキーの名称に対応するポートのプリントモニタ（１１４−１〜１１４−ｎ）の内、現在ジョブが割り当てられていないプリントモニタがあるか否かを判定し、該当するプリントモニタが有れば（Ｓ１１０４−ＹＥＳ）、処理をステップＳ１１０５に進め、該当するプリントモニタが無ければ（Ｓ１１０４−ＮＯ）、処理をステップＳ１１０８へ分岐する。
【００７７】
ステップＳ１１０５では、ＯＳ１１６はスプーラ１１３にアクセスし、現在既にプリントモニタ（１１４−１〜１１４−ｎ）に割り当てられているものと、キュー中で待機しているものを合わせたジョブ数を整数変数ｍに設定する。
【００７８】
ステップＳ１１０６では、整数変数ｎおよびｍを比較し、「ｎ＞ｍ」の場合（Ｓ１１０６−ＹＥＳ）は処理をステップＳ１１０７へ進め、「ｎ≦ｍ」の場合（Ｓ１１０６−ＮＯ）は、処理をステップＳ１１０８へ進める。
【００７９】
ステップＳ１１０７では、ステータスモニタ１１７が、ｎ−ｍ個の制御ジョブを生成し、プリンタドライバ１２を介してスプーラ１１３のキューに生成した制御ジョブを投入する。
【００８０】
ステップＳ１１０８では、ユーザの操作によりステータスモニタ１１７の終了が指示されたかどうかを判定し、終了の場合（Ｓ１１０８−ＹＥＳ）は処理を図１０ＢのステップＳ１１１１へ進め、ステータスモニタ１１７が終了でない場合（Ｓ１１０８−ＮＯ）は、処理をステップＳ１１０９へ進める。
【００８１】
ステップＳ１１０９では、各プリントモニタ１１４−１〜１１４−ｎを介して取得したステータス情報をプロセス間共有メモリ１１８から取得する。ここで、ステータス情報はプリントモニタ（１１４−１〜１１４−ｎ）が対応付けられる各ポート名称のキー中にエントリされた「Ｓｔａｔｕｓ」に設定されているデータにより取得することができる。
【００８２】
ステップＳ１１１０では、ステップＳ１１０９で取得したステータス情報に基づいてユーザに対する表示を更新する。表示の形式は、第１実施形態で説明した図５のような形式に従って表示することができる。
【００８３】
次に、ステップＳ１１０８の処理で分岐した処理の内容を図１０Ｂを用いて説明する。
【００８４】
ステップＳ１１１１では、プリントモニタ（１１４−１〜１１４−ｎ）が対応付けられる各ポートの名称のキーをプロセス間共有メモリ１１８中から検索し、各キー中の「Ｍｏｎｉｔｏｒｉｎｇ」エントリの値をそれぞれ「３」に書き換える。値「３」はプリントモニタ（１１４−１〜１１４−ｎ）にステータス要求解除コマンドを送信させることを意味する。
【００８５】
ステップＳ１１１２では、オペレーティングシステム（ＯＳ）１１６は、プロセス間共有メモリ１１８中の各ポート名称のキーについて、「Ｍｏｉｔｏｒｉｎｇ」エントリの値が３であるものの数を計数し、その数を整数変数ｎに格納する。
【００８６】
ステップＳ１１１３では、ＯＳ１１６がｎの値が０であるかどうかを判定し、ｎ＝０であれば（Ｓ１１１３−ＹＥＳ）、ステータスモニタ１１７の処理は終了し、ｎの値が０でなければ（Ｓ１１１３−ＮＯ）、処理をステップＳ１１１４へ進める。
【００８７】
ステップＳ１１１４では、先のステップＳ１１１２で検出された「Ｍｏｎｉｔｏｒｉｎｇ＝３」であるキー名称に対応するポートのプリンタモニタ（１１４−１〜１１４−ｎ）の内、現在ジョブが割り当てられていないプリントモニタがあるか否かを判定し、該当するプリントモニタがあれば（Ｓ１１１４−ＹＥＳ）、処理をステップＳ１１１５に進め、該当するものがなければ（Ｓ１１１４−ＮＯ）、処理をステップＳ１１１２へ分岐する。
【００８８】
ステップＳ１１１５では、ＯＳ１１６はスプーラ１１３にアクセスし、現在既にプリントモニタ（１１４−１〜１１４−ｎ）に割り当てられているものと、キュー中で待機しているものを合わせたジョブ数を整数変数ｍに設定する。
【００８９】
ステップＳ１１１６では、整数変数ｎおよびｍを比較し、ｎ＞ｍの場合（Ｓ１１１６−ＹＥＳ）は、ステップＳ１１１７へ処理を進め、そうでなければ（Ｓ１１１６−ＮＯ）、処理をステップＳ１１１２へ戻す。
【００９０】
ステップＳ１１１７では、ステータスモニタ１１７は、ｎ−ｍ個の制御ジョブを生成し、プリンタドライバ１１２を介してスプーラ１１３のキューに投入する。
【００９１】
＜プリントモニタの処理（図１１Ａ、１１Ｂ）＞
図１１Ａおよび図１１Ｂのフローチャートを参照して本実施形態におけるプリントモニタ（１１４−１〜１１４−ｎ）の処理動作を説明する。
【００９２】
プリントモニタ（１１４−１〜１１４−ｎ）は、スプーラ１１３によって新たにポートにジョブが割り当てられると、そのポートに対応するプリントモニタ（１１４−１〜１１４−ｎ）が起動するが、その処理動作はポートによらず同一である。
【００９３】
動作はステップＳ１２０１から始まり、まず適当なサイズ（このサイズは第１実施形態の図６のステップＳ３０１で説明したものと同様）のデータブロックをスプーラ１１３中のジョブから取得する。ジョブはステータスモニタ１１７の処理で説明した図１０ＡのステップＳ１１０７および図１０ＢのステップＳ１１１７の処理により投入された制御ジョブか、またはアプリケーション１１１を用いてユーザの操作により投入されたユーザジョブのいずれかである。
【００９４】
ステップＳ１２０２では、取得したデータブロックに含まれるコマンドを解析し、ステップＳ１２０３では、スプーラ１１３から取得したデータブロックがジョブ先頭部であるか否かを判断する。データブロックがジョブの先頭部である場合（Ｓ１２０３−ＹＥＳ）は、処理を図１１ＢのステップＳ１２０４へ進め、先頭部に該当しない場合（Ｓ１２０３−ＮＯ）は、処理をステップＳ１２１１へ進める。
【００９５】
説明を図１１Ｂに移し、ステップＳ１２０４では、プリントモニタ（１１４−１〜１１４−ｎ）が対応するポート名のキーをプロセス間共有メモリ１１８から検索し、その配下にエントリされている「Ｍｏｎｉｔｏｒｉｎｇ」値を取得し、整数変数ｍに設定する。
【００９６】
ステップＳ１２０５では、整数変数ｍの値が「１」かどうかを判定し、「ｍ＝１」ならば（Ｓ１２０５−ＹＥＳ）、処理をステップＳ１２０６に進め、「ｍ≠１」の場合（Ｓ１２０５−ＮＯ）、処理をステップＳ１２０８へ進める。
【００９７】
ステップＳ１２０６では、先のステップＳ１２０１（図１１Ａ）で取得したデータブロックの先頭部に図３の（ａ）に示したステータス要求コマンドを付加し、処理をステップＳ１２０７に進める。
【００９８】
ステップＳ１２０７では、ステップＳ１２０４で取得したプロセス間共有メモリ１１８の「Ｍｏｎｉｔｏｒｉｎｇ」値を２に書き換える。値「２」は、その該当するプリントモニタがステータス要求コマンドを送信済みであることを意味する。
【００９９】
ステップＳ１２０８では、整数変数ｍの値が３かどうかを判定し、「ｍ＝３」ならば（Ｓ１２０８−ＹＥＳ）、処理をステップＳ１２０９へ進め、「ｍ≠３」ならば、処理をステップＳ１２１１へ進める。
【０１００】
ステップＳ１２０９では、ステップＳ１２０１で取得したデータブロックの先頭部に図３の（ｂ）に示したステータス要求解除コマンドを付加し、ステップＳ１２１０では、ステップＳ１２０４で取得したプロセス間共有メモリ１１８の「Ｍｏｎｉｔｏｒｉｎｇ」値を０に書き換える。この値「０」は、プリントモニタがステータス要求解除コマンドを送信済みであることを意味する。
【０１０１】
ステップＳ１２０７、またはステップＳ１２１０で、それぞれ所定の値をＭｏｎｉｔｏｒｉｎｇ値に書き込んだ後、処理をステップＳ１２２（図１１Ａ）に戻す。
【０１０２】
説明を図１１Ａに戻して、ステップＳ１２１１では、データブロックをプリントモニタと対応するポートドライバに渡す。ポートドライバは所定のインタフェースを介して対応するプリンタにデータブロックを送信する。
【０１０３】
続くステップＳ１２１２では、ステータス取得処理を行う。ステータス取得処理は第１実施形態における図７で説明した処理と同様であるが、その処理中のステップＳ４０３およびステップＳ４０５では、エラー情報またはステータス情報をステータスモニタ１１７に通知するために、プロセス間通信によりプリントモニタ（１４−１〜１４−ｎ）とステータスモニタ１７間ではデータの授受が行なわれていたが、本実施形態においては、プロセス間共有メモリ１１８におけるポート名称キー配下にエントリされている「Ｓｔａｔｕｓ」値にその通知情報を書き込む処理を実行するものとする。
【０１０４】
ステップＳ１２１３では、そのデータブロックに関するジョブが終了するか否かを判断し、ジョブ終了の場合（Ｓ１２１３−ＹＥＳ）は、処理をステップＳ１２１４へ進め、ジョブ終了でない場合（Ｓ１２１３−ＮＯ）は、ステップＳ１２０１へ戻って当該ジョブの処理を続行する。
【０１０５】
ステップＳ１２１４では、プリントモニタ（１１４−１〜１１４−ｎ）に次のジョブが割り当てられたか、または整数変数ｍが「０」（プリントモニタがステータス要求解除コマンドを送信済みであることを意味する）または「３」（データブロックにステータス要求解除コマンドを付加しない）に該当するか否かを判断する。ｍの値が、「０」でも「３」でもない場合、すなわち、両者がいずれも満たされない場合（Ｓ１２１４−ＮＯ）には、処理をステップＳ１２１５に進め、ステップＳ１２１２と同様のステータス取得処理を続行し、ステップＳ１２１４へ戻る。
【０１０６】
ステップＳ１２１４における条件のいずれか一方でも満たされていれば（Ｓ１２１４−ＹＥＳ）、プリントモニタ（１１４−１〜１１４−ｎ）はステータス要求解除の指示に従い、一連の処理を終了する。
【０１０７】
ただし、次のジョブが割り当てられている場合には、再びステップＳ１２０１からの処理が起動される。
【０１０８】
以上の処理により、ホストコンピュータ１上でユーザがステータスモニタ１１７を起動すると、ステップＳ１１０１（図１１Ａ）において、プロセス間共有メモリ１１８の「Ｍｏｎｉｔｏｒｉｎｇ」値を１に設定し、以後各ポートにジョブが割り当てられると、プリントモニタ（１１４−１〜１１４−ｎ）を介して、対応するプリンタ（２−１〜２−ｎ）に対してステータス要求コマンドが付加されたデータブロックが送信される（図１１ＢのステップＳ１２０６、図１１ＡのステップＳ１２１１）。
【０１０９】
ステータスモニタ１１７の起動時点でジョブが割り当てられていないポートについては、ステータスモニタ１１７の処理ステップＳ１１０７（図１０Ａ）で投入された制御ジョブが直ちに割り当てられる。各制御ジョブがどのポートに割り当てられるかを制御することはできないが、空きポート数分の制御ジョブが同時に投入されるため、ジョブ処理中でないすべてのプリントモニタ（１１４−１〜１１４−ｎ）に制御ジョブが割り当てられ、ステップＳ１２０６およびステップＳ１２１１によりステータス要求コマンドがプリンタに送信される。
【０１１０】
ステータスモニタ１１７起動時点で既にジョブが割り当てられていたポートについては、ステータス要求コマンドが送信されないが、このポートに対応するプロセス間共有メモリの「Ｍｏｎｉｔｏｒｉｎｇ」値は「１」のままであるため、後続のジョブがそのポートに割り当てられた時点で、ステップＳ１２０６およびステップＳ１２１１によりステータス要求コマンドがデータブロックに付加されて該当するプリンタに送信される。
【０１１１】
また、後続のジョブが存在しない場合には、「Ｍｏｎｉｔｏｒｉｎｇ」値が１であり、かつ対応するポートにジョブがない状態になるため、再びステータスモニタ１１７の処理ステップＳ１１０７（図１０Ａ）が実行され、制御ジョブが投入される。「Ｍｏｎｉｔｏｒｉｎｇ」値が１のポートがなくなるまでこの処理は繰り返されるため、すべてのポートのプリンタ状態を取得することができるようになる。
【０１１２】
ステータスモニタ１１７の終了時には「Ｍｏｎｉｔｏｒｉｎｇ」値を３にして同様の処理を行うため、すべてのポートについてステータス要求解除コマンドを送信することができる。
【０１１３】
こうして、印刷データの送信先として複数ポートを指定しながら、その中での送信先ポートをオペレーティングシステム外部から選択することができないシステムにおいても、ステータスモニタ動作中には、複数ポートすべてを介したプリンタステータス情報のユーザへの提供を行うことができ、またステータスモニタ終了時には各プリンタにステータス要求解除コマンドを送信し、プリンタが不要なデータ送信処理を行うことを防ぐことができる。
【０１１４】
尚、上記の説明においてユーザジョブはホストコンピュータ１０１上で動作するアプリケーション１１１が生成するものとしたが、これには限らず、ホストコンピュータ１０１とＬＡＮなどのコンピュータネットワークを介して接続された他のホストコンピュータ上で動作するアプリケーションが生成するジョブが、他のホストコンピュータおよびホストコンピュータ１０１の各オペレーティングシステムのネットワーク機能によりホストコンピュータ１０１のスプーラ１１３に転送されるものを含んでもよい。
【０１１５】
＜他の実施形態＞
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、プリンタ、ファクシミリ装置など）から構成されるシステムに適用してもよい。
【０１１６】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１１７】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【０１１８】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１１９】
更に、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１２０】
＜本発明の実施態様＞
本発明の実施態様の例を以下に示す。
【０１２１】
（実施態様１）  接続する装置とデータの授受をするポートの総数を取得するポート数取得工程と、
前記ポートに関し、印刷ジョブの割り当ての有無を識別し、該印刷ジョブの割り当ての無いポート数分の制御ジョブを生成する第１生成工程と、
前記装置の状態を示すステータス情報を取得するために、ステータス取得制御コマンドを、前記制御ジョブ及び／または印刷ジョブに付加したデータブロックを生成する第２生成工程と、
前記データブロックに基づき、前記ポートに対応する装置のステータス情報を取得するステータス情報取得工程と、
を備えることを特徴とする装置管理方法。
【０１２２】
（実施態様２）  前記ポート数取得工程は、前記ポートのうち、いずれかに割り当てられている処理中の第１印刷ジョブと、該ポートのいずれにも割り当てられていない処理待ちの第２印刷ジョブと、の総数を求め、
前記第１生成工程は、前記ポート数取得工程で取得したポート総数（ｎ）と、前記第１印刷ジョブ及び第２印刷ジョブの総数（ｍ）と、を比較し、
ｎ−ｍ個のポート数に対応した制御ジョブを生成することを特徴とする実施態様１に記載の装置管理方法。
【０１２３】
（実施態様３）  前記第２生成工程は、前記第１及び／または第２印刷ジョブの処理に際し、該ジョブのデータに前記ステータス制御コマンドを付加することを特徴とする実施態様１または２に記載の装置管理方法。
【０１２４】
（実施態様４）  前記ステータス取得制御コマンドには、前記装置のステータス情報を要求するコマンドと、該ステータス情報の要求を解除するコマンドと、が含まれることを特徴とする実施態様１または３に記載の装置管理方法。
【０１２５】
（実施態様５）  前記ステータス取得工程は、前記第１印刷ジョブ及び前記第２印刷ジョブに付加されたステータス取得制御コマンドに基づき、前記ポートに対応する装置のステータス情報を取得することを特徴とする実施態様１に記載の装置管理方法。
【０１２６】
（実施態様６）  前記ポートに対応する装置のステータス情報を格納する共有メモリを更に備え、
前記ステータス情報取得工程は、取得したポート毎のステータス情報を、該共有メモリに格納することを特徴とする実施態様１または５に記載の装置管理方法。
【０１２７】
（実施態様７）  前記取得したステータス情報を表示させる表示制御工程を更に備えることを特徴とする実施態様１に記載の装置管理方法。
【０１２８】
（実施態様８）  接続する装置とデータの授受をするポートの総数を取得するポート数取得手段と、
前記ポートに関し、印刷ジョブの割り当ての有無を識別し、該印刷ジョブの割り当ての無いポート数分の制御ジョブを生成する第１生成手段と、
前記装置の状態を示すステータス情報を取得するために、ステータス取得制御コマンドを、前記制御ジョブ及び／または印刷ジョブに付加したデータブロックを生成する第２生成手段と、
前記データブロックに基づき、前記ポートに対応する装置のステータス情報を取得するステータス情報取得手段と、
を備えることを特徴とする情報処理装置。
【０１２９】
（実施態様９）  情報処理装置から受信したジョブを解析し、装置のステータス情報を要求するコマンドが含まれているか否かを識別する識別手段と、
前記識別に基づき、前記ステータス情報を要求するコマンドが含まれている場合は、前記装置の状態を取得する状態取得手段と、
前記取得された状態を、ステータス情報として、前記情報処理装置に出力するデータ出力手段と、
を備えることを特徴とする印刷装置。
【０１３０】
（実施態様１０）  接続する装置の状態を管理するための装置管理をコンピュータで実行可能にするプログラムであって、該プログラムが、
接続する装置とデータの授受をするポートの総数を取得するポート数取得モジュールと、
前記ポートに関し、印刷ジョブの割り当ての有無を識別し、該印刷ジョブの割り当ての無いポート数分の制御ジョブを生成する第１生成モジュールと、
前記装置の状態を示すステータス情報を取得するために、ステータス取得制御コマンドを、前記制御ジョブ及び／または印刷ジョブに付加したデータブロックを生成する第２生成モジュールと、
前記データブロックに基づき、前記ポートに対応する装置のステータス情報を取得するステータス情報取得モジュールと、
を備えることを特徴とするプログラム。
【０１３１】
（実施態様１１）  前記ポート数取得モジュールは、前記ポートのうち、いずれかに割り当てられている処理中の第１印刷ジョブと、該ポートのいずれにも割り当てられていない処理待ちの第２印刷ジョブと、の総数を求め、
前記第１生成モジュールは、前記ポート数取得モジュールで取得したポート総数（ｎ）と、前記第１印刷ジョブ及び第２印刷ジョブの総数（ｍ）と、を比較し、
ｎ−ｍ個のポート数に対応した制御ジョブを生成することを特徴とする実施態様１０に記載のプログラム。
【０１３２】
（実施態様１２）  前記第２生成モジュールは、前記第１及び／または第２印刷ジョブの処理に際し、該ジョブのデータにステータス制御コマンドを付加することを特徴とする実施態様１０に記載のプログラム。
【０１３３】
（実施態様１３）  前記ステータス取得制御コマンドには、前記装置のステータス情報を要求するコマンドと、該ステータス情報の要求を解除するコマンドと、が含まれることを特徴とする実施態様１０に記載のプログラム。
【０１３４】
（実施態様１４）  前記ステータス取得モジュールは、前記第１印刷ジョブ及び前記第２印刷ジョブに付加されたステータス取得制御コマンドに基づき、前記ポートに対応する装置のステータス情報を取得することを特徴とする実施態様１０に記載のプログラム。
【０１３５】
（実施態様１５）  前記ポートに対応する装置のステータス情報を格納する共有メモリに対し、前記ステータス情報取得モジュールは、取得したポート単位のステータス情報を格納することを特徴とする実施態様１０または１４に記載のプログラム。
【０１３６】
（実施態様１６）  接続する装置の状態を管理するための装置管理をコンピュータで実行可能にするプログラムコードを格納した記憶媒体であって、
接続する装置とデータの授受をするポートの総数を取得するポート数取得コードと、
前記ポートに関し、印刷ジョブの割り当ての有無を識別し、該印刷ジョブの割り当ての無いポート数分の制御ジョブを生成する第１生成コードと、
前記装置の状態を示すステータス情報を取得するために、ステータス取得制御コマンドを、前記制御ジョブ及び／または印刷ジョブに付加したデータブロックを生成する第２生成コードと、
前記データブロックに基づき、前記ポートに対応する装置のステータス情報を取得するステータス情報取得コードと、
を備えることを特徴とする記憶媒体。
【０１３７】
【発明の効果】
以上説明したように本発明によれば、既存のシステムの機能を利用しつつ、全てのポートに接続している装置に対し、装置の状態を管理するためのステータス取得制御コマンドを送信し、受信した装置からのステータス情報に基づき、ユーザに装置のステータス情報を表示することが可能になる。
【図面の簡単な説明】
【図１】第１実施形態におけるシステムの構成を示すブロック図である。
【図２】第１実施形態におけるプリンタの処理動作を説明するフローチャートである。
【図３】第１及び第２実施形態において、プリンタが送受するデータを例示する図である。
【図４】第１実施形態におけるステータスモニタの処理動作を説明するフローチャートである。
【図５】第１及び第２実施形態におけるステータスモニタの表示例を示す図である。
【図６】第１実施形態におけるプリントモニタの処理動作を説明するフローチャートである。
【図７】第１及び第２実施形態におけるプリントモニタのステータス取得の処理動作を説明するフローチャートである。
【図８】第２実施形態におけるシステムの構成を示すブロック図である。
【図９】第２実施形態におけるプロセス間共有メモリの内容を例示する図である。
【図１０Ａ】第２実施形態におけるステータスモニタの処理動作を説明するフローチャートである。
【図１０Ｂ】第２実施形態におけるステータスモニタの処理動作を説明するフローチャートである。
【図１１Ａ】第２実施形態におけるプリントモニタの処理動作を説明するフローチャートである。
【図１１Ｂ】第２実施形態におけるプリントモニタの処理動作を説明するフローチャートである。
【符号の説明】
１  ホストコンピュータ
２−１〜２−ｎ  プリンタ
１１  アプリケーション
１２  プリンタドライバ
１３  スプーラ
１４−１〜１４−ｎ  プリントモニタ
１５−１〜１５−ｎ  ポートドライバ
１６  オペレーティングシステム
１７  ステータスモニタ
２１  インタフェースコントローラ
２２  印刷制御部
２３  ＲＡＭ
２４  プリントエンジン
【図１】
2004185217.tif 000003
【図２】
2004185217.tif 000004
【図３】
2004185217.tif 000005
【図４】
2004185217.tif 000006
【図５】
2004185217.tif 000007
【図６】
2004185217.tif 000008
【図７】
2004185217.tif 000009
【図８】
2004185217.tif 000010
【図９】
2004185217.tif 000011
【図１０Ａ】
2004185217.tif 000012
【図１０Ｂ】
2004185217.tif 000013
【図１１Ａ】
2004185217.tif 000014
【図１１Ｂ】
2004185217.tif 000015