(57)【特許請求の範囲】
【請求項１】
外部装置と接続する情報処理装置のコンピュータに、
前記外部装置がジョブの処理順番を管理可能なジョブキューを備えているか否かを示す情報を含む能力情報を前記外部装置から取得する取得ステップと、
ジョブの送信指示を受け付ける受け付けステップと、
前記受け付けステップの前に実行された前記取得ステップにより前記外部装置から取得された前記能力情報をキャッシュ情報として保存する保存ステップと、
前記ジョブを管理し、管理している前記ジョブの送信が完了したか否かを認識する管理機能を有するスプーラが管理する前記ジョブを、前記受け付けステップの後に前記外部装置に送信する送信ステップと、
前記送信ステップにて送信した前記ジョブの処理が前記外部装置によって完了していない場合に、前記外部装置への前記ジョブの送信が完了したにもかかわらず前記スプーラに前記ジョブの送信が完了していないと認識させるジョブ保持処理を実行する処理ステップ
と、を実行させるためのプログラムであって、
新たに前記外部装置が接続したことを前記プログラムが検知できない第１接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられた場合、前記受け付けステップの後にも前記取得ステップを実行し、
前記第１接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられ、且つ前記受け付けステップの後に実行された前記取得ステップにて取得された前記能力情報に前記外部装置が前記ジョブキューを備えていることを示す情報が含まれる場合は、前記ジョブ保持処理を実行せず、
前記第１接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられ、且つ前記受け付けステップの後に実行された前記取得ステップにて取得された前記能力情報に前記外部装置が前記ジョブキューを備えていることを示す情報が含まれない場合は、前記ジョブ保持処理を実行し、
新たに前記外部装置が接続したことを前記プログラムが検知できる第２接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられた場合、前記受け付けステップの後には前記取得ステップを実行せず、
前記第２接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられ、且つ前記キャッシュ情報に前記外部装置が前記ジョブキューを備えていることを示す情報が含まれる場合は、前記ジョブ保持処理を実行せず、前記第２接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられ、且つ前記キャッシュ情報に前記外部装置が前記ジョブキューを備えていることを示す情報が含まれない場合は、前記ジョブ保持処理を実行することを特徴とするプログラム。
【請求項２】
前記第１接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられ、且つ前記キャッシュ情報に対応する能力情報の提供元の前記外部装置と前記第１接続方式を介して前記情報処理装置が接続している前記外部装置とが異なる場合、前記受け付けステップの後にも前記取得ステップを実行し、
前記第１接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられ、且つ前記キャッシュ情報に対応する能力情報の提供元の前記外部装置と前記第１接続方式を介して前記情報処理装置が接続している前記外部装置とが異ならない場合、前記受け付けステップの後には前記取得ステップを実行しないことを特徴とする請求項１に記載のプログラム。
【請求項３】
前記第１接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられ、前記キャッシュ情報に対応する能力情報の提供元の前記外部装置と前記第１接続方式を介して前記情報処理装置が接続している前記外部装置とが異ならず、且つ前記キャッシュ情報に前記外部装置が前記ジョブキューを備えていることを示す情報が含まれる場合は、前記ジョブ保持処理を実行せず、
前記第１接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられ、前記キャッシュ情報に対応する能力情報の提供元の前記外部装置と前記第１接続方式を介して前記情報処理装置が接続している前記外部装置とが異ならず、且つ前記キャッシュ情報に前記外部装置が前記ジョブキューを備えていることを示す情報が含まれない場合は、前記ジョブ保持処理を実行することを特徴とする請求項２に記載のプログラム。
【請求項４】
オプションの着脱によって能力が変化する可能性がある前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられた場合、前記受け付けステップの後にも前記取得ステップを実行することを特徴とする請求項１乃至請求項３のいずれか一項に記載のプログラム。
【請求項５】
前記オプションの着脱によって能力が変化する可能性がある前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられ、且つ前記受け付けステップの後に実行された前記取得ステップにて取得された前記能力情報に前記外部装置が前記ジョブキューを備えていることを示す情報が含まれる場合は、前記ジョブ保持処理を実行せず、
前記オプションの着脱によって能力が変化する可能性がある前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられ、且つ前記受け付けステップの後に実行された前記取得ステップにて取得された前記能力情報に前記外部装置が前記ジョブキューを備えていることを示す情報が含まれない場合は、前記ジョブ保持処理を実行することを特徴とする請求項４に記載のプログラム。
【請求項６】
前記情報処理装置との双方向通信ができない前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられた場合、前記ジョブ保持処理を実行しないことを特徴とする請求項１乃至請求項５のいずれか一項に記載のプログラム。
【請求項７】
前記第１接続方式は、ネットワークを介して前記外部装置と接続する接続方式であることを特徴とする請求項１乃至請求項６のいずれか一項に記載のプログラム。
【請求項８】
前記第２接続方式は、ＵＳＢを介して前記外部装置と接続する接続方式であることを特徴とする請求項１乃至請求項７のいずれか一項に記載のプログラム。
【請求項９】
前記ジョブは、前記外部装置の備える記録剤によって、前記外部装置の備える記録媒体上に画像を印刷する印刷処理を、前記外部装置に実行させるための印刷ジョブであることを特徴とする請求項１乃至請求項８のいずれか一項に記載のプログラム。
【請求項１０】
前記プログラムは、プリンタドライバであることを特徴とする請求項１乃至９のいずれか１項に記載のプログラム。
【請求項１１】
前記プログラムは、ランゲージモニタであることを特徴とする請求項１乃至１０のいずれか１項に記載のプログラム。
【請求項１２】
外部装置と接続し、所定のプログラムを有する情報処理装置であって、
前記外部装置がジョブの処理順番を管理可能なジョブキューを備えているか否かを示す情報を含む能力情報を前記外部装置から取得する取得手段と、
ジョブの送信指示を受け付ける受け付け手段と、
前記受け付け手段により前記ジョブの送信指示が受け付けられる前に前記取得手段により前記外部装置から取得された前記能力情報をキャッシュ情報として保存する保存手段と、
前記ジョブを管理し、管理している前記ジョブの送信が完了したか否かを認識する管理機能を有するスプーラが管理する前記ジョブを、前記受け付け手段により前記ジョブの送信指示が受け付けられた後に前記外部装置に送信する送信手段と、
前記送信手段が送信した前記ジョブの処理が前記外部装置によって完了していない場合に、前記外部装置への前記ジョブの送信が完了したにもかかわらず前記スプーラに前記ジョブの送信が完了していないと認識させるジョブ保持処理を実行する処理手段と、を有し、
新たに前記外部装置が接続したことを前記所定のプログラムが検知できない第１接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付け手段によって受け付けられた場合、前記ジョブの送信指示が前記受け付け手段によって受け付けられた後にも前記取得手段によって前記能力情報を取得し、
前記第１接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付け手段によって受け付けられ、且つ前記ジョブの送信指示が前記受け付け手段によって受け付けられた後に前記取得手段によって取得された前記能力情報に前記外部装置が前記ジョブキューを備えていることを示す情報が含まれる場合は、前記ジョブ保持処理を実行せず、前記第１接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付け手段によって受け付けられ、且つ前記ジョブの送信指示が前記受け付け手段によって受け付けられた後に前記取得手段によって取得された前記能力情報に前記外部装置が前記ジョブキューを備えていることを示す情報が含まれない場合は、前記ジョブ保持処理を実行し、
新たに前記外部装置が接続したことを前記所定のプログラムが検知できる第２接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付け手段によって受け付けられた場合、前記ジョブの送信指示が前記受け付け手段によって受け付けられた後には前記取得手段によって前記能力情報を取得せず、
前記第２接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付け手段によって受け付けられ、且つ前記キャッシュ情報に前記外部装置が前記ジョブキューを備えていることを示す情報が含まれる場合は、前記ジョブ保持処理を実行せず、前記第２接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付け手段によって受け付けられ、且つ前記キャッシュ情報に前記外部装置が前記ジョブキューを備えていることを示す情報が含まれない場合は、前記ジョブ保持処理を実行することを特徴とする情報処理装置。
【請求項１３】
前記ジョブは、前記外部装置の備える記録剤によって、前記外部装置の備える記録媒体上に画像を印刷する印刷処理を、前記外部装置に実行させるための印刷ジョブであることを特徴とする請求項１２に記載の情報処理装置。
【請求項１４】
外部装置と接続し、所定のプログラムを有する情報処理装置において実行される制御方法であって、
前記外部装置がジョブの処理順番を管理可能なジョブキューを備えているか否かを示す情報を含む能力情報を前記外部装置から取得する取得ステップと、
ジョブの送信指示を受け付ける受け付けステップと、
前記受け付けステップの前に実行された前記取得ステップにより前記外部装置から取得された前記能力情報をキャッシュ情報として保存する保存ステップと、
前記ジョブを管理し、管理している前記ジョブの送信が完了したか否かを認識する管理機能を有するスプーラが管理する前記ジョブを、前記受け付けステップの後に前記外部装置に送信する送信ステップと、
前記送信ステップにて送信した前記ジョブの処理が前記外部装置によって完了していない場合に、前記外部装置への前記ジョブの送信が完了したにもかかわらず前記スプーラに前記ジョブの送信が完了していないと認識させるジョブ保持処理を実行する処理ステップと、を有し、
新たに前記外部装置が接続したことを前記所定のプログラムが検知できない第１接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられた場合、前記受け付けステップの後にも前記取得ステップを実行し、
前記第１接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられ、且つ前記受け付けステップの後に実行された前記取得ステップにて取得された前記能力情報に前記外部装置が前記ジョブキューを備えていることを示す情報が含まれる場合は、前記ジョブ保持処理を実行せず、
前記第１接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられ、且つ前記受け付けステップの後に実行された前記取得ステップにて取得された前記能力情報に前記外部装置が前記ジョブキューを備えていることを示す情報が含まれない場合は、前記ジョブ保持処理を実行し、
新たに前記外部装置が接続したことを前記所定のプログラムが検知できる第２接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられた場合、前記受け付けステップの後には前記取得ステップを実行せず、
前記第２接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられ、且つ前記キャッシュ情報に前記外部装置が前記ジョブキューを備えていることを示す情報が含まれる場合は、前記ジョブ保持処理を実行せず、
前記第２接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられ、且つ前記キャッシュ情報に前記外部装置が前記ジョブキューを備えていることを示す情報が含まれない場合は、前記ジョブ保持処理を実行することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、制御方法及びプログラムに関する。
【背景技術】
【０００２】
従来から、ジョブをプリンタ等の外部装置に送信することで、プリンタに当該ジョブに基づいた処理を行わせることが可能なパーソナルコンピュータ（以下、ＰＣという。）等の情報処理装置が知られている。このようなＰＣを利用するユーザは、例えば、マイクロソフト社のＷｉｎｄｏｗｓ（登録商標）におけるジョブキューのグラフィカルユーザインタフェースを閲覧すれば、ジョブがプリンタへ送信されたか否かを知ることが出来る。
【０００３】
しかし、このとき、ユーザは、ジョブがプリンタへ送信されたことを知ることが出来ても、プリンタによってジョブの処理が完了したか否かを知ることができない。そこで、特許文献１では、プリンタによってジョブの処理が完了するまで、ＰＣが備えるスプーラにジョブを保持させることで、ジョブの状態を監視する（以下、この処理をジョブ保持処理という。）ことができる技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−０１１４６９
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、受信したジョブをジョブキューにキューイングし、キューイングした順番にジョブを処理するプリンタ（ジョブキューを備えているプリンタ）にジョブを送信する場合にジョブ保持処理が実行されると、下記のような課題が起こる。
【０００６】
ジョブキューを備えているプリンタは、複数のＰＣからジョブを受信し、受信した順番にジョブを処理することが可能である。ここでは、ＰＣ１がジョブ１及びジョブ２を、ＰＣ２がジョブ３をプリンタに対して送信する場合を想定する。ＰＣ１は、ジョブ１を送信する際にジョブ保持処理を実行すると、スプーラにジョブ１が保持されるため、ジョブ１の処理が完了するまでジョブ２を送信することができない。この状態で、ＰＣ２がジョブ３をプリンタに対して送信した場合、ＰＣ２がジョブ３を送信するよりも早くＰＣ１がジョブ２を送信しようとしたにもかかわらず、プリンタは、ジョブ３を優先的に処理してしまう。このように、ジョブキューを備えているプリンタにジョブを送信する場合にジョブ保持処理が実行されると、ジョブの処理順番の追い越しが発生してしまう可能性があるという課題がある。
【０００７】
特許文献１は、ジョブ保持処理を行うか否かの判断において、ジョブの送信先であるプリンタがジョブキューを備えているか否かを考慮していない。そのため、特許文献１に開示された技術では、上記の課題が発生してしまうことを回避できないという課題がある。
【０００８】
本発明は、上記の課題を解決するためになされたもので、外部装置の能力に応じて適切な場合にジョブ保持処理を実行できる情報処理装置、制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
そこで、上記目的を達成するために、本発明のプログラムは、
前記外部装置がジョブの処理順番を管理可能なジョブキューを備えているか否かを示す情報を含む能力情報を前記外部装置から取得する取得ステップと、
ジョブの送信指示を受け付ける受け付けステップと、
前記受け付けステップの前に実行された前記取得ステップにより前記外部装置から取得された前記能力情報をキャッシュ情報として保存する保存ステップと、
前記ジョブを管理し、管理している前記ジョブの送信が完了したか否かを認識する管理機能を有するスプーラが管理する前記ジョブを、前記受け付けステップの後に前記外部装置に送信する送信ステップと、
前記送信ステップにて送信した前記ジョブの処理が前記外部装置によって完了していない場合に、前記外部装置への前記ジョブの送信が完了したにもかかわらず前記スプーラに前記ジョブの送信が完了していないと認識させるジョブ保持処理を実行する処理ステップと、を実行させるためのプログラムであって、
新たに前記外部装置が接続したことを前記プログラムが検知できない第１接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられた場合、前記受け付けステップの後にも前記取得ステップを実行し、
前記第１接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられ、且つ前記受け付けステップの後に実行された前記取得ステップにて取得された前記能力情報に前記外部装置が前記ジョブキューを備えていることを示す情報が含まれる場合は、前記ジョブ保持処理を実行せず、前記第１接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられ、且つ前記受け付けステップの後に実行された前記取得ステップにて取得された前記能力情報に前記外部装置が前記ジョブキューを備えていることを示す情報が含まれない場合は、前記ジョブ保持処理を実行し、
新たに前記外部装置が接続したことを前記プログラムが検知できる第２接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられた場合、前記受け付けステップの後には前記取得ステップを実行せず、
前記第２接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられ、且つ前記キャッシュ情報に前記外部装置が前記ジョブキューを備えていることを示す情報が含まれる場合は、前記ジョブ保持処理を実行せず、前記第２接続方式を介して前記情報処理装置が接続している前記外部装置への前記ジョブの送信指示が前記受け付けステップにて受け付けられ、且つ前記キャッシュ情報に前記外部装置が前記ジョブキューを備えていることを示す情報が含まれない場合は、前記ジョブ保持処理を実行することを特徴とする。
【発明の効果】
【００１０】
本発明の情報処理装置、制御方法及びプログラムによれば、外部装置の能力に応じて適切な場合にジョブ保持処理を実行できる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態における情報処理装置と外部装置とによって構成された通信システムの構成を示すブロック図
【図２】本実施形態における情報処理装置が備えるプリンタドライバの構成を示す概念図
【図３】本実施形態における情報処理装置が行うポート初期化処理を示すフローチャート
【図４】本実施形態における情報処理装置が行う能力情報の取得処理を示すフローチャート
【図５】本実施形態における情報処理装置が行うジョブの送信時の処理を示すフローチャート
【図６】本実施形態における情報処理装置が行うキャッシュ情報が有効か無効かを判断する処理を示すフローチャート
【図７】本実施形態における情報処理装置が行うキャッシュ情報読み込み処理を示すフローチャート
【図８】本実施形態における情報処理装置が行うジョブ保持処理を実行するか否かを判断する処理を示すフローチャート
【図９】本実施形態における情報処理装置が行うジョブ保持処理を示すフローチャート
【図１０】本実施形態における情報処理装置が扱う能力情報の記載例
【発明を実施するための形態】
【００１２】
以下に図面を参照して、本発明の好適な実施形態を例示的に説明する。ただし、本発明については、その趣旨を逸脱しない範囲で、当業者の通常の知識に基づいて、以下に記載する実施形態に対して適宜変更、改良が加えられたものについても本発明の範囲に入ることが理解されるべきである。
【００１３】
（第１実施形態）
本発明を適用した情報処理装置及び、本発明を適用した情報処理装置と接続する外部装置について説明する。本実施形態においては、情報処理装置として、パーソナルコンピュータ（以下、ＰＣという。）を例示している。なお、情報処理装置は、ＰＣのみならず、画像処理装置、携帯端末、スマートフォン、ノートＰＣ、タブレット端末、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、デジタルカメラなど種々のものを適用可能である。また、本発明を適用した情報処理装置と接続する外部装置として、情報処理装置と通信可能なインクジェット方式のプリンタを例示している。なお、他にも外部装置として、インクジェット方式のプリンタ以外の画像処理装置、ＰＣ、携帯端末、スマートフォン、タブレット端末、ＰＤＡ、デジタルカメラ、テレビ、スキャナ等を利用可能である。また、インクジェット方式のプリンタ以外の画像処理装置は、例えば、フルカラーレーザービームプリンタ、モノクロプリンタ、複写機やファクシミリ装置等の装置である。さらに、それらの装置は、マルチファンクションであってもシングルファンクションであっても良い。
【００１４】
本実施形態における情報処理装置と、本実施形態における外部装置とによって構成された通信システムの構成について図１のブロック図を参照して説明する。また、本実施形態では以下の構成を例に記載するが、本実施形態は外部装置と通信を行うことが可能な情報処理装置に関して適用可能なものであり、特にこの図のとおりに機能を限定するものではない。
【００１５】
ＰＣ１１０は、本実施形態における情報処理装置である。ＰＣ１１０は、入力Ｉ／Ｆ１１１、ＣＰＵ１１２、ＲＯＭ１１３、出力Ｉ／Ｆ１１４、外部記憶装置１１５、ＲＡＭ１１６、入力装置１１７、出力装置１１８、入出力Ｉ／Ｆ１１９を有する。
【００１６】
ＣＰＵ１１２は、システム制御部であり、ＰＣ１１０の全体を制御する。
【００１７】
ＲＯＭ１１３は、ＣＰＵ１１２が実行する制御プログラムやデータテーブル等の固定データを格納する。
【００１８】
外部記憶装置１１５は、オペレーティングシステム（以下、ＯＳという。）やプリンタドライバ、その他各種のデータやソフトウェアを格納する。なお、本実施形態においては、例としてＯＳにＷｉｎｄｏｗｓ（登録商標）を使用しているものとする。
【００１９】
ＲＡＭ１１６は、バックアップ電源を必要とするＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等で構成され、図示しないデータバックアップ用の１次電池によってデータが保持されている。なお、ＲＡＭ１１６は、データが消去されては困るプログラム制御変数等を格納する。また、ＲＡＭ１１６は、ＲＯＭ１１３や外部記憶装置１１５に保存される各種プログラムによってワークメモリーとして使用される。
【００２０】
入力装置１１７は、ユーザからの操作を受け付ける操作部に該当し、数値入力キー、モード設定キー、決定キー、取り消しキー、電源キー等のキー等から構成される。なお、入力装置１１７は、入力Ｉ／Ｆ１１１に接続されている。入力Ｉ／Ｆ１１１は、入力装置１１７を介してユーザからのデータ入力や動作指示を受け付けるためのインタフェースである。出力装置１１８は、データやＰＣ１１０の状態を表示する表示部に該当し、ＬＥＤ（発光ダイオード）やＬＣＤ（液晶ディスプレイ）などから構成される。なお、出力装置１１８は、出力Ｉ／Ｆ１１４に接続されている。出力Ｉ／Ｆ１１４は、出力装置１１８がデータ表示やＰＣ１１０の状態の通知を行うための制御を行うインタフェースである。なお、情報の表示と操作の受付を同一部材で行うことで、入力装置１１７及び出力装置１１８を同一の構成としても良い。
【００２１】
入出力Ｉ／Ｆ１１９は、接続インタフェース１３０を介して入出力Ｉ／Ｆ１２５と接続する。入出力Ｉ／Ｆ１１９と入出力Ｉ／Ｆ１２５とが接続することで、ＰＣ１１０とプリンタ１２０は相互に通信可能となる。なお、入出力Ｉ／Ｆ１１９は、本実施形態におけるポートに対応する。ポートとは、ポート同士を接続インタフェース１３０を介して接続することで、ポートを備える装置同士を通信可能にするためのものである。ポートの種類として、例えば、ネットワークを介した接続を行うためのネットワークポートや、プリンタとＵＳＢによる接続を行うためのＵＳＢポートがある。なお、ネットワークを介した接続において、ネットワークポートは、無線接続でダイレクトに接続しても良いし、有線ネットワーク上に設置したアクセスポイントを介して接続しても良い。また、ネットワークを介した接続は、例えば、有線ＬＡＮ又はＷｉｒｅｌｅｓｓ  ＬＡＮによって行われる。また、接続のための通信方式としては、例えば、Ｗｉ−Ｆｉ（ＷｉｒｅｌｅｓｓＦｉｄｅｌｉｔｙ）やＢｌｕｅｔｏｏｔｈ（登録商標）や、ＮＦＣ（Ｎｅａｒ  Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ；ＩＳＯ／ＩＥＣ  ＩＳ  １８０９２）等が挙げられる。なお、ネットワークポートは、それぞれの通信方式、接続方式に応じて、個別に用意されていても良い。なお、本実施形態においては、ＰＣ１１０は、ポート１を用いてプリンタ１２０と接続しているものとする。
【００２２】
接続インタフェース１３０は、例えば、ＵＳＢ、ＬＡＮ等であるが、これらに限定されない。なお、通信は無線通信でダイレクトに通信しても良いし、有線ネットワーク上に設置したアクセスポイントを介して通信しても良い。通信方式としては、例えば、Ｗｉ−Ｆｉ（ＷｉｒｅｌｅｓｓＦｉｄｅｌｉｔｙ）やＢｌｕｅｔｏｏｔｈ（登録商標）や、ＮＦＣ（Ｎｅａｒ  Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ；ＩＳＯ／ＩＥＣ  ＩＳ  １８０９２）等が挙げられる。
【００２３】
プリンタ１２０は、本実施形態における外部装置である。プリンタ１２０は、ＲＡＭ１２１、ＲＯＭ１２２、プリントエンジン１２３、ＣＰＵ１２４、入出力Ｉ／Ｆ１２５を有する。
【００２４】
ＣＰＵ１２４は、システム制御部であり、プリンタ１２０の全体を制御する。
【００２５】
ＲＯＭ１２２は、ＣＰＵ１２４が実行する制御プログラムやデータテーブル等の固定データを格納する。
【００２６】
ＲＡＭ１２１は、バックアップ電源を必要とするＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等で構成され、図示しないデータバックアップ用の１次電池によってデータが保持されている。なお、ＲＡＭ１２１は、データが消去されては困るプログラム制御変数等を格納する。また、ＲＡＭ１２１は、ＣＰＵ１２４のワークメモリーとして使用され、受信したデータの一時保存用バッファとしても利用される。
【００２７】
プリントエンジン１２３は、ＲＡＭ１２１に保存されたデータ及び、ＰＣ１１０から受信した印刷ジョブに基づいて、インク等の記録剤を用いて紙等の記録媒体上に画像を形成し、印刷結果を出力する。
【００２８】
入出力Ｉ／Ｆ１２５は、接続インタフェース１３０を介して入出力Ｉ／Ｆ１１９と接続する。
【００２９】
外部記憶装置１１５に格納されているソフトウェアの構成について、図２のブロック図を参照して説明する。図２に示す構成のうち、構成２０２、２０４乃至２０６がＯＳのモジュール、構成２０３、２０７及び２０８がプリンタドライバのモジュールとしているが、それぞれの構成は、ＯＳとプリンタドライバのうちいずれのモジュールであってもいい。それぞれの構成が実行する処理は、ＣＰＵ１１２が、それぞれの構成に対応するプログラムを外部記憶装置１１５から読みだしてＲＡＭ１１６にロードし、そのプログラムを実行することにより実現されるものとする。アプリケーション２０１は、外部記憶装置１１５に保存されており、印刷する有償コンテンツ等の画像情報や文字情報を含む描画情報、用紙サイズやレイアウト等の印刷設定情報等を含む印刷データを作成する。アプリケーション２０１が作成した印刷データは、ＯＳの印刷サポート機能２０２を介しＵＩモジュール２０３から返却される印刷設定情報が付加され、スプールデータ２０６としてスプーラ２０４のジョブキュー２０５に一時的に保存される。スプーラ２０４は、ジョブ管理機能を有し、渡されたスプールデータ２０６を、スプールデータ２０６に応じた印刷ジョブの送信が完了したと認識するまで保持し管理する。具体的には、スプーラ２０４は、例えば、プリンタ毎に、印刷ジョブのサイズ、ジョブ名等を管理し、管理している情報をステータス表示アプリケーションに伝達することで、当該情報を出力装置１１８等に表示する。また、紙ジャムなどのエラー発生時に備え、印刷データを含むジョブそのものをジョブ終了まで保持するようにしても良い。なお、ジョブキュー２０５に保存されているスプールデータ２０６の情報は、例えば、グラフィックスドライバ２０７やＵＩモジュール２０３、アプリケーション２０１などを介して所定のインタフェース関数を用いて参照することできる。スプールデータ２０６は、グラフィックスドライバ２０７により、プリンタ１２０が解釈可能な印刷コマンドへ変換され、印刷ジョブが生成される。生成された印刷ジョブはスプーラ２０４からランゲージモニタ２０８へ送信される。ランゲージモニタ２０８は、印刷ジョブを特定サイズのパケットに区切り、入出力Ｉ／Ｆ１１９及び入出力Ｉ／Ｆ１２５を介して、プリンタ１２０に逐一送信する。なお、このとき、一回に送信するデータの大きさは、スプーラ２０４によって指示される。なお、スプーラ２０４は、当該指示を、アプリケーション２０１やＵＩモジュール２０３によって指示されることで実行する。また、ランゲージモニタ２０８の機能として、プリンタ１２０又はプリンタ１２０に投入されたジョブの状態の情報を取得する機能がある。なお、ジョブとは、例えば、印刷ジョブやスキャンジョブ、メンテナンスジョブ等である。ＰＣ１１０は、プリンタ１２０にジョブを送信することで、ジョブに応じた印刷やスキャン、メンテナンス等の処理を実行させる。
【００３０】
図３は、本実施形態におけるポート初期化処理を示すフローチャートである。ポート初期化処理とは、ＰＣ１１０が、ＰＣ１１０が備えるポートに接続されているプリンタの能力情報及びＤｅｖｉｃｅ  ＩＤを取得し、取得した情報を、初期化を行うポートに対応付けて記憶する処理である。
【００３１】
能力情報とは、プリンタの設定状況やケーパブリティを示す情報である。能力情報は、例えば、プリンタのシリアル番号等のプリンタに関する静的な情報や、プリンタの設定情報、プリンタがサポートしている機能の情報等で構成され、図１０のようなＸＭＬデータによって記載される。図１０のＸＭＬデータにおいて、ｓｔａｔｕｓタグは、問い合わせに対する応答結果を返しており、この例では問い合わせが成功したことを表している。また、ｄｅｖｉｃｅタグは、プリンタの基本情報を表しており、例えばｍｏｄｅｌタグはプリンタの機種名を、ｓｅｒｉａｌ  ｎｕｍｂｅｒタグはプリンタの識別番号を表している。さらに、ｓｉｌｅｎｔｍｏｄｅタグがプリンタがサイレントモードをサポートしているか否かを、ｑｕｅｕｅタグが、プリンタがジョブキューを備えているか否かを表している。ジョブキューとは、ジョブをキューイングして保持するための構成であり、ジョブキューを備えているプリンタは、受信したジョブをジョブキューにキューイングし、キューイングした順番にジョブを処理することができる。さらに、ｐｒｉｎｔｑｕａｌｉｔｙタグが、プリンタがサポートしている印刷の品位レベルを、ｐａｐｅｒｓｉｚｅタグが、プリンタがサポートしている記録媒体のサイズを表している。さらに、ｏｐｔｉｏｎｈｄｄタグが、オプションをサポートしているか否かを表している。オプションとは、プリンタ１２０に着脱できる装置のことであり、プリンタ１２０に装着することで、当該オプション装置に対応した機能をプリンタ１２０に付加させたり、従来の機能を拡張することができる。プリンタ１２０のオプションとして、例えば、増設メモリや給紙ユニット、Ｂｌｕｅｔｏｏｔｈ（登録商標）ユニット等がある。また、プリンタ１２０に付加／拡張可能な機能として、例えば、保持可能な記録媒体の種類や枚数、Ｂｌｕｅｔｏｏｔｈ（登録商標）通信、ジョブのキューイング機能等がある。
【００３２】
なお、能力情報には、この他にも、カラー印刷やモノクロ印刷、両面印刷、フチ無し印刷、スキャン機能等に対応しているか否かの情報や、プリンタが対応している印刷データ形式の情報等を表しても良い。また、ＸＭＬ以外の記載方式によってこれらの情報を表しても良い。
【００３３】
また、Ｄｅｖｉｃｅ  ＩＤとは、プリンタを識別するためのプリンタ固有の情報であり、例えば、シリアルナンバー等である。
【００３４】
ポート初期化処理は、例えば、ＯＳが起動した場合や、プリンタドライバがインストールされた場合、ＰＣ１１０に接続されているプリンタが繋ぎ直された場合等に実行される。他にも、プリンタに対してジョブが送信される場合、プリンタドライバのＵＩが開かれた場合、アプリケーション２０１からプリンタの能力情報の取得要求が行われた場合等に実行される。ポート初期化処理を行うポートは、ポート初期化処理の実行要因によって決まる。例えば、ＯＳが起動した場合にポート初期化処理が実行される場合は、ポート初期化処理は、プリンタが接続されている全てのポートに対して実行される。また、ＰＣ１１０に接続されているプリンタが繋ぎ直された場合やプリンタに対してジョブが送信される場合にポート初期化処理が実行される場合は、ポート初期化処理は、処理対象のプリンタが接続されているポートに対して実行される。
【００３５】
以下の説明において、ランゲージモニタ２０８が行う処理は、実際には、ＣＰＵ１１２が、外部記憶装置１１５に格納されているランゲージモニタ２０８に対応するプログラムを実行することにより実現されるものとする。また、以下の説明においては、ポート初期化処理はポート１に対して行われるものとする。
【００３６】
まず、Ｓ３０１にて、ランゲージモニタ２０８は、ポート１に接続されているプリンタ（プリンタ１２０）の能力情報の取得処理を実行する。Ｓ３０１の処理の詳細は、図４を用いて後述する。
【００３７】
続いて、Ｓ３０２にて、ランゲージモニタ２０８は、プリンタ１２０のＤｅｖｉｃｅ  ＩＤを取得し、Ｓ３０１で取得した能力情報とポート１とに対応付けて、外部記憶装置１１５に不揮発に保存する。なお、Ｄｅｖｉｃｅ  ＩＤは、例えば、ランゲージモニタ２０８がＤｅｖｉｃｅ  ＩＤを取得するためのコマンドをプリンタ１２０に送信することで、取得することができる。
【００３８】
次に、図４を用いて能力情報の取得処理の詳細を説明する。図４は、能力情報の取得処理の詳細を示すフローチャートである。以下の説明において、ランゲージモニタ２０８が行う処理は、実際には、ＣＰＵ１１２が、外部記憶装置１１５に格納されているランゲージモニタ２０８に対応するプログラムを実行することにより実現されるものとする。なお、能力情報の取得処理の対象となるプリンタは、能力情報の取得処理の実行要因によって決まる。ポート初期化処理の際に実行される場合は、能力情報の取得処理は、初期化対象のポートに接続されているプリンタに対して実行される。後述するようなジョブの送信時に実行される場合は、能力情報の取得処理は、ジョブの送信先のプリンタに対して実行される。また、以下の説明においては、能力情報の取得処理はプリンタ１２０に対して実行されるものとする。
【００３９】
まず、Ｓ４０１にて、ランゲージモニタ２０８は、プリンタ１２０の能力情報を取得する。本実施形態では、ランゲージモニタ２０８は、能力情報取得プロトコルに従ったＸＭＬデータを含むユニキャストをプリンタ１２０に対して送信し、その後ＴＣＰ通信を介してＸＭＬデータを送受信することで、プリンタ１２０の能力情報を取得するものとする。なお、このとき、ランゲージモニタ２０８は、プリンタ１２０の能力情報を読み込みも行っている。
【００４０】
続いて、Ｓ４０２にて、ランゲージモニタ２０８は、Ｓ４０１の処理が成功し、能力情報が取得できたか否かを判定する。能力情報が取得できたと判定した場合には、ランゲージモニタ２０８は、Ｓ４０３にて、取得した能力情報をキャッシュ情報として、プリンタ１２０が接続しているポート（ポート１）と対応付けて外部記憶装置１１５に不揮発に保存し、その後処理を終了する。一方、データ通信に失敗した場合等、能力情報が取得できなかったと判定した場合には、ランゲージモニタ２０８は、Ｓ４０４にて、ポート１に対応付けられて保存されているキャッシュ情報からプリンタ１２０の能力情報を読み込む。その後、ランゲージモニタ２０８は処理を終了する。なお、このとき、ランゲージモニタ２０８は、キャッシュ情報の読み込みに失敗した場合も、キャッシュ情報の読み込みに失敗した状態で処理を終了する。
【００４１】
図５は、ジョブの送信時の処理を示すフローチャートである。以下の説明において、ランゲージモニタ２０８が行う処理は、実際には、ＣＰＵ１１２が、外部記憶装置１１５に格納されているランゲージモニタ２０８に対応するプログラムを実行することにより実現されるものとする。また、以下の説明においては、図５のフローチャートが示す処理は、ジョブをプリンタ１２０に送信する際に行われるものとする。
【００４２】
まず、Ｓ５０１にて、ランゲージモニタ２０８は、プリンタ１２０のＤｅｖｉｃｅ  ＩＤを取得し、プリンタ１２０のＤｅｖｉｃｅ  ＩＤをプリンタ１２０が接続しているポート（ポート１）と対応付けて外部記憶装置１１５に不揮発に保存する。なお、このとき、ポート１と対応付けて前回保存したＤｅｖｉｃｅ  ＩＤは、Ｓ５０２の処理において利用するため、削除せずに保存しておく。
【００４３】
続いて、Ｓ５０２にて、ランゲージモニタ２０８は、ポート１と対応付けて外部記憶装置１１５に不揮発に保存してある能力情報のキャッシュ情報が有効か無効かを判断する処理を実行する。キャッシュ情報が有効か無効かを判断する処理の詳細は、図６を用いて後述する。
【００４４】
続いて、Ｓ５０３では、ランゲージモニタ２０８は、Ｓ５０１の処理の結果、キャッシュ情報が有効と判断されたか否かを判定する。Ｓ５０１において、キャッシュ情報が無効と判断された場合には、ランゲージモニタ２０８は、キャッシュ情報を参照すべきではないので、Ｓ５０４にてキャッシュ情報を削除し、Ｓ５０５にてプリンタ１２０の能力情報の取得処理を実行する。Ｓ５０５の能力情報の取得処理は、図４のフローチャートに示す処理と同様であるので説明を省略する。Ｓ５０１において、キャッシュ情報が有効と判断された場合には、ランゲージモニタ２０８は、Ｓ５０９にて、プリンタ１２０の能力情報が読み込まれているか否かを判定する。例えば、ポート１のポート初期化処理等の際に、プリンタ１２０の能力情報をすでに読み込んでいる場合には、ランゲージモニタ２０８は、プリンタ１２０の能力情報が読み込まれていると判定し、Ｓ５０６の処理を行う。一方、ポート１のポート初期化処理等の際に、プリンタ１２０の能力情報の読み込みに失敗している場合は、プリンタ１２０の能力情報が読み込まれていないと判定し、Ｓ５１０のキャッシュ情報読み込み処理を実行する。キャッシュ情報読み込み処理の詳細は、図７を用いて後述する。
【００４５】
続いて、Ｓ５０６では、ランゲージモニタ２０８は、ジョブ保持処理を実行するか否かを判断する処理を実行する。ジョブ保持処理とは、実際にはジョブの送信が完了していても、スプーラ２０４に対しては、ジョブの送信が完了していないと通知することで、ジョブをジョブキュー２０５に残す処理をいう。ジョブ保持処理を実行することで、ランゲージモニタ２０８は、ランゲージモニタ２０８の機能によってプリンタ１２０がジョブの処理を完了するまで、当該ジョブの状態を監視することができる。具体的には、ランゲージモニタ２０８は、ジョブの状態として、ジョブ処理におけるエラーの有無やジョブの処理が完了したか否かを監視することができる。なお、ジョブ保持処理を実行するか否かを判断する処理の詳細は、図８を用いて後述する。
【００４６】
続いて、Ｓ５０７では、ランゲージモニタ２０８は、Ｓ５０６における処理の結果に応じて、ジョブの送信及びジョブ保持処理を行う。ジョブの送信及びジョブ保持処理の詳細は、図９を用いて後述する。
【００４７】
続いて、Ｓ５０８では、ランゲージモニタ２０８は、プリンタ１２０のＤｅｖｉｃｅ  ＩＤをプリンタ１２０が接続しているポートと対応付けて外部記憶装置１１５に不揮発に保存し、処理を終了する。
【００４８】
また、近年、オプションを脱着させることにより、ケーパビリティを任意にカスタマイズできるプリンタが知られている。このようなオプションをサポートしているプリンタの能力情報は、オプションの脱着によって変化することがある。そのため、現在接続しているプリンタがオプションをサポートしているプリンタである場合、キャッシュ情報として保存した能力情報と、プリンタの現在の能力情報とが乖離している可能性があり、ランゲージモニタ２０８は、キャッシュ情報を利用すべきでない。
【００４９】
また、ＰＣ１１０に接続されているプリンタが入れ替わった際には、当該プリンタが接続していたポートに対応付けて保存されていた能力情報は、新たに接続したプリンタの能力情報に更新される必要がある。しかし、所定の接続方式によって外部装置と接続するポートは、接続するプリンタが入れ替わったことを検知できない。そのようなポートは、接続するプリンタが入れ替わった場合でも、ポート初期化処理が実行されず、そのポートに対応付けられた能力情報が更新されない。そのため、現在接続しているプリンタが、接続するプリンタが入れ替わったことを検知できないポートに接続しているプリンタである場合、事前にキャッシュ情報として保存した能力情報と、プリンタの現在の能力情報とが乖離している可能性がある。そのため、ランゲージモニタ２０８は、キャッシュ情報を利用すべきでない。そこで、本実施形態では、能力情報のキャッシュ情報を利用する処理を行う場合は、まず、キャッシュ情報が有効か無効かを判断する処理を実行し、無効と判断した場合に、再度能力情報の取得処理を実行する。
【００５０】
図６を用いて、キャッシュ情報が有効か無効かを判断する処理の詳細を説明する。以下の説明において、ランゲージモニタ２０８が行う処理は、実際には、ＣＰＵ１１２が、外部記憶装置１１５に格納されているランゲージモニタ２０８に対応するプログラムを実行することにより実現されるものとする。また、以下の説明においては、図６のフローチャートが示す処理は、ジョブをプリンタ１２０に送信する際に行われるものとする。
【００５１】
まず、Ｓ６０１では、ランゲージモニタ２０８は、保存されている能力情報のキャッシュ情報から、プリンタ１２０がオプションをサポートしているか否かを判定する。Ｓ６０１にて、オプションをサポートしていると判定した場合には、当該判定に用いた能力情報がプリンタ１２０の能力情報であってもキャッシュ情報を利用すべきでないため、ランゲージモニタ２０８は、Ｓ６０６にてキャッシュ情報は無効と判断する。また、Ｓ６０１にて、オプションをサポートしていないと判定した場合には、ランゲージモニタ２０８は、Ｓ６０２の処理を行う。
【００５２】
Ｓ６０２では、ランゲージモニタ２０８は、プリンタ１２０が、プリンタの接続時にポート初期化処理が実行されるポートに接続されているか否かを判定する。前述したように、ポートの種類によっては、接続するプリンタが入れ替わったことを検知できないものがある。そのようなポートは、接続するプリンタが入れ替わった場合でも、ポート初期化処理が実行されず、そのポートに対応付けられた能力情報が更新されない。接続するプリンタが入れ替わったことを検知でき、プリンタの接続時にポート初期化処理が起動されるポートは、例えば、ＵＳＢポートである。一方、接続するプリンタが入れ替わったことを検知できず、プリンタの接続時にポート初期化処理が起動されないポートは、例えば、ネットワークポートである。プリンタ１２０が、プリンタの接続時にポート初期化処理が起動されるポートに接続している場合には、当該プリンタが接続した時にポート初期化処理が行われ、キャッシュ情報の更新が行われている。さらに、Ｓ６０１の判定によって、ポート初期化処理が行われた後に、オプションの着脱によってプリンタの能力情報が変化することがないことも確認されている。よって、ランゲージモニタ２０８は、Ｓ６０１にて、ポート初期化処理が実行されるポートに接続されていると判定した場合には、Ｓ６０５にて、キャッシュ情報は有効と判断する。一方、ランゲージモニタ２０８は、Ｓ６０１にて、ポート初期化処理が実行されるポートに接続されていないと判定した場合には、Ｓ６０３の処理を行う。なお、Ｓ６０１における判定は、例えば、ポート名やポートモニタのモジュール名から、プリンタ１２０が接続しているポートの種別を識別した後、プリンタ１２０が接続しているポート（ポート１）がＵＳＢポートか否かを判定することによって行われる。または、キャッシュ情報がいずれのポートに対応付けられて保存されているかを識別し、そのポートがＵＳＢポートか否かを判定することによって行われても良い。
【００５３】
プリンタ１２０が、プリンタの接続時にポート初期化処理が実行されるポートに接続されていない場合は、プリンタの入れ替えが行われたにもかかわらず、キャッシュ情報として保存している能力情報の更新が行われていない可能性がある。そこで、Ｓ６０３では、ランゲージモニタ２０８は、プリンタ１２０と、キャッシュ情報として保存している能力情報の提供元であるプリンタが同一か否かを判定する。プリンタが同一でないと判定した場合、キャッシュ情報として保存している能力情報の更新が行われていないことから新たに能力情報を取得する必要があるため、ランゲージモニタ２０８は、Ｓ６０４にて、キャッシュ情報は無効と判断する。一方、プリンタが同一であると判定した場合、ランゲージモニタ２０８は、Ｓ６０５にて、キャッシュ情報は有効と判定する。この判定は、例えば、ランゲージモニタ２０８が、Ｓ５０１にて直前に取得したＤｅｖｉｃｅ  ＩＤと、Ｓ５０１にて取得する前に保存していたＤｅｖｉｃｅ  ＩＤとを比較することで行われる。Ｓ５０１にて直前に取得したＤｅｖｉｃｅ  ＩＤは、プリンタ１２０のＤｅｖｉｃｅ  ＩＤに対応する。また、Ｓ５０１にて取得する前に保存していたＤｅｖｉｃｅ  ＩＤは、キャッシュ情報として保存している能力情報の提供元であるプリンタのＤｅｖｉｃｅ  ＩＤに対応する。なお、この判定は、ランゲージモニタ２０８が、プリンタのシリアルナンバー等、プリンタを一意に示す識別情報や、プリンタの機種名で比較することによって行われても良い。また、シリアルナンバーや機種名の等の情報は、Ｄｅｖｉｃｅ  ＩＤに含まれる情報であっても良い。
【００５４】
なお、Ｓ６０３の処理を行わない構成としても良い。この場合、キャッシュ情報が有効か無効かの判断の精度は下がるが、Ｓ５０１の処理を実行する必要がなくなり、ＰＣ１１０の負荷を減らすことができる。
【００５５】
本実施形態では、ランゲージモニタ２０８は、ジョブの送信先のプリンタの能力情報が変化するか否かを判定することで、キャッシュ情報が有効か無効かを判断する。さらに、本実施形態では、ランゲージモニタ２０８は、ジョブの送信先のプリンタとキャッシュ情報として保存している能力情報の提供元であるプリンタが同一か否かを判定することで、キャッシュ情報が有効か無効かを判断する。このような形態とすることで、ランゲージモニタ２０８は、現在の情報と乖離した無効な情報を利用してしまうことを回避することができる。さらに、本実施形態では、Ｓ５０４及びＳ５０５に示したように、図６のフローチャートが示す処理においてキャッシュ情報が無効と判断された場合は、能力情報の取得処理を実行する。このような形態とすることで、キャッシュ情報が無効であった場合にも、有効な情報を再度取得することができる。さらに、本実施形態では、図６のフローチャートが示す処理においてキャッシュ情報が有効と判断された場合は、能力情報の取得処理を実行しない。能力情報の取得処理は、ＰＣ１１０及び能力情報を提供するプリンタの双方にとって負荷がかかる。しかし、このように、キャッシュ情報が有効であり能力情報の取得処理が必要ない場合には能力情報の取得処理を実行しない形態とすることで、本実施形態では、ＰＣ１１０及びプリンタの負荷を軽減することができる。
【００５６】
なお、キャッシュ情報が有効か無効かを判断する処理は、ジョブを送信する情報処理装置だけでなく、接続している外部装置に関するキャッシュ情報を利用する種々の処理を実行する情報処理装置に適用することが可能である。キャッシュ情報を利用する処理として、例えば、情報処理装置に接続している外部装置の状態をユーザに通知する処理等が挙げられる。
【００５７】
図７を用いて、キャッシュ情報読み込み処理の詳細を説明する。以下の説明において、ランゲージモニタ２０８が行う処理は、実際には、ＣＰＵ１１２が、外部記憶装置１１５に格納されているランゲージモニタ２０８に対応するプログラムを実行することにより実現されるものとする。また、以下の説明においては、図７のフローチャートが示す処理は、ジョブがプリンタ１２０に送信される際に行われるものとする。
【００５８】
まず、Ｓ７０１では、ランゲージモニタ２０８は、能力情報の取得処理において保存した、プリンタ１２０に接続されているポート（ポート１）に対応付けられて保存されているキャッシュ情報を読み込む。なお、このとき、キャッシュ情報がユーザにより意図的に削除された場合や、外部記憶装置１１５の空き容量不足などで一度もキャッシュ情報の生成に成功していない場合等、キャッシュ情報の読み込みに失敗する場合がある。そこで、ランゲージモニタ２０８は、Ｓ７０２にて、キャッシュ情報の読み込みに成功したか否かを判定する。キャッシュ情報の読み込みに成功した場合には、ランゲージモニタ２０８は、キャッシュ情報読み込み処理を終了する。一方、キャッシュ情報の読み込みに成功しなかった場合には、ランゲージモニタ２０８は、Ｓ７０３にて、前述した方法と同様にしてプリンタ１２０から能力情報を取得する。その後、ランゲージモニタ２０８は、Ｓ７０４にて、取得した能力情報をキャッシュ情報としてポート１に対応付けて不揮発に保存する。
【００５９】
図８を用いて、ジョブ保持処理を実行するか否かを判断する処理の詳細を説明する。以下の説明において、ランゲージモニタ２０８が行う処理は、実際には、ＣＰＵ１１２が、外部記憶装置１１５に格納されているランゲージモニタ２０８に対応するプログラムを実行することにより実現されるものとする。また、以下の説明においては、図８のフローチャートが示す処理は、ジョブをプリンタ１２０に送信する際に行われるものとする。
【００６０】
ランゲージモニタ２０８は、プリンタ１２０と双方向通信できない場合、ジョブの状態を監視することができない。そのため、まず、ランゲージモニタ２０８は、Ｓ８０１にて、プリンタ１２０と双方向通信できるか否かを判定する。Ｓ８０１の判定は、例えば、ランゲージモニタ２０８が、プリンタドライバの設定が片方向通信でプリンタ１２０と通信する設定になっていないか否かを判定することによって行われる。なお、Ｓ８０１の判定は、ランゲージモニタ２０８が、プリンタ１２０が接続しているポート（ポート１）が、ランゲージモニタ２０８がサポートしているポートであるか否かを判定することによって行われても良い。このとき、例えば、ランゲージモニタ２０８は、ポート１のポート名が、ランゲージモニタ２０８がサポートしているポートを示す所定の文字列を含むか否かを判定する。また、Ｓ８０１の判定は、ランゲージモニタ２０８が、期待する全ての情報をプリンタ１２０から取得できたか否かを判定することによって行われても良い。ランゲージモニタ２０８が期待する情報には、例えば、プリンタ１２０が備えるインクの残量情報や、仕向け情報などがある。ランゲージモニタ２０８は、双方向通信できると判定した場合、Ｓ８０２の処理を行い、双方向通信できないと判定した場合、Ｓ８０４にて、ジョブ保持処理を実行しないと判断する。
【００６１】
受信したジョブをジョブキューにキューイングし、キューイングした順番にジョブを処理するプリンタ（ジョブキューを備えているプリンタ）にジョブを送信する場合にジョブ保持処理が実行されると、ジョブの処理順番の追い越しが発生する可能性がある。このため、ランゲージモニタ２０８は、プリンタ１２０がジョブキューを備えている場合には、ジョブ保持処理を実行すべきでない。そこで、ランゲージモニタ２０８は、Ｓ８０２にて、Ｓ５０５又はＳ５１０にて読み込んだプリンタ１２０の能力情報を参照して、プリンタ１２０がジョブキューをサポート（ジョブをキューイングできる機能を保持）しているか否かを判定する。ランゲージモニタ２０８は、プリンタ１２０がキューを備えていると判定した場合には、Ｓ８０４にて、ジョブ保持処理を実行しないと判断する。一方、ランゲージモニタ２０８は、プリンタ１２０がキューを備えていないと判定した場合には、Ｓ８０３にて、ジョブ保持処理を実行すると判断する。なお、このとき、ネットワークトラブル等でプリンタ１２０から能力情報を取得できない場合や、能力情報にキューを備えているか否かの情報が含まれていない場合等、プリンタ１２０がキューを備えているか否かを判定できない場合がある。この場合には、ランゲージモニタ２０８は、Ｓ８０５にて、ジョブ保持処理を実行しないと判断する。
【００６２】
このように、本実施形態では、ランゲージモニタ２０８は、ジョブの送信先のプリンタがジョブキューを備えているか否かによってジョブ保持処理を実行するか否かを切り替える。さらに、本実施形態では、ランゲージモニタ２０８は、ジョブの送信先のプリンタがジョブキューを備えているか不明な場合は、ジョブ保持処理を実行しない。このような形態とすることで、ランゲージモニタ２０８は、ジョブキューを備えているプリンタにジョブを送信する場合にジョブ保持処理を実行した際に生じえる課題を回避することができ、適切な場合にジョブ保持処理を実行できる。なお、Ｓ５０２の処理を実行しない場合は、ジョブ保持処理を実行するか否かを判断する処理は、キャッシュ情報を参照することによって行われても良いし、直前に能力情報の取得処理を行い、取得した能力情報を参照することによって行われても良い。
【００６３】
図９を用いてジョブの送信の処理及びジョブ保持処理の詳細を説明する。以下の説明において、スプーラ２０４又はランゲージモニタ２０８が行う処理は、実際には、ＣＰＵ１１２が、外部記憶装置１１５に格納されているスプーラ２０４又はランゲージモニタ２０８に対応するプログラムを実行することにより実現されるものとする。また、以下の説明においては、図９のフローチャートが示す処理は、スプーラ２０４から、プリンタ１２０へのジョブの送信の開始の指示を表すコマンドが出力され、ランゲージモニタ２０８がその出力を受信した際に行われるものとする。なお、その後は、実際の印刷データやメンテナンスコマンドなどのデータがランゲージモニタ２０８に対して出力されることとなる。また、ランゲージモニタ２０８は、スプーラ２０４から指示されるサイズのデータを逐一送信することで、ジョブを分割しながらプリンタ１２０に送信する。
【００６４】
まず、ランゲージモニタ２０８は、Ｓ９０１にて、ジョブをプリンタ１２０に送信するための最後のデータ送信か否かを判定する。この処理は、ランゲージモニタ２０８が、スプーラ２０４から受信する、データ送信を指示するためのコマンドを解析することにより判別することができる。
【００６５】
最後のデータ送信でないと判定した場合は、まだジョブ保持処理を実行する必要はないため、ランゲージモニタ２０８は、Ｓ９０２にて、指示されたサイズのデータをプリンタ１２０に送信し、再びＳ９０１の処理を行う。
【００６６】
一方、Ｓ９０１〜Ｓ９０２の処理が繰り返されることにより、最後のデータ送信であると判定した場合は、ランゲージモニタ２０８は、Ｓ９０３にて、ジョブの全てのデータを送信したか否かを判定する。最初にＳ９０３の判定を行う場合においては、最後のデータ送信が完了していないので、ランゲージモニタ２０８は、Ｓ９０４にて、指示されたサイズのデータをプリンタ１２０に送信する。
【００６７】
その後、ランゲージモニタ２０８は、Ｓ９０５にて、Ｓ５０６の処理において、ジョブ保持処理を実行すると判断されたか否かを判定する。Ｓ５０６の処理において、ジョブ保持処理を実行すると判断されなかった場合、ランゲージモニタ２０８は、Ｓ９１０にて、ジョブの送信が完了したことをスプーラ２０４に通知する。スプーラ２０４は、ランゲージモニタ２０８から当該通知を受けることで、対象のジョブを管理外とする。具体的には、スプーラ２０４は、ジョブキュー２０５から対象とするジョブそのもの又はジョブの情報を削除／無効化する。一方、Ｓ５０６の処理において、ジョブ保持処理を実行すると判断された場合、ランゲージモニタ２０８は、Ｓ９０６にて、プリンタ１２０からジョブの状態の情報を取得する。その後、ランゲージモニタ２０８は、Ｓ９０７にて、Ｓ９０６にて取得した情報をステータス表示アプリケーションに伝達するべく、Ｓ９０６にて取得した情報を所定の記憶領域に書き込む。なお、ステータス表示アプリケーションは、印刷要求元のアプリケーション２０１であっても良いし、印刷要求元のアプリケーション２０１とは別のアプリケーションであっても良いし、ＵＩモジュール２０３であっても良い。ステータス表示アプリケーションは、Ｓ９０６にて取得した情報を表示することで、出力装置１１８等に表示し、ユーザにジョブの状態の情報を通知する。
【００６８】
続いて、ランゲージモニタ２０８は、Ｓ９０８にて、プリンタ１２０によってジョブの処理が完了したか否かを判定する。この判定は、例えば、プリンタ１２０から取得される、印刷中のデータのページ番号を示すステータスを取得することによって行われる。このステータスは、印刷を行っていない間は値を持たない（例えば零）ため、それによりジョブの処理が完了したか否かを判定することができる。ジョブの処理が完了していないと判定した場合、ランゲージモニタ２０８は、Ｓ９０９にて、ジョブの送信が完了していないことをスプーラ２０４に通知する。この処理は、例えば、ランゲージモニタ２０８がデータ送信を指示するためのコマンドに対する戻り値として、指定されたサイズ未満のバイトの値をスプーラ２０４に対して返すことで行われる。通常、ランゲージモニタ２０８は、戻り値としてプリンタ１２０へ送信した正確なバイト数を返す。このようにすることで、スプーラ２０４は、ジョブの送信が正しく行われたことを認識することができる。しかし、ここでは、ランゲージモニタ２０８は、戻り値として、指定されたサイズ未満のバイトの値をスプーラ２０４に対して返すことで、スプーラ２０４にジョブの送信が正しく行われなかったと認識させる。スプーラ２０４は、データの送信が完了していないと認識しているため、未出力バイトのデータの送信指示を再び出力してくる。しかし、ランゲージモニタ２０８は、既に全データを送信済みであるため、（Ｓ９０３でＹｅｓ）、実際のプリンタ１２０へのデータ送信は行わず、再びジョブの状態を取得する（Ｓ９０６）ことができる。このような形態とすることで、ランゲージモニタ２０８は、ジョブ保持処理を実行している間は、ユーザにジョブの状態の情報を通知することができる。
【００６９】
ランゲージモニタ２０８は、Ｓ９０１乃至Ｓ９０７の処理を繰り返し、プリンタ１２０がジョブの処理を完了したことに応じて（Ｓ９０８でＹＥＳ）、ジョブの送信が完了したことをスプーラ２０４に通知する。具体的には、ランゲージモニタ２０８は、スプーラ２０４への戻り値として、正確な値を返信する。このような形態とすることで、スプーラ２０４が管理しているジョブの送信の完了時間と、プリンタ１２０による実際のジョブの処理の完了時間をほぼ一致させることができ、ユーザにジョブの処理の完了時間を通知することができる。
【００７０】
以上で説明したように、本実施形態では、送信先のプリンタがジョブキューを備えているか否かに応じて、ジョブ保持処理を実行するか否かを切り替える。このような形態とすることで、ＰＣ１１０は、適切な場合にジョブ保持処理を実行することができ、ユーザの利便性を向上させることができる。
【００７１】
＜その他の実施形態＞
上述の実施形態では、図２に示されるような、ＰＣ１１０にインストールされる各ソフトウェアモジュールが協働した形態を説明してきたが、これを応用した形態も想定される。例えば、ランゲージモニタ２０８が別のＰＣにインストールされている形態であっても良い。この場合には、ランゲージモニタ２０８とスプーラ２０４とがプロセス間通信を行うことにより、上述の実施形態と同様の効果を得ることが出来る。
【００７２】
上述の実施形態では、ランゲージモニタ２０８や、スプーラ２０４の各々のソフトウェアモジュールを別々に示したが、例えば、１プロセスで実行される１ソフトウェアモジュールによっても、上述の実施形態と同様の効果を得ることが出来る。
【００７３】
上述の実施形態では、Ｖｅｒｓｉｏｎ３プリンタドライバを用いた形態を説明した。なお、近年、Ｗｉｎｄｏｗｓ（登録商標）８では、Ｖｅｒｓｉｏｎ４プリンタドライバと呼ばれる、Ｖｅｒｓｉｏｎ３プリンタドライバと異なるプリンタドライバ構成が採用された。新しいプリンタドライバを構成するモジュール群はランゲージモニタが含まれていない。そこで、Ｖｅｒｓｉｏｎ４プリンタドライバにおいては、フィルタと呼ばれる構成によってランゲージモニタと同様の機能を実現しても良い。
【００７４】
上述の実施形態のジョブ保持処理を実行するか否かの判断において、送信するジョブの種類を参照しても良い。例えば、プリンタ１２０の電源のＯＮ又はＯＦＦを指示する電源制御処理、動作音モード等のプリンタ１２０の動作モード設定処理等をプリンタ１２０に実行させるためのメンテナンスジョブを送信する場合は、ジョブ保持処理を実行しないように判断しても良い。
【００７５】
上述の実施形態の効果を実現できれば、上述の実施形態のフローチャートの処理の順番を入れ替えても良いし、その全ての処理を実行しなくても良いし、処理の内容を変更しても良い。例えば、ランゲージモニタ２０８は、Ｓ５０６の処理を実行せず、Ｓ９０５の処理においてＳ５０６と同様の処理を実行してもいい。
【００７６】
上述の実施形態は、上述の実施形態の１以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを実行する処理でも実現可能である。また、上述の実施形態は、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７７】
１１０  ＰＣ
１２０  プリンタ
２０４  スプーラ
２０８  ランゲージモニタ
【図１】
0006608175.tif 000002
【図２】
0006608175.tif 000003
【図３】
0006608175.tif 000004
【図４】
0006608175.tif 000005
【図５】
0006608175.tif 000006
【図６】
0006608175.tif 000007
【図７】
0006608175.tif 000008
【図８】
0006608175.tif 000009
【図９】
0006608175.tif 000010
【図１０】
0006608175.tif 000011