(57)【要約】【課題】  従来のＩＰプロトコルに対応したポートモニタでは、印刷機器との通信の際に、印刷機器へ通信の確立を行った場合に印刷機器から応答がない場合、または応答が遅延している場合に、印刷機器の種別に関係なく一定時間が経過した時点でタイムアウト処理が行われてしまうという問題があった。【解決手段】  ポートを通じて機器に印刷データを送信する際に、前記情報取得手段と前記機器状態判別手段によりデータの送信を開始するまでの待ち時間を決定する待ち時間決定手段を有するポートモニタを特徴とする。【選択図】  図６
2006163568.tif 000002
【特許請求の範囲】
【請求項１】
パーソナルコンピュータ上で動作し、プリンタに印刷ジョブデータの送信と一連の情報の送受信を行うポートモニタであって、
ポートを通じて機器の情報を取得する情報取得手段と、
ポートを通じて機器の状態を判別する機器状態判別手段と、
ポートを通じて機器に印刷データを送信する際に、前記情報取得手段と前記機器状態判別手段によりデータの送信を開始するまでの待ち時間を決定する待ち時間決定手段と、
を備えることを特徴とするポートモニタ。
【請求項２】
請求項1のポートモニタに於いて、前記情報取得手段によってポートモニタが取得する機器情報には、製品の名称または製品の名称に順ずる値が含まれていることを特徴としたポートモニタ。
【請求項３】
請求項1のポートモニタに於いて、前記機器状態判別手段は、機器が正常状態、またはスリープ状態（省電力状態）、または電源断状態のいずれかであるかの判別を行うことを特徴としたポートモニタ。
【請求項４】
パーソナルコンピュータ上で動作し、プリンタに印刷ジョブデータの送信と一連の情報の送受信を行うポートモニタであって、
ポートを通じて機器の情報を取得する情報取得手段と、
ポートを通じて機器の状態を判別する機器状態判別手段と、
ポートを通じて機器に印刷データを送信する際に、前記情報取得手段と前記機器状態判別手段によりデータの送信を開始するまでの待ち時間の決定ができない場合に、予め決定されているデフォルト値を待ち時間として決定する待ち時間決定手段と、
を備えることを特徴とするポートモニタ。
【請求項５】
請求項４のポートモニタに於いて、前記情報取得手段によってポートモニタが取得する機器情報には、製品の名称または製品の名称に順ずる値が含まれていることを特徴としたポートモニタ。
【請求項６】
請求項４のポートモニタに於いて、前記機器状態判別手段は、機器が正常状態、またはスリープ状態（省電力状態）、または電源断状態のいずれかであるかの判別を行うことを特徴としたポートモニタ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリンタとパーソナルコンピュータの情報の送受信に関し、プリンタへの印刷データの送信と一連の情報の送受信の方法に関する。
【背景技術】
【０００２】
従来、パーソナルコンピュータ上のアプリケーションでオープンしているデータをネットワーク上の印刷機器に送信する場合、オペレーティングシステムはポートという概念を用いて送信先の機器を識別している。ポートモニタは、そのようなポートの作成やデータをポートに対して送信したり、またポートを通じて機器から情報を取得したりといった、パーソナルコンピュータのオペレーティングシステムと印刷機器とを接続する役割を果たしている。ポートを通じた通信プロトコルは一般的な印刷プロトコルであったりベンダ固有のプロトコルであったりと制限は存在しないが、現在のネットワーク環境で幅広く使用されているIPプロトコル（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）上で動作するものが一般的である。たとえばＬＰＲプロトコル（Ｌｉｎｅ  Ｐｒｉｎｔｅｒ  Ｄａｅｍｏｎプロトコル）やＳＭＢプロトコル（Ｓｅｒｖｅｒ  Ｍｅｓｓａｇｅ  Ｂｌｏｃｋプロトコル）といったプロトコルが挙げられる。それらのプロトコルはＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）上で動作し、ＴＣＰプロトコルとしての通信を確立した後で、それら上位層のプロトコルが情報の送受信を行う。これら従来から知られている技術が例えば特許文献１に開示されている。
【特許文献１】特開平９−３００７９
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、従来のＩＰプロトコルに対応したポートモニタでは、印刷機器との通信の際に、印刷機器へ通信の確立を行った場合に印刷機器から応答がない場合、または応答が遅延している場合に、印刷機器の種別に関係なく一定時間が経過した時点でタイムアウト処理が行われてしまうという問題があった。例えば印刷機器がスリープモードや省電力モード状態にある場合、印刷機器がポートモニタから通信接続要求を受信したとしても即座に応答できないことがある。印刷機器はスリープモードや省電力モードから通常状態に復帰した後で応答するため、復帰に費やされる時間は応答を行うことができない。この復帰に必要な時間は印刷装置によって異なるため、従来のポートモニタでは、印刷機器から一定の時間に応答がなかった場合にタイムアウトしてしまい結果として印刷が行われないという不具合があった。たとえば特開平９−３００７９では、印刷データ作成時間Ｐｔ、印刷データ転送時間Ｔｔ、ページバッファへの描画時間Ｒｔ、ウォームアップ時間Ｗｔを予測しウォームアップ開始を指示するまでの時間Ｐｔ＋Ｔｔ＋Ｒｔ−Ｗｔのタイミングでプリンタのウォームアップを開始させるための立ち上げコマンドを送出するという処理について記載されているが、印刷機器がスリープ状態や省電力モード状態であるか否かの判断は行われていないため、ウォームアップ時間Ｗｔは常に考慮される結果となり、印刷機器が通常状態においてもウォームアップ時間Ｗｔを待つ結果となっていた。
【課題を解決するための手段】
【０００４】
上述した問題を解決するために、請求項１の発明は、パーソナルコンピュータ上で動作し、プリンタに印刷ジョブデータの送信と一連の情報の送受信を行うポートモニタであって、ポートを通じて機器の情報を取得する情報取得手段と、ポートを通じて機器の状態を判別する機器状態判別手段と、ポートを通じて機器に印刷データを送信する際に、前記情報取得手段と前記機器状態判別手段によりデータの送信を開始するまでの待ち時間を決定する待ち時間決定手段と、を備えることを特徴とする。
【０００５】
請求項２の発明は、前記情報取得手段によってポートモニタが取得する機器情報には、製品の名称または製品の名称に順ずる値が含まれていることを特徴とする。
【０００６】
請求項３の発明は、前記機器状態判別手段は、機器が正常状態、またはスリープ状態（省電力状態）、または電源断状態のいずれかであるかの判別を行うことを特徴とする。
【０００７】
請求項４の発明は、プリンタに印刷ジョブデータの送信と一連の情報の送受信を行うポートモニタであって、ポートを通じて機器の情報を取得する情報取得手段と、ポートを通じて機器の状態を判別する機器状態判別手段と、ポートを通じて機器に印刷データを送信する際に、前記情報取得手段と前記機器状態判別手段によりデータの送信を開始するまでの待ち時間の決定ができない場合に、予め決定されているデフォルト値を待ち時間として決定する待ち時間決定手段と、を備えることを特徴とする。
【０００８】
請求項５の発明は、前記情報取得手段によってポートモニタが取得する機器情報には、製品の名称または製品の名称に順ずる値が含まれていることを特徴とする。
【０００９】
請求項６の発明は、前記機器状態判別手段は、機器が正常状態、またはスリープ状態（省電力状態）、または電源断状態のいずれかであるかの判別を行うことを特徴とする。
【発明の効果】
【００１０】
本発明によって、印刷機器は印刷可能状態下において確実に印刷データを受信することが可能であり、印刷機器がスリープモードであった場合に印刷データを受信することによるポートモニタ側のタイムアウトの発生を回避することが可能である。
【発明を実施するための最良の形態】
【００１１】
（第１の実施例）
以下、図面を参照して本発明の第一の実施の形態について説明する。まず、本実施の形態において想定しているポートモニタの全体構成について説明する。本実施の形態において印刷ジョブの送信側でありポートモニタがインストールされているホストコンピュータ１０１は、図１に示す様に、ローカルエリアネットワーク（ＬＡＮ）１０３に接続されている。また、本実施の形態において、印刷ジョブの受信側としては、プリンタ１０２が想定されている。受信側のプリンタ１０２は、レーザープリンタやデジタル複合機などであり、ネットワーク経由で印刷ジョブを受信したり、ホストコンピュータ１０１と通信を行うことにより、プリンタ１０２の情報をホストコンピュータ１０１に送信したり、ホストコンピュータ１０１から受信したコマンドによってプリンタ１０２の各種設定が可能である。プリンタ１０２は、送信側のホストコンピュータ１０１と同様に、ＬＡＮ１０３に接続される構成となっている。ＬＡＮ１０３は一般的にいわれるところのＬＡＮ（Ｌｏｃａｌ Ａｒｅａ Ｎｅｔｗｏｒｋ）であり、イーサネット（登録商標）（Ｅｔｈｅｒｎｅｔ（登録商標））であるものとする。ＬＡＮ１０３に接続される各端末や各印刷装置はイーサネット（登録商標）ケーブルやハブ（ＨＵＢ）などを介して接続される。なお、ここでのＬＡＮの種別はイーサネット（登録商標）であるが、これは限定されるものではなく、一般的にＬＡＮを形成するものであればよい。たとえばトークンリング（ＴｏｋｅｎＲｉｎｇ）などであってもよい。また、ＬＡＮ１０３には上述のホストコンピュータ１０１とプリンタ１０２に加えて、各種の一般的なネットワーク機器が接続されるものとする。たとえばネットワークルータや電子メールサーバ、ファイルサーバであるものとする。
【００１２】
次に印刷ジョブの送信側となるホストコンピュータ１０１の構成について説明する。上述のようなホストコンピュータ１０１は、例えば図２に示すような構成となっている。図２で示されるホストコンピュータ１０１は、ホストコンピュータ全体の動作制御を司るCPU２０１と、CPU２０１での動作制御のための各種プログラムやデータなどが格納されるROM２０２と、CPU２０１の主メモリや作業エリアなどを含むRAM２０３と、マウス２０６と、マウス２０６からの指示入力を制御するマウスコントローラ２０５と、キーボード２０８と、キーボード２０８やポインティングデバイス（図示せず）からの指示入力を制御するキーボードコントローラ２０７と、ＣＲＴディスプレイ２１０と、ＣＲＴディスプレイ２１０の表示を制御するＣＲＴコントローラ２０９と、各種プログラムやデータ（ブートプログラム、種々のアプリケーション、プリンタドライバ、ポートモニタ、など）を記憶するためのハードディスクドライブ２１２及びフロッピー（登録商標）ディスクドライブ２１３と、ハードディスクドライブ２１２及びフロッピー（登録商標）ディスクドライブ２１３とのアクセスを制御するディスクコントローラ２１１と、ＬＡＮ１０３を介してプリンタ１０２と双方向にデータをやりとりするためのネットワークインタフェイスカード２１４とを備えており、これらの各構成部は、システムバス２０４を介して互いに通信可能なように接続されている。
【００１３】
次に、印刷ジョブを受信する側となるプリンタ１０２の構成について説明する。上述のようなプリンタ１０２の主なる構成は、例えば、図３に示すように、デバイス全体の動作制御を司るＣＰＵ３０１と、ＣＰＵ３０１での動作制御のための各種プログラムやデータ等が格納されるＲＯＭ３０２と、ＣＰＵ３０１の主メモリや作業用エリア等を含むＲＡＭ３０３と、デバイス機能（プリンタ機能やコピー機能等）のエンジン３０４と、エンジン３０４の駆動を制御するエンジンコントローラ３０５と、ユーザから各種操作指示を受け付けたり種々の情報を表示するパネル３０６と、パネル３０６での入出力をコントロールしたりパネル３０６を管理するパネルコントローラ３０７と、各種プログラムやデータ（機器情報データベース）を記憶するためのハードディスクドライブ３０８と、ハードディスクドライブ３０８とのアクセスを制御するディスクコントローラ３０９と、不揮発性ＲＡＭ３１０と、LAN１０４を介してメールサーバ１０３と双方向にデータをやりとりするためのネットワークインタフェイスカード３１１とを備えている。ＳＮＭＰ制御部３１２はプリンタ１０２上でアプリケーション層プロトコルであるＳＮＭＰ（Simple Network Management Protocol）が動作するのに必要がソフトウェアであり、デバイスのデータベースであるＭＩＢ３１４とのアクセスを行い、ホストコンピュータ１０１へデータを送ったりまた制御コマンドを受信して所定の処理を行う。ＭＩＢ３１４は、ＳＮＭＰで使用される機器情報データベースであるＭＩＢ（Machine Information Base）である。これらの各構成部は、システムバス３１３を介して互いに通信可能なように接続されている。
【００１４】
次に、図４のフロー図を用いて本発明のポートモニタを使用してのポートの作成の流れを説明していく。ホストコンピュータ１０１のユーザはホストコピュータ１０１上で動作しているオペレーティングシステムを操作して、プリンタのポートの新規登録を行う。ポートの新規登録はオペレーティングシステムが標準で備えているポートを使用する場合と、任意のポートモニタソフトウェアをインストールし、ポートを作成する場合とがある。本実施の形態においては、ポートの追加方法は後者となる。ユーザは予めホストコンピュータ１０１にインストールされた本実施の形態で使用されるポートモニタを使用して新規にポートを追加する。本実施の形態においては、ユーザはプリンタ１０２のポートを作成するものとする。Ｓｔｅｐ４０１において、ユーザはプリンタのネットワーク識別子を入力する。ユーザはポートモニタのポートの追加を支持する操作を、オペレーティングシステムのＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）から行う。ネットワーク識別子とは、ネットワーク上でプリンタ１０２を識別するための情報であり、ここではＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌアドレス）またはホスト名であるものとする。ユーザによってプリンタ１０２のＩＰアドレスまたはホスト名が入力されたならば、次にＳｔｅｐ４０２においてプリンタ１０２の情報の取得を行う。ポートモニタはプリンタ１０２にＳＮＭＰプロトコルで通信を行うことによってプリンタ１０２の製品名称情報を取得する。ＳＮＭＰはＬＡＮやインターネットに接続されるデバイスを管理することを目的としたプロトコルで、デバイスの状況や構成、及びエラー情報等といった情報の取得が可能である。ＳＮＭＰはそのプロトコルの仕様として、ネットワーク上のデバイスはＭａｎａｇｅｒとＡｇｅｎｔの２種に分割して構成されている。ＭａｎａｇｅｒはＡｇｅｎｔのデバイス情報の取得と設定を行う側であり、ＡｇｅｎｔはＭａｎａｇｅｒからの問い合わせ（要求）に対して応答を行う側となる。本発明の実施の形態においてはホストコンピュータ１０１がＭａｎａｇｅｒとしての機能を担うものとし、プリンタ１０２はＡｇｅｎｔとしての機能を担うものとする。ここではポートモニタはＧｅｔＲｅｑｕｅｓｔメッセージを用いて問い合わせを行う。ＧｅｔＲｅｑｕｅｓｔメッセージとは、Ａｇｅｎｔから一つ以上の変数値の取り出しを行うメッセージである。ポートモニタはＳＮＭＰパケットの編集を行う。まずＳＮＭＰのＰＤＵタイプは０（ＧｅｔＲｅｑｕｅｓｔ）である。要求ＩＤはポートモニタによって動的に決定される。ここでは、製品名称を意味するオブジェクトを指定するものとする。エラー情報フィールドは０である。問い合わせるＭＩＢは1.3.6.1.4.1下の値であり、つまりベンダ独自に拡張可能なＯＩＤ（Ｏｂｊｅｃｔ-ＩＤ）が格納される。本発明の実施の形態においては製品名称を意味するＯｂｊｅｃｔが予め定義されているものとし、それらのＯＩＤが格納されているものとする。ここで、ＧｅｔＲｅｑｕｅｓｔメッセージの送信先となるプリンタ１０２のＩＰアドレスは、Ｓｔｅｐ４０１において取得できているものとする。ポートモニタは上記の構成をもってＵＤＰパケットを編集し、プリンタ１０２に対してＳＮＭＰプロトコルの送出を行う。次にプリンタ１０２はＳＮＭＰパケットを受信して応答に備える処理を行う。まずプリンタ１０２のネットワークインタフェイスカード３１１がＳＮＭＰパケットを受信する。ＳＮＭＰのアプリケーションデータはハードディスクドライブ３０８に格納されている解析ソフトウェアに渡される。次にプリンタ１０２は受信したＧｅｔＲｅｑｕｅｓｔメッセージの内容の解析（デコード）を行う。解析ソフトウェアは、受信したＳＮＭＰパケットのＰＤＵ-Ｔｙｐｅフィールドの値が０であることから、それがＧｅｔＲｅｑｕｅｓｔであることを認識する。次にＯＩＤの解析を行う。ＯＩＤはエラー情報の詳細状況を意味するＯｂｊｅｃｔとジョブオーナーを一意に特定する意味を持つＯｂｊｅｃｔであるため、解析ソフトウェアはその応答メッセージを用意する。ここでは受信したＯＩＤは製品名称を意味するものであることから、プリンタ１０２はプリンタ１０２の製品名称を含めた内容をホストコンピュータ１０１に送信する。ホストコンピュータ１０１はこのメッセージを受信してプリンタ１０２の製品名称を認識する。次にＳｔｅｐ４０３において、ポートモニタはプリンタ１０２のポートにデータを送出する際の待ち時間の設定を行う。ポートモニタはポートモニタの構成ファイルとして所有しているテーブルファイルを参照することによりプリンタ１０２にデータを送出する場合の待ち時間を取得する。テーブルファイルの一例を図５として例示する。図５は、ポートモニタがプリンタやＭＦＰから取得した製品名称と、それらの機器にデータを送信する際の待ち時間との対応表である。本実施の形態においては、Ｓｔｅｐ４０２でプリンタ１０２から取得した製品名称は"Ｐｒｉｎｔｅｒ１０２"であるものとする。図５の情報５０１から、"Ｐｒｉｎｔｅｒ１０２"に対応する待ち時間は５０であることが分かる。ここでは５０とは待ち時間が５０秒であることを示す。この処理により、ポートモニタがプリンタ１０２のポートにデータを送出する場合の待ち時間は５０秒と決定される。次に図６のフロー図を用いて、ホストコンピュータ１０１を操作するユーザがプリンタ１０２に印刷指示を行う場合の処理の流れについて示す。Ｓｔｅｐ６０１において、ユーザは印刷指示を行う。ここでユーザはホストコンピュータ１０１上で任意のアプリケーションソフトウェアを動作させているものとする。ユーザはアプリケーションソフトウェア上でデータを編集等を行い、そのデータの印刷指示をかける。印刷指示を行った場合のホストコンピュータ１０１内のソフトウェア群の連係動作は次のようになる。ポートモニタがアプリケーションデータをプリンタ１０２に送信する際の動作は、例えば図７に示される構成である。オペレーティングシステム７０１はホストコンピュータ１０１上で動作している。アプリケーションソフトウェア７０２はユーザが任意でインストール及び起動を行うソフトウェアで、例えば文書編集ソフトウェアや表計算ソフトウェアなどが存在する。ユーザがアプリケーションソフトウェ７０２で編集を行っているデータの印刷を行う場合は、プリントドライバ７０３がアプリケーションソフトウェア７０２からある単位のデータを���け取り、順次ある単位毎にＰＤＬイメージ（Ｐａｇｅ Ｄｅｓｃｒｉｐｔｉｏｎ Ｌａｎｇａｇｅイメージ）を生成し、ホストコンピュータ１０１内のスプーラ７０４に渡す。ポートモニタ７０５はスプーラ７０４から順次、ＰＤＬイメージ化されたプリントジョブを受信し、それらをプリンタ１０２にデータを送信するためのポートに所定のプロトコルで送信する。ポートモニタ７０５がスプーラ７０４からデータを受信したら、次にポートモニタ７０５はプリンタ１０２と通信を行う（Ｓｔｅｐ６０２）。ポートモニタ７０５は、ＩＣＭＰプロトコル（Ｉｎｔｅｒｎｅｔ  Ｃｏｎｔｒｏｌ  Ｍｅｓｓａｇｅ  Ｐｒｏｔｏｃｏｌ）のＰｉｎｇコマンド（Ｐａｃｋｅｔ  ＩＮｔｅｒｎｅｔ  Ｇｒｏｐｅｒ）をプリンタ１０２に送出する。ＰｉｎｇとはインターネットやイントラネットなどのＴＣＰ／ＩＰネットワークを診断するプログラム。接続されているかどうか調べたいコンピュータのＩＰアドレスまたはホスト名を指定すると、ＩＣＭＰプロトコルを使って通常３２バイト程度のデータを送信し、相手のコンピュータから返信があるかどうか、返信がある場合はどのくらい時間がかかっているか、などのデータを元にネットワークを診断する。ポートモニタ７０５はＰｉｎｇコマンドをプリンタ１０２に送出することによって、プリンタ１０２がスリープモード（省電力モード）であるか、または電源断状態であるか、または印刷可能状態であるかを判断する。ここでポートモニタ７０５が送出したＰｉｎｇコマンドに対して即座に応答があった場合には、プリンタ１０２は印刷可能状態であると判断できる。反対に、ポートモニタ７０５が送出したＰｉｎｇコマンドに対して即座に応答がなく遅延した場合にはプリンタ１０２はスリープモードであると判断する（Ｓｔｅｐ６０３）。ポートモニタ７０５はプリンタ１０２からの応答時間を計測するために、Ｐｉｎｇコマンドを送出したあとでソフトウェアタイマを起動する（Ｓｔｅｐ６０６）。プリンタ１０２がスリープモードであった場合には、プリンタ１０２はＰｉｎｇコマンドを受信したことによって印刷可能状態に移行する。移行には有限の時間が必要であるがその時間は機器によって異なるものである。本実施の形態においてはプリンタ１０２が印刷可能状態に移行するのに必要な時間は５０秒よりわずかに少ない数値である。Ｓｔｅｐ６０３においてプリンタ１０２から即座に応答があった場合にはプリンタ１０２は印刷可能状態であるため、ポートモニタ７０５はジョブ送信処理に移行する（Ｓｔｅｐ６０５）。Ｓｔｅｐ６０３においてプリンタ１０２から即座に応答がなかった場合には、プリンタ１０２はスリープモード下または電源断状態にあると判断できるため、ポートモニタ７０５は５０秒のカウントモードに移行する（Ｓｔｅｐ６０４）。ここでの５０秒とはＳｔｅｐ４０３によって決定された値である。ポートモニタ７０５は、Ｓｔｅｐ６０６において起動したソフトウェアタイマを用いて５０秒の測定を行う。この測定状態では、ポートモニタ７０５はプリンタ１０２から応答がない限りは自発的にデータを送信することは行わない。ここで５０秒のタイムアウトが発生する前にプリンタ１０２から応答があった場合には、プリンタ１０２はスリー���モード下であったものであり且つスリープモードから復帰したと判断できるため、ポートモニタ７０５はジョブ送信処理に移行する（Ｓｔｅｐ６０５）。プリンタ１０２から応答がないまま５０秒が経過した場合には、プリンタ１０２は電源断状態であると判断して印刷ジョブを削除する（Ｓｔｅｐ７０７）。次にＳｔｅｐ６０５において、ポートモニタ７０５は印刷ジョブの送信を行う。ポートモニタ７０５はスプーラ７０４から受信した印刷データを所定のプロトコルを用いてプリンタ１０２へ送信する。これら一連の処理により、プリンタ１０２は印刷可能状態下で確実に印刷データを受信することが可能であり、プリンタ１０２がスリープモード時に印刷データを受信することによるポートモニタのタイムアウトが発生する問題を回避することが可能である。
【００１５】
（第２の実施例）
本発明の第二の実施の形態について説明する。
【００１６】
第二の実施例では、ポートモニタのポート作成時に、機器との通信ができない場合、または通信を行った結果として待ち時間のマッピングができなかった場合の待ち時間の設定方法について説明していく。ここで、プリンタ、ホストコンピュータ及びそれらが接続される環境は図１に示されるものである。また、ホストコンピュータ１０１及びプリンタ１０２の詳細な構成も、それぞれ図２及び図３で示されるものとする。
【００１７】
次に、図８のフロー図を用いて本発明のポートモニタを使用してのポートの作成の流れを説明していく。ホストコンピュータ１０１のユーザはホストコピュータ１０１上で動作しているオペレーティングシステムを操作して、プリンタのポートの新規登録を行う。ポートの新規登録はオペレーティングシステムが標準で備えているポートを使用する場合と、任意のポートモニタソフトウェアをインストールし、ポートを作成する場合とがある。本実施の形態においては、ポートの追加方法は後者となる。ユーザは予めホストコンピュータ１０１にインストールされた本実施の形態で使用されるポートモニタを使用して新規にポートを追加する。本実施の形態においては、ユーザはプリンタ１０２のポートを作成するものとする。Ｓｔｅｐ８０１において、ユーザはプリンタのネットワーク識別子を入力する。ユーザはポートモニタのポートの追加を支持する操作を、オペレーティングシステムのＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）から行う。ネットワーク識別子とは、ネットワーク上でプリンタ１０２を識別するための情報であり、ここではＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌアドレス）またはホスト名であるものとする。ユーザによってプリンタ１０２のＩＰアドレスまたはホスト名が入力されたならば、次にＳｔｅｐ８０２においてプリンタ１０２の情報の取得を行う。ポートモニタはプリンタ１０２にＳＮＭＰプロトコルで通信を行うことによってプリンタ１０２の製品名称情報を取得する。ＳＮＭＰはＬＡＮやインターネットに接続されるデバイスを管理することを目的としたプロトコルで、デバイスの状況や構成、及びエラー情報等といった情報の取得が可能である。ＳＮＭＰはそのプロトコルの仕様として、ネットワーク上のデバイスはＭａｎａｇｅｒとＡｇｅｎｔの２種に分割して構成されている。ＭａｎａｇｅｒはＡｇｅｎｔのデバイス情報の取得と設定を行う側であり、ＡｇｅｎｔはＭａｎａｇｅｒからの問い合わせ（要求）に対して応答を行う側となる。本発明の実施の形態においてはホストコンピュータ１０１がＭａｎａｇｅｒとしての機能を担うものとし、プリンタ１０２はＡｇｅｎｔとしての機能を担うものとする。ここではポートモニタはＧｅｔＲｅｑｕｅｓｔメッセージを用いて問い合わせを行う。ＧｅｔＲｅｑｕｅｓｔメッセージとは、Ａｇｅｎｔから一つ以上の変数値の取り出しを行うメッセージである。ポートモニタはＳＮＭＰパケットの編集を行う。まずＳＮＭＰのＰＤＵタイプは０（ＧｅｔＲｅｑｕｅｓｔ）である。要求ＩＤはポートモニタによって動的に決定される。ここでは、製品名称を意味するオブジェクトを指定するものとする。エラー情報フィールドは０である。問い合わせるＭＩＢは1.3.6.1.4.1下の値であり、つまりベンダ独自に拡張可能なＯＩＤ（Ｏｂｊｅｃｔ-ＩＤ）が格納される。本発明の実施の形態においては製品名称を意味するＯｂｊｅｃｔが予め定義されているものとし、それらのＯＩＤが格納されているものとする。ここで、ＧｅｔＲｅｑｕｅｓｔメッセージの送信先となるプリンタ１０２のＩＰアドレスは、Ｓｔｅｐ４０１において取得できているものとする。ポートモニタは上記の構成をもってＵＤＰパケットを編集し、プリンタ１０２に対してＳＮＭＰプロトコルの送出を行う。次にプリンタ１０２はＳＮＭＰパケットを受信して応答に備える処理を行う。まずプリンタ１０２のネットワークインタフェイスカード３１１がＳＮＭＰパケットを受信する。ＳＮＭＰのアプリケーションデータはハードディスクドライブ３０８に格納されている解析ソフトウェアに渡される。次にプリンタ１０２は受信したＧｅｔＲｅｑｕｅｓｔメッセージの内容の解析（デコード）を行う。解析ソフトウェアは、受信したＳＮＭＰパケットのＰＤＵ-Ｔｙｐｅフィールドの値が０であることから、それがＧｅｔＲｅｑｕｅｓｔであることを認識する。次にＯＩＤの解析を行う。ＯＩＤはエラー情報の詳細状況を意味するＯｂｊｅｃｔとジョブオーナーを一意に特定する意味を持つＯｂｊｅｃｔであるため、解析ソフトウェアはその応答メッセージを用意する。ここでは受信したＯＩＤは製品名称を意味するものであることから、プリンタ１０２はプリンタ１０２の製品名称を含めた内容をホストコンピュータ１０１に送信する。このプリンタ１０２側の処理において、たとえばプリンタ１０２の電源が入っていなかったり、またプリンタ１０２内で何らかのエラーが発生していてネットワークを使用した通信を行うことができない場合にはホストコンピュータ１０１へ応答することができない。この場合は、Ｓｔｅｐ８０７の処理に移行する。ホストコンピュータ１０１がこのメッセージを受信してプリンタ１０２の製品名称を認識した場合には、Ｓｔｅｐ８０４に移行して、ポートモニタはテーブルファイルを用いてプリンタ１０２のポートにデータを送出する際の待ち時間の設定を行う（Ｓｔｅｐ８０３）。ポートモニタはポートモニタの構成ファイルとして所有しているテーブルファイルを参照することによりプリンタ１０２にデータを送出する場合の待ち時間を取得する。テーブルファイルの一例を図５として例示する。図５は、ポートモニタがプリンタやＭＦＰから取得した製品名称と、それらの機器にデータを送信する際の待ち時間との対応表である。左列は製品名称を意味し、右列は待ち時間を意味している。ここで、Ｓｔｅｐ８０２で取得した製品名称がテーブルファイルに存在しなかった場合には、Ｓｔｅｐ８０７の処理に移行する。製品名称と待ち時間のマッピングを行うことができたならば、ポートモニタがプリンタ１０２のポートにデータを送出する場合の待ち時間はテーブル中の値に決定される（Ｓｔｅｐ８０６）。Ｓｔｅｐ８０３でプリンタ１０２からの応答がなかった場合、またはＳｔｅｐ８０５でテーブルファイル中にプリンタ１０２の製品名称が存在しなかった場合には、待ち時間は予め決定されている固定のデフォルト値に設定される（Ｓｔｅｐ８０７）。
【００１８】
次に図６のフロー図を用いて、ホストコンピュータ１０１を操作するユーザがプリンタ１０２に印刷指示を行う場合の処理の流れについて示す。Ｓｔｅｐ６０１において、ユーザは印刷指示を行う。ここでユーザはホストコンピュータ１０１上で任意のアプリケーションソフトウェアを動作させているものとする。ユーザはアプリケーションソフトウェア上でデータを編集等を行い、そのデータの印刷指示をかける。印刷指示を行った場合のホストコンピュータ１０１内のソフトウェア群の連係動作は次のようになる。ポートモニタがアプリケーションデータをプリンタ１０２に送信する際の動作は、例えば図７に示される構成である。オペレーティングシステム７０１はホストコンピュータ１０１上で動作している。アプリケーションソフトウェア７０２はユーザが任意でインストール及び起動を行うソフトウェアで、例えば文書編集ソフトウェアや表計算ソフトウェアなどが存在する。ユーザがアプリケーションソフトウェ７０２で編集を行っているデータの印刷を行う場合は、プリントドライバ７０３がアプリケーションソフトウェア７０２からある単位のデータを受け取り、順次ある単位毎にＰＤＬイメージ（Ｐａｇｅ Ｄｅｓｃｒｉｐｔｉｏｎ Ｌａｎｇａｇｅイメージ）を生成し、ホストコンピュータ１０１内のスプーラ７０４に渡す。ポートモニタ７０５はスプーラ７０４から順次、ＰＤＬイメージ化されたプリントジョブを受信し、それらをプリンタ１０２にデータを送信するためのポートに所定のプロトコルで送信する。ポートモニタ７０５がスプーラ７０４からデータを受信したら、次にポートモニタ７０５はプリンタ１０２と通信を行う（Ｓｔｅｐ６０２）。ポートモニタ７０５は、ＩＣＭＰプロトコル（Ｉｎｔｅｒｎｅｔ  Ｃｏｎｔｒｏｌ  Ｍｅｓｓａｇｅ  Ｐｒｏｔｏｃｏｌ）のＰｉｎｇコマンド（Ｐａｃｋｅｔ  ＩＮｔｅｒｎｅｔ  Ｇｒｏｐｅｒ）をプリンタ１０２に送出する。ＰｉｎｇとはインターネットやイントラネットなどのＴＣＰ／ＩＰネットワークを診断するプログラム。接続されているかどうか調べたいコンピュータのＩＰアドレスまたはホスト名を指定すると、ＩＣＭＰプロトコルを使って通常３２バイト程度のデータを送信し、相手のコンピュータから返信があるかどうか、返信がある場合はどのくらい時間がかかっているか、などのデータを元にネットワークを診断する。ポートモニタ７０５はＰｉｎｇコマンドをプリンタ１０２に送出することによって、プリンタ１０２がスリープモード（省電力モード）であるか、または電源断状態であるか、または印刷可能状態であるかを判断する。ここでポートモニタ７０５が送出したＰｉｎｇコマンドに対して即座に応答があった場合には、プリンタ１０２は印刷可能状態であると判断できる。反対に、ポートモニタ７０５が送出したＰｉｎｇコマンドに対して即座に応答がなく遅延した場合にはプリンタ１０２はスリープモードであると判断する（Ｓｔｅｐ６０３）。ポートモニタ７０５はプリンタ１０２からの応答時間を計測するために、Ｐｉｎｇコマンドを送出したあとでソフトウェアタイマを起動する（Ｓｔｅｐ６０６）。プリンタ１０２がスリープモードであった場合には、プリンタ１０２はＰｉｎｇコマンドを受信したことによって印刷可能状態に移行する。移行には有限の時間が必要であるがその時間は機器によって異なるものである。本実施の形態においてはプリンタ１０２が印刷可能状態に移行するのに必要な時間はＳｔｅｐ８０６によって決定された待ち時間値よりわずかに少ない数値である。Ｓｔｅｐ６０３においてプリンタ１０２から即座に応答があった場合にはプリンタ１０２は印刷可能状態であるため、ポートモニタ７０５はジョブ送信処理に移行する（Ｓｔｅｐ６０５）。Ｓｔｅｐ６０３においてプリンタ１０２から即座に応答がなかった場合には、プリンタ１０２はスリープモード下または電源断状態にあると判断できるため、ポートモニタ７０５は待ち時間のカウントモードに移行する（Ｓｔｅｐ６０４）。ここでの待ち時間はＳｔｅｐ８０６またはＳｔｅｐ８０７により決定された値である。ポートモニタ７０５は、Ｓｔｅｐ６０６において起動したソフトウェアタイマを用いて待ち時間の測定を行う。この測定状態では、ポートモニタ７０５はプリンタ１０２から応答がない限りは自発的にデータを送信することは行わない。ここで待ち時間のタイムアウトが発生する前にプリンタ１０２から応答があった場合には、プリンタ１０２はスリープモード下であったものであり且つスリープモードから復帰したと判断できるため、ポートモニタ７０５はジョブ送信処理に移行する（Ｓｔｅｐ６０５）。プリンタ１０２から応答がないまま待ち時間が経過した場合には、プリンタ１０２は電源断状態であると判断して印刷ジョブを削除する（Ｓｔｅｐ７０７）。次にＳｔｅｐ６０５において、ポートモニタ７０５は印刷ジョブの送信を行う。ポートモニタ７０５はスプーラ７０４から受信した印刷データを所定のプロトコルを用いてプリンタ１０２へ送信する。これら一連の処理により、ポート作成時の危機の状態により待ち時間を変更することができ、機器へデータを送信する際の信頼度を向上することが可能になる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施の形態を例示したブロック図である。
【図２】印刷装置の内部構造を示すブロック図である。
【図３】パーソナルコンピュータの内部構造を示すブロック図である。
【図４】論理ポート作成時の一例を示すフロー図である。
【図５】印刷装置の種別と送信待ち時間との対応を示す図である。
【図６】印刷ジョブ送信時のフロー図である。
【図７】ホストコンピュータのソフトウェア階層を表すブロック図である。
【図８】印刷ジョブ送信時のフロー図である。
【符号の説明】
【００２０】
１０１  ホストコンピュータ
１０２  プリンタ
１０３  LAN
２０１  CPU
２０２  ROM
２０３  RAM
２０４  システムバス
２０５  マウスコントローラ
２０６  マウス
２０７  キーボードコントローラ
２０８  キーボード
２０９  CRTコントローラ
２１０  CRT
２１１  ディスクコントローラ
２１２  ハードディスクドライブ
２１３  フロッピー（登録商標）ディスクドライブ
２１４  ネットワークインタフェイスカード
３０１  CPU
３０２  ROM
３０３  RAM
３０４  エンジン
３０５  エンジンコントローラ
３０６  パネル
３０７  パネルコントローラ
３０８  ハードディスクドライブ
３０９  ディスクコントローラ
３１０  NVRAM
３１１  ネットワークインタフェイスカード
３１２  SNMP制御部
３１３  システムバス
３１４  MIB
【図１】
2006163568.tif 000003
【図２】
2006163568.tif 000004
【図３】
2006163568.tif 000005
【図４】
2006163568.tif 000006
【図５】
2006163568.tif 000007
【図６】
2006163568.tif 000008
【図７】
2006163568.tif 000009
【図８】
2006163568.tif 000010