(57)【要約】【課題】通信装置からプリンタに送信される印刷実行コマンドの通信が妨げられるのを抑制する技術を提供すること。【解決手段】通信装置は、印刷スクリプトで記述された印刷実行コマンドが所定のメモリ領域に記憶されたことを検出することに応じて、印刷スクリプトによって記述された要求コマンドを所定のメモリ領域に記憶する。また、通信装置は、所定のメモリ領域内の印刷実行コマンドがプリンタに送信された後に、所定のメモリ領域内の要求コマンドがプリンタに送信されることに応じて、プリンタからプリンタの情報を受信し、プリンタの情報を外部装置に送信する。【選択図】図３
2019096156.tif 000002
【特許請求の範囲】
【請求項１】
第１の通信インターフェースと第２の通信インターフェースと所定のメモリ領域とを備える通信装置のためのコンピュータプログラムであって、
前記所定のメモリ領域は、印刷スクリプトで記述された各コマンドを記憶可能であり、前記各コマンドを記憶した順に、前記第１の通信インターフェースを介して前記各コマンドをプリンタに順次送信するために用いられるメモリ領域であり、
前記コンピュータプログラムは、前記通信装置のコンピュータを、
印刷の実行を前記プリンタに指示する印刷実行コマンドであって、前記印刷スクリプトで記述された前記印刷実行コマンドが前記所定のメモリ領域に記憶されたことを検出する検出部と、
前記印刷実行コマンドが前記所定のメモリ領域に記憶されたことが前記検出部により検出されることに応じて、前記通信装置への前記プリンタの情報の送信を前記プリンタに要求する要求コマンドであって、前記印刷スクリプトによって記述された前記要求コマンドを前記所定のメモリ領域に記憶する第１の記憶制御部と、
前記第１の通信インターフェースを介して前記所定のメモリ領域内の前記印刷実行コマンドが前記プリンタに送信された後に、前記第１の通信インターフェースを介して前記所定のメモリ領域内の前記要求コマンドが前記プリンタに送信されることに応じて、前記プリンタから前記第１の通信インターフェースを介して前記プリンタの前記情報を受信するプリンタ情報受信部と、
前記プリンタから前記プリンタの前記情報が受信された後に、前記第２の通信インターフェースを介して前記プリンタの前記情報を外部装置に送信するプリンタ情報送信部と、
として機能させる、コンピュータプログラム。
【請求項２】
前記検出部は、前記印刷実行コマンドが前記所定のメモリ領域に記憶されているのか否かを繰り返し判断することによって、前記印刷実行コマンドが前記所定のメモリ領域に記憶されたことを検出する、請求項１に記載のコンピュータプログラム。
【請求項３】
前記第１の記憶制御部は、
第１の前記印刷実行コマンドが前記所定のメモリ領域に記憶されたことが前記検出部により検出されることに応じて、前記第１の印刷実行コマンドが前記プリンタに送信された後に前記プリンタに送信されるべき第１の前記要求コマンドを前記所定のメモリ領域に記憶し、
前記第１の印刷実行コマンドと前記第１の要求コマンドとが前記所定のメモリ領域に記憶されている状態において、第２の前記印刷実行コマンドが前記所定のメモリ領域にさらに記憶されたことが前記検出部により検出されることに応じて、前記第２の印刷実行コマンドが前記プリンタに送信された後に前記プリンタに送信されるべき第２の前記要求コマンドを前記所定のメモリ領域にさらに記憶する、請求項１又は２に記載のコンピュータプログラム。
【請求項４】
前記第１の記憶制御部は、
第１の前記印刷実行コマンドが前記所定のメモリ領域に記憶されたことが前記検出部により検出されることに応じて、前記第１の印刷実行コマンドが前記プリンタに送信された後に前記プリンタに送信されるべき第１の前記要求コマンドを前記所定のメモリ領域に記憶し、
前記第１の印刷実行コマンドと前記第１の要求コマンドとが前記所定のメモリ領域に記憶されている状態において、第２の前記印刷実行コマンドが前記所定のメモリ領域にさらに記憶されたことが前記検出部により検出されることに応じて、前記所定のメモリ領域から前記第１の要求コマンドを削除し、
前記第２の前記印刷実行コマンドが前記所定のメモリ領域にさらに記憶されたことが前記検出部により検出されることに応じて、前記第２の印刷実行コマンドが前記プリンタに送信された後に前記プリンタに送信されるべき第２の前記要求コマンドを前記所定のメモリ領域にさらに記憶する、請求項１又は２に記載のコンピュータプログラム。
【請求項５】
前記第１の記憶制御部は、
前記印刷実行コマンドが前記所定のメモリ領域に記憶されたことが前記検出部により検出される場合に、前記印刷実行コマンドが前記プリンタに送信されるまで待機し、
前記印刷実行コマンドが前記プリンタに送信されたことに応じて、１個の前記印刷実行コマンドも前記所定のメモリ領域に記憶されていない状態になった後に、前記要求コマンドを前記所定のメモリ領域に記憶する、請求項１又は２に記載のコンピュータプログラム。
【請求項６】
前記コンピュータプログラムは、前記コンピュータを、さらに、
前記プリンタから前記第１の通信インターフェースを介してタイミング情報を受信するタイミング情報受信部であって、前記タイミング情報は、前記プリンタがクリーニング動作を実行するタイミングを示す情報である、前記タイミング情報受信部として機能させ、
前記第１の記憶制御部は、さらに、前記タイミング情報を利用して特定される特定タイミングであって、前記プリンタが前記クリーニング動作を完了した後の前記特定タイミングで、前記要求コマンドを前記所定のメモリ領域に記憶する、請求項１から５のいずれか一項に記載のコンピュータプログラム。
【請求項７】
前記コンピュータプログラムは、前記コンピュータを、さらに、
前記タイミング情報の送信を前記プリンタに要求する所定コマンドであって、前記印刷スクリプトで記述された前記所定コマンドを前記所定のメモリ領域に記憶する第２の記憶制御部として機能させ、
前記タイミング情報受信部は、前記第１の通信インターフェースを介して前記所定のメモリ領域内の前記所定コマンドが前記プリンタに送信されることに応じて、前記プリンタから前記第１の通信インターフェースを介して前記タイミング情報を受信する、請求項６に記載のコンピュータプログラム。
【請求項８】
前記第１の記憶制御部は、さらに、前記コンピュータプログラムが起動される際に、前記要求コマンドを前記所定のメモリ領域に記憶する、請求項１から７のいずれか一項に記載のコンピュータプログラム。
【請求項９】
前記コンピュータプログラムは、前記コンピュータを、さらに、
前記プリンタから前記プリンタの前記情報が受信される場合に、前記プリンタの前記情報を識別する情報識別子と、前記プリンタの前記情報と、を関連付けて、前記通信装置のデータベースに記憶する第３の記憶制御部と、
前記外部装置から前記第２の通信インターフェースを介して前記情報識別子を含む情報要求を受信する要求受信部と、として機能させ、
前記プリンタ情報送信部は、前記外部装置から前記情報要求が受信される場合に、前記データベースにおいて前記情報識別子に関連付けられている前記プリンタの前記情報を前記外部装置に送信する、請求項１から８のいずれか一項に記載のコンピュータプログラム。
【請求項１０】
前記情報要求は、ＳＮＭＰ（Simple Network Management Protocolの略）に従ったＧｅｔリクエストであり、
前記プリンタ情報送信部は、前記ＳＮＭＰに従ったＧｅｔレスポンスであって、前記プリンタの前記情報を含む前記Ｇｅｔレスポンスを送信し、
前記情報識別子は、前記ＳＮＭＰに従ったＯＩＤ（Object IDの略）である、請求項９に記載のコンピュータプログラム。
【請求項１１】
前記印刷スクリプトは、ＰＪＬ（Printer Job Languageの略）である、請求項１から１０のいずれか一項に記載のコンピュータプログラム。
【請求項１２】
前記第１の通信インターフェースは、第１種の通信規格に従った通信を実行するためのインターフェースであり、
前記第２の通信インターフェースは、前記第１種の通信規格とは異なる第２種の通信規格に従った通信を実行するためのインターフェースである、請求項１から１１のいずれか一項に記載のコンピュータプログラム。
【請求項１３】
前記第１種の通信規格は、ＵＳＢ（Universal Serial Busの略）であり、
前記第２種の通信規格は、ＩＰ（Internet Protocolの略）である、請求項１２に記載のコンピュータプログラム。
【請求項１４】
通信装置であって、
第１の通信インターフェースと、
第２の通信インターフェースと、
印刷スクリプトで記述された各コマンドを記憶可能な所定のメモリ領域であって、前記各コマンドを記憶した順に、前記第１の通信インターフェースを介して前記各コマンドをプリンタに順次送信するために用いられる前記所定のメモリ領域と、
印刷の実行を前記プリンタに指示する印刷実行コマンドであって、前記印刷スクリプトで記述された前記印刷実行コマンドが前記所定のメモリ領域に記憶されたことを検出する検出部と、
前記印刷実行コマンドが前記所定のメモリ領域に記憶されたことが前記検出部により検出されることに応じて、前記通信装置への前記プリンタの情報の送信を前記プリンタに要求する要求コマンドであって、前記印刷スクリプトによって記述された前記要求コマンドを前記所定のメモリ領域に記憶する第１の記憶制御部と、
前記第１の通信インターフェースを介して前記所定のメモリ領域内の前記印刷実行コマンドが前記プリンタに送信された後に、前記第１の通信インターフェースを介して前記所定のメモリ領域内の前記要求コマンドが前記プリンタに送信されることに応じて、前記プリンタから前記第１の通信インターフェースを介して前記プリンタの前記情報を受信するプリンタ情報受信部と、
前記プリンタから前記プリンタの前記情報が受信された後に、前記第２の通信インターフェースを介して前記プリンタの前記情報を外部装置に送信するプリンタ情報送信部と、
を備える、通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書では、プリンタから情報を受信して外部装置に送信する通信装置に関する技術を開示する。
【背景技術】
【０００２】
特許文献１には、ＳＮＭＰ（Simple Network Management Protocolの略）マネージャ機能を有するデータ処理装置（以下では「マネージャ装置」と呼ぶ）と、ＳＮＭＰエージェント機能を有するデータ処理装置（以下では「エージェント装置」と呼ぶ）と、エージェント装置に接続されているローカルプリンタと、を備える管理システムが開示されている。ローカルプリンタは、エージェント装置と通信可能であるが、マネージャ装置と通信不可能である。エージェント装置は、ローカルプリンタの状態が変化する場合に、ローカルプリンタから変化後の状態を示す情報を取得し、当該情報をマネージャ装置に送信する。これにより、マネージャ装置は、マネージャ装置と通信不可能であるローカルプリンタの状態を示す情報を管理することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−２９３３２４号公報
【特許文献２】特開２００４−０１３２８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記の管理システムでは、エージェント装置が印刷データをローカルプリンタに送信する通信を実行している間に、エージェント装置がローカルプリンタから情報を受信する通信が実行されると、印刷データの通信が妨げられる可能性がある。
【０００５】
本明細書では、通信装置からプリンタに送信される印刷実行コマンドの通信が妨げられるのを抑制する技術を開示する。
【課題を解決するための手段】
【０００６】
本明細書は、第１の通信インターフェースと第２通信のインターフェースと所定のメモリ領域とを備える通信装置のためのコンピュータプログラムを開示する。前記所定のメモリ領域は、印刷スクリプトで記述された各コマンドを記憶可能であり、前記各コマンドを記憶した順に、前記第１の通信インターフェースを介して前記各コマンドをプリンタに順次送信するために用いられるメモリ領域であり、前記コンピュータプログラムは、前記通信装置のコンピュータを、印刷の実行を前記プリンタに指示する印刷実行コマンドであって、前記印刷スクリプトで記述された前記印刷実行コマンドが前記所定のメモリ領域に記憶されたことを検出する検出部と、前記印刷実行コマンドが前記所定のメモリ領域に記憶されたことが前記検出部により検出されることに応じて、前記通信装置への前記プリンタの情報の送信を前記プリンタに要求する要求コマンドであって、前記印刷スクリプトによって記述された前記要求コマンドを前記所定のメモリ領域に記憶する第１の記憶制御部と、前記第１の通信インターフェースを介して前記所定のメモリ領域内の前記印刷実行コマンドが前記プリンタに送信された後に、前記第１の通信インターフェースを介して前記所定のメモリ領域内の前記要求コマンドが前記プリンタに送信されることに応じて、前記プリンタから前記第１の通信インターフェースを介して前記プリンタの前記情報を受信するプリンタ情報受信部と、前記プリンタから前記プリンタの前記情報が受信された後に、前記第２の通信インターフェースを介して前記プリンタの前記情報を外部装置に送信するプリンタ情報送信部と、として機能させてもよい。
【０００７】
上記の構成によると、通信装置は、印刷実行コマンドが所定のメモリ領域に記憶されたことが検出されることに応じて、印刷スクリプトによって記述された要求コマンドを所定のメモリ領域に記憶する。これにより、所定のメモリ領域内の印刷実行コマンドがプリンタに送信された後に、所定のメモリ領域内の要求コマンドがプリンタに送信される。従って、通信装置からプリンタに送信される印刷実行コマンドの通信が妨げられるのを抑制することができる。
【０００８】
上記の通信装置そのもの、及び、通信装置によって実行される方法も、新規で有用である。また、上記の通信装置と、他の装置（例えば外部装置、プリンタ）と、を備える通信システムも、新規で有用である。
【図面の簡単な説明】
【０００９】
【図１】通信システムの構成を示す。
【図２】ＭＩＢ値リストの一例を示す。
【図３】第１実施例の概略を説明するための説明図を示す。
【図４】ＰＪＬコマンド記憶処理のフローチャートを示す。
【図５】応答処理のフローチャートを示す。
【図６】各デバイスの具体的な処理のシーケンス図を示す。
【図７】図６の続きのシーケンス図を示す。
【図８】図７の続きのシーケンス図を示す。
【図９】クリーニング監視処理のフローチャートを示す。
【図１０】第３実施例のコマンド監視処理のフローチャートと、印刷スプーラ内のジョブが変化する様子と、を示す。
【図１１】第４実施例のコマンド監視処理のフローチャートと、印刷スプーラ内のジョブが変化する様子と、を示す。
【図１２】第５実施例を説明するための説明図を示す。
【発明を実施するための形態】
【００１０】
（第１実施例）
（通信システム２の構成；図１）
図１に示されるように、通信システム２は、ＰＣ（Personal Computerの略）１０と、複数個のプリンタ５０，７０と、管理装置６０と、を備える。ＰＣ１０と管理装置６０とプリンタ７０とはＬＡＮ４に接続されている。従って、各デバイス１０，６０，７０は、ＬＡＮ４を介して、相互に通信可能である。プリンタ５０は、ＬＡＮ４に接続されておらず、ＬＡＮ４を介して、各デバイス１０，６０，７０と通信することができない。プリンタ５０は、ＵＳＢ（Universal Serial Busの略）ケーブルを介して、ＰＣ１０に接続されている。従って、ＰＣ１０とプリンタ５０とは、ＵＳＢケーブルを介して、相互に通信可能である。
【００１１】
プリンタ５０は、ベンダＶ１によって提供されるプリンタであり、モデル名「Ｌ８９００ＣＤＷ」とシリアル番号「ＸＸＸ１２３４５６７８」とを有する。プリンタ５０は、ＵＳＢＩ／Ｆ（図示省略）を備えるが、ＬＡＮ４に接続するためのネットワークＩ／Ｆを備えない。このために、プリンタ５０の構成を簡易化することができる。一方、プリンタ７０は、ベンダＶ１とは異なるベンダＶ２によって提供されるプリンタであり、ＬＡＮ４に接続するためのネットワークＩ／Ｆ（図示省略）を備える。
【００１２】
管理装置６０は、ＰＣ、サーバ等のデバイスであり、各プリンタ５０，７０の情報（例えば、プリンタの現在の動作状態を示す情報）を管理する。具体的には、管理装置６０は、ＬＡＮ４を介して、ＳＮＭＰ（Simple Network Management Protocolの略）に従った通信をプリンタ７０と実行して、プリンタ７０から情報を受信して記憶する。即ち、管理装置６０がＳＮＭＰマネージャとして機能し、プリンタ７０がＳＮＭＰエージェントとして機能する。しかしながら、管理装置６０は、ＬＡＮ４を介してプリンタ５０と通信不可能であるので、プリンタ５０から情報を受信することができない。そこで、本実施例では、ＰＣ１０がプリンタ５０から情報を受信して記憶しておき、管理装置６０は、ＬＡＮ４を介して、ＳＮＭＰに従った通信をＰＣ１０と実行して、ＰＣ１０からプリンタ５０の情報を受信する。
【００１３】
例えば、管理装置６０が、ＳＮＭＰに従った通信ではなく、ベンダＶ１によって開発された独自プロトコルに従った通信をＰＣ１０と実行して、ＰＣ１０からプリンタ５０の情報を受信するという比較例の構成を想定する。この場合、ベンダＶ２によって提供されるプリンタ７０は、ベンダＶ１の独自プロトコルに従った通信を実行することができない。従って、管理装置６０は、独自プロトコルに従った通信をプリンタ７０と実行することができず、この結果、プリンタ７０から情報を受信することができない。これに対し、本実施例では、管理装置６０は、多くのプリンタが利用可能であるＳＮＭＰを利用するので、プリンタ７０から情報を適切に受信して管理することができる。
【００１４】
（ＰＣ１０の構成）
ＰＣ１０は、据置型のＰＣである。ＰＣ１０は、操作部１２と、表示部１４と、ＵＳＢインターフェース１６と、ネットワークインターフェース１８と、制御部３０と、を備える。各部１２〜３０は、バス線（符号省略）に接続されている。以下では、インターフェースのことを「Ｉ／Ｆ」と記載する。なお、変形例では、ＰＣ１０は、携帯電話（例えばスマートフォン）、ＰＤＡ、ノートＰＣ、タブレットＰＣ等の可搬型の端末装置であってもよい。
【００１５】
操作部１２は、複数のキーを備える。ユーザは、操作部１２を操作することによって、様々な指示をＰＣ１０に入力することができる。表示部１４は、様々な情報を表示するためのディスプレイである。ＵＳＢＩ／Ｆ１６には、ＵＳＢケーブルの一端が接続されている。ＵＳＢケーブルの他端は、プリンタ５０に接続されている。ネットワークＩ／Ｆ１８は、ＩＰ（Internet Protocolの略）に従った通信を実行するためのＩ／Ｆであり、ＬＡＮ４に接続されている。ＬＡＮ４は、有線ＬＡＮでもよいし、無線ＬＡＮでもよい。
【００１６】
制御部３０は、ＣＰＵ３２とメモリ３４とを備える。ＣＰＵ３２は、メモリ３４に格納されているプログラム３６，３８，４０に従って、様々な処理を実行する。メモリ３４は、揮発性メモリ、不揮発性メモリ等によって構成される。
【００１７】
ＯＳプログラム３６（以下では「ＯＳ３６」と呼ぶ）は、ＰＣ１０の基本的な動作を実現するためのプログラムであり、印刷スプーラ３７を含む。印刷スプーラ３７は、プリンタ５０が解釈可能な印刷スクリプトであるＰＪＬ（Printer Job Languageの略）によって記述された各コマンドを記憶可能であり、各コマンドを記憶した順に、ＵＳＢＩ／Ｆ１６を介して各コマンドをプリンタ５０に順次送信するために用いられる。
【００１８】
プリンタアプリケーション３８（以下では「アプリ３８」と呼ぶ）は、プリンタ５０のベンダによって提供される。アプリ３８は、例えば、プリンタ５０のベンダによって提供されるインターネット上のサーバからＰＣ１０にインストールされてもよいし、プリンタ５０と共に出荷されるメディアからＰＣ１０にインストールされてもよい。アプリ３８は、ＰＪＬによって記述されたコマンドを印刷スプーラ３７に記憶するためのアプリケーションである。当該コマンドは、ＰＣ１０へのプリンタ５０の情報の送信をプリンタ５０に要求するコマンドである。以下では、情報の送信をプリンタ５０に要求するコマンドのことを「ＰＪＬコマンド」と呼ぶ。
【００１９】
プリンタドライバ４０（以下では「ドライバ４０」と呼ぶ）は、ユーザからプリンタ５０に印刷を実行させるための印刷指示を受け付ける場合に、印刷の実行をプリンタ５０に指示するコマンドであって、ＰＪＬによって記述されたコマンドを印刷スプーラ３７に記憶するためのプログラムである。以下では、印刷の実行をプリンタ５０に指示するコマンドのことを「印刷実行コマンド」と呼ぶ。従って、本実施例では、印刷スプーラ３７は、ＰＪＬによって記述されるコマンドとして、情報の送信をプリンタ５０に要求するＰＪＬコマンドと、印刷の実行をプリンタ５０に指示する印刷実行コマンドと、のそれぞれを記憶可能である。
【００２０】
（ＭＩＢ値リスト４４の内容；図２）
アプリ３８は、ＭＩＢ値リスト４４をメモリ３４内に実現する。図２を参照して、ＭＩＢ値リスト４４について説明する。ＭＩＢ値リスト４４は、プリンタ５０の情報の名称（即ちＮａｍｅ）と、ＳＮＭＰに従った情報識別子であるＯＩＤ（Object IDの略）と、情報の送信をプリンタ５０に要求するためのＰＪＬコマンドと、ＭＩＢ（Management Information Baseの略）値と、を関連付けて記憶している。
【００２１】
本実施例では、プリンタ５０の情報として、以下の７個の情報を想定している。モデル名は、プリンタ５０のモデルを示す名称である。シリアル番号は、プリンタ５０に割り当てられるデバイス番号である。型番は、プリンタ５０に装着されている消耗品カートリッジの種類を示す番号である。ステータスは、プリンタ５０の現在の動作状態（例えば、印刷実行中状態、アイドル状態等）である。総印刷枚数は、プリンタ５０によって印刷が実行された印刷媒体の総数である。消耗品残量は、プリンタ５０に装着されている消耗品カートリッジ内の消耗品の残量である。消耗品交換回数は、プリンタ５０において消耗品カートリッジが交換された回数である。このように、プリンタ５０の情報は、プリンタ５０によって印刷が実行されることに応じて変化し得る情報（例えば、総印刷枚数、消耗品残量、消耗品交換回数）を含む。
【００２２】
ＯＩＤ及びＭＩＢ値について説明する。各プリンタ５０，７０は、ＭＩＢのツリー構造を利用して、モデル名、シリアル番号、ステータス（例えば印刷実行中、待機中）等の複数個の情報を記憶している。本実施例では、プリンタの各情報を識別する識別子のことを「ＯＩＤ」と呼び、ＯＩＤによって識別される情報を示す値のことを「ＭＩＢ値」と呼ぶ。
【００２３】
ＰＪＬコマンドは、関連付けられているＯＩＤによって識別されるＭＩＢ値の送信をプリンタ５０に要求するコマンドである。例えば、ＯＩＤ「Ｘ１」に関連付けられているＰＪＬコマンド「＠ＰＪＬ  ＭＯＤＥＬＮＡＭＥ」は、プリンタ５０のモデル名を示すＭＩＢ値の送信をプリンタ５０に要求するコマンドである。
【００２４】
ＭＩＢ値リスト４４内の各情報（名前、ＯＩＤ、ＰＪＬコマンド）は、アプリ３８がＰＣ１０にインストールされる際に、メモリ３４に記憶される。ＭＩＢ値リスト４４内のＭＩＢ値の欄は、アプリ３８がＰＣ１０にインストールされる際には、空の状態であり、プリンタ５０からＭＩＢ値が受信される際に、ＭＩＢ値を記憶する。なお、ＭＩＢ値リスト４４内に記憶される情報は、図２に示されるものに限らず、例えば、プリンタ５０が印刷可能な印刷媒体の枚数に関する情報、印刷済みの印刷媒体上におけるトナーが占める割合の平均を示すカバレッジに関する情報等をさらに含んでいてもよい。
【００２５】
（本実施例の概要；図３）
続いて、図３を参照して、本実施例の概略を説明する。（１）ＰＣ１０は、ユーザから印刷指示を受け付ける場合に、プリンタドライバ４０に従って印刷実行コマンドを生成して、生成済みの印刷実行コマンドを含む印刷ジョブを印刷スプーラ３７に記憶する。（２）ＰＣ１０は、印刷スプーラ３７に印刷実行コマンドが記憶されることに応じて、ＭＩＢ値リスト４４内の各ＰＪＬコマンドを含む印刷ジョブを印刷スプーラ３７に記憶する。これにより、印刷スプーラ３７は、（３）ＵＳＢＩ／Ｆ１６を介して、先に記憶した印刷実行コマンドをプリンタ５０に送信し、その後、（４）ＵＳＢＩ／Ｆ１６を介して、後に記憶した各ＰＪＬコマンドをプリンタ５０に送信する。（５）ＰＣ１０は、各ＰＪＬコマンドがプリンタ５０に送信されることに応じて、プリンタ５０から、ＵＳＢＩ／Ｆ１６を介して、各ＰＪＬコマンドに対応する各ＭＩＢ値を受信する。そして、ＰＣ１０は、各ＭＩＢ値をＭＩＢ値リスト４４に記憶する。
【００２６】
その後、（６）ＰＣ１０は、管理装置６０から、ネットワークＩ／Ｆ１８を介して、ＳＮＭＰに従ったＧｅｔリクエストを受信する。Ｇｅｔリクエストは、各ＯＩＤを含む。そして、（７）ＰＣ１０は、ＭＩＢ値リスト４４から、Ｇｅｔリクエストに含まれる各ＯＩＤに関連付けられている各ＭＩＢ値を特定し、特定済みの各ＭＩＢ値を含むＧｅｔレスポンスを管理装置６０に送信する。
【００２７】
上述した各処理が実行されるので、管理装置６０は、プリンタ５０との通信を実行不可能であるにも関わらず、ＰＣ１０からプリンタ５０の情報を受信して管理することができる。
【００２８】
（ＰＣ１０のＰＪＬコマンド記憶処理；図４）
続いて、図４を参照して、ＰＣ１０のＣＰＵ３２がアプリ３８に従って実行するＰＪＬコマンド記憶処理を説明する。ＰＪＬコマンド記憶処理は、ＰＪＬコマンドを含む印刷ジョブを印刷スプーラ３７に記憶する処理である。以下では、ＣＰＵ３２ではなくアプリ３８を主体として図４の各処理の内容を説明する。後述の図５でも同様である。
【００２９】
Ｓ５では、アプリ３８は、アプリ３８が新たに起動されたのか否かを判断する。アプリ３８は、ユーザによってアプリ３８が新たに起動される場合に、Ｓ５でＹＥＳと判断して、Ｓ２５に進む。一方、アプリ３８は、アプリ３８が起動されている状態で後述のＳ２５の処理を実行した後にＳ５の処理を再び実行する際には、Ｓ５でＮＯと判断して、Ｓ１０に進む。
【００３０】
Ｓ１０では、アプリ３８は、印刷スプーラ３７を監視することによって、印刷実行コマンドが印刷スプーラ３７に記憶されることを検出する。具体的には、アプリ３８は、印刷スプーラ３７内に印刷実行コマンドが記憶されているのか否かをＯＳ３６に問い合わせる。ここで、メモリ３４は、印刷スプーラ３７内に記憶されている各コマンドを示す情報を記憶する領域（図示省略）を有する。ＯＳ３６は、アプリ３８から問い合わせを受け付ける場合に、当該領域を参照して、応答をアプリ３８に供給する。アプリ３８は、当該応答が、印刷スプーラ３７内に印刷実行コマンドが記憶されていることを示す場合に、Ｓ１０でＹＥＳと判断して、Ｓ２４に進む。一方、アプリ３８は、当該応答が、印刷スプーラ３７内に印刷実行コマンドが記憶されていないことを示す場合に、Ｓ１０でＮＯと判断して、所定時間（例えば５〜１０秒）毎に、ＯＳ３６に問い合わせすることを繰り返す。
【００３１】
Ｓ２４では、アプリ３８は、印刷スプーラ３７内の各コマンドの最後にＰＪＬコマンドが記憶されているのか否かを判断する。具体的には、アプリ３８は、上記の応答が、印刷スプーラ３７内の各コマンドの最後にＰＪＬコマンドが記憶されていることを示す場合に、Ｓ２４でＹＥＳと判断し、Ｓ２５の処理を実行することなく、Ｓ１０に戻る。この結果、印刷スプーラ３７内の各コマンドの最後にＰＪＬコマンドが記憶されているにも関わらず、ＰＪＬコマンドが印刷スプーラ３７にさらに記憶されることを抑制することができる。このために、ＰＪＬコマンドがプリンタ５０に送信された後に、プリンタ５０において印刷が実行されないにも関わらず（即ち、プリンタ５０の情報（例えば、総印刷枚数、消耗品残量等）が変化しないにも関わらず）、同じＰＪＬコマンドがプリンタ５０に再び送信されることを抑制することができる。この結果、ＰＣ１０及びプリンタ５０に無駄な処理を実行させることを抑制することができる。一方、アプリ３８は、上記の応答が、印刷スプーラ３７内の各コマンドの最後にＰＪＬコマンドではなく印刷実行コマンドが記憶されていることを示す場合に、Ｓ２４でＮＯと判断して、Ｓ２５に進む。
【００３２】
Ｓ２５では、アプリ３８は、ＭＩＢ値リスト４４内の全てのＰＪＬコマンドを含む印刷ジョブを生成して、生成済みの印刷ジョブを印刷スプーラ３７に記憶する。この結果、ＯＳ３６は、ＵＳＢＩ／Ｆ１６を介して、印刷スプーラ３７内の印刷実行コマンドを含む印刷ジョブをプリンタ５０に送信した後に、ＵＳＢＩ／Ｆ１６を介して、印刷スプーラ３７内の各ＰＪＬコマンドを含む印刷ジョブをプリンタ５０に送信する。この場合、図４では図示省略しているが、アプリ３８は、プリンタ５０からＵＳＢＩ／Ｆ１６を介して各ＰＪＬコマンドに対応する各ＭＩＢ値を受信し、受信済みの各ＭＩＢ値をＭＩＢ値リスト４４に記憶する。Ｓ２５が終了すると、Ｓ５に戻る。
【００３３】
（ＰＣ１０の応答処理；図５）
続いて、図５を参照して、ＣＰＵ３２がアプリ３８に従って実行する応答処理を説明する。応答処理は、管理装置６０から受信されるＧｅｔリクエストに対する応答を実行する処理であり、ＰＣ１０においてアプリ３８が起動されると開始される。
【００３４】
Ｓ１００では、アプリ３８は、管理装置６０から、ネットワークＩ／Ｆ１８を介して、１個以上のＯＩＤを含むＧｅｔリクエストを受信することを監視する。アプリ３８は、管理装置６０からＧｅｔリクエストを受信する場合（Ｓ１００でＹＥＳ）に、Ｓ１０５に進む。
【００３５】
Ｓ１０５では、アプリ３８は、Ｇｅｔリクエスト内の１個以上のＯＩＤの全てがＭＩＢ値リスト４４に記憶されているのか否かを判断する。アプリ３８は、当該１個以上のＯＩＤの全てがＭＩＢ値リスト４４に記憶されていると判断する場合（Ｓ１０５でＹＥＳ）に、Ｓ１１０に進み、当該１個以上のＯＩＤのうちの少なくとも１個のＯＩＤがＭＩＢ値リスト４４に記憶されていないと判断する場合（Ｓ１０５でＮＯ）に、Ｓ１１５に進む。
【００３６】
Ｓ１１０では、アプリ３８は、まず、ＭＩＢ値リスト４４から、Ｇｅｔリクエスト内の１個以上のＯＩＤに関連付けられている１個以上のＭＩＢ値を特定する。そして、アプリ３８は、ネットワークＩ／Ｆ１８を介して、特定済みの１個以上のＭＩＢ値を含むＧｅｔレスポンスを管理装置６０に送信する。
【００３７】
Ｓ１１５では、アプリ３８は、「Ｎｏ  Ｓｕｃｈ」を含むと共に１個のＭＩＢ値も含まないＧｅｔレスポンスを管理装置６０に送信する。Ｓ１１０又はＳ１１５が終了すると、Ｓ１００に戻る。
【００３８】
（具体的なケース；図６〜図８）
続いて、図６〜図８を参照して、図４及び図５の処理によって実現される具体的なケースを説明する。図６の初期状態では、ＭＩＢ値リスト４４内のＭＩＢ値の欄は空の状態である。
【００３９】
ＰＣ１０（即ちアプリ３８）は、Ｔ５において、ＰＣ１０のユーザによってアプリ３８が起動されることに応じて（図４のＳ５でＹＥＳ）、Ｔ８において、ＭＩＢ値リスト４４内の７個のＰＪＬコマンド（「＠ＰＪＬ  ＭＯＤＥＬＮＡＭＥ」、「＠ＰＪＬ  ＳＥＲＩＡＬＮＵＭＢＥＲ」等）を含む印刷ジョブＪ１を生成して、印刷ジョブＪ１を印刷スプーラ３７に記憶する（Ｓ２５）。
【００４０】
次いで、ＰＣ１０（即ちＯＳ３６）は、ＵＳＢＩ／Ｆ１６を介して、印刷ジョブＪ１内の各ＰＪＬコマンドをプリンタ５０に順次送信する。この結果、ＰＣ１０（即ちアプリ３８）は、プリンタ５０から、ＵＳＢＩ／Ｆ１６を介して、各ＰＪＬコマンドに対応する各ＭＩＢ値を受信する。具体的には、ＰＣ１０は、Ｔ１０において、ＰＪＬコマンド「＠ＰＪＬ  ＭＯＤＥＬＮＡＭＥ」をプリンタ５０に送信し、Ｔ１２において、プリンタ５０から、プリンタ５０のモデル名を示すＭＩＢ値「Ｌ８９００ＣＤＷ」を受信する。同様に、ＰＣ１０は、Ｔ２０〜Ｔ７０において、他の６個のＰＪＬコマンドをプリンタ５０に順次送信して、プリンタ５０から６個のＭＩＢ値を順次受信する。
【００４１】
Ｔ８０では、ＰＣ１０（即ちアプリ３８）は、受信済みの７個のＭＩＢ値「Ｌ８９００ＣＤＷ」等をＭＩＢ値リスト４４に記憶する。これにより、ＭＩＢ値リスト４４において、７個のＮａｍｅと、７個のＯＩＤと、７個のＰＪＬコマンドと、７個のＭＩＢ値と、が関連付けて記憶される。このように、ＰＣ１０は、各ＯＩＤと各ＭＩＢ値とを関連付けてＭＩＢ値リスト４４に記憶しておくので、管理装置６０からＯＩＤを含むＧｅｔリクエストを受信する場合に、当該ＯＩＤに関連付けられているＭＩＢ値、即ち、管理装置６０が要求しているＭＩＢ値を含むＧｅｔレスポンスを管理装置６０に適切に送信することができる。また、上述したように、ＰＣ１０は、プリンタ５０において印刷が実行される前に、アプリ３８が起動されることに応じて、プリンタ５０の情報をＭＩＢ値リスト４４に記憶する（Ｔ８）。このために、図６のケースでは図示省略しているが、ＰＣ１０は、プリンタ５０において印刷が実行される前に、管理装置６０からＧｅｔリクエストを受信する場合（図５のＳ１００でＹＥＳ）に、プリンタ５０の情報を管理装置６０に適切に送信することができる。
【００４２】
続いて、図７を参照して、図６の続きの処理を説明する。ＰＣ１０（即ちドライバ４０）は、Ｔ１００において、ユーザから印刷指示を受け付ける場合に、Ｔ１０２において、ＰＪＬで記述された印刷実行コマンドを生成し、印刷実行コマンドを含む印刷ジョブＪ２を印刷スプーラ３７に記憶する。
【００４３】
ＰＣ１０（即ちアプリ３８）は、印刷ジョブＪ２が印刷スプーラ３７に記憶されることに応じて（図４のＳ１０でＹＥＳ、Ｓ２４でＮＯ）、Ｔ１０４において、ＭＩＢ値リスト４４内の７個のＰＪＬコマンドを含む印刷ジョブＪ３を印刷スプーラ３７に記憶する（Ｓ２５）。本ケースでは、例えば、ＯＳ３６の処理負荷が比較的に高くなっていることに起因して、印刷スプーラ３７内の印刷ジョブＪ２がプリンタ５０に送信されるまでにある程度の時間を要するので、印刷ジョブＪ２がプリンタ５０に送信される前に、印刷ジョブＪ３が印刷スプーラ３７に記憶される状況を想定している。
【００４４】
次いで、ＰＣ１０（即ちドライバ４０）は、Ｔ１０５において、ユーザから印刷指示をさらに受け付ける場合に、Ｔ１０６において、印刷実行コマンドを含む印刷ジョブＪ４を印刷スプーラ３７に記憶する。本ケースでは、印刷ジョブＪ２，Ｊ３がプリンタ５０に送信される前に、印刷ジョブＪ４が印刷スプーラ３７に記憶される状況を想定している。
【００４５】
ＰＣ１０（即ちアプリ３８）は、印刷ジョブＪ４が印刷スプーラ３７に記憶されることに応じて（図４のＳ１０でＹＥＳ、Ｓ２４でＮＯ）、Ｔ１０８において、ＭＩＢ値リスト４４内の７個のＰＪＬコマンドを含む印刷ジョブＪ５を印刷スプーラ３７に記憶する（Ｓ２５）。本ケースでは、印刷ジョブＪ２〜Ｊ４がプリンタ５０に送信される前に、印刷ジョブＪ５が印刷スプーラ３７に記憶される状況を想定している。この結果、印刷スプーラ３７では、印刷実行コマンドを含む印刷ジョブＪ２と、各ＰＪＬコマンドを含む印刷ジョブＪ３と、印刷実行コマンドを含む印刷ジョブＪ４と、各ＰＪＬコマンドを含む印刷ジョブＪ５と、が同時的に記憶されている状態になる。
【００４６】
続いて、図８を参照して、図７の続きの処理を説明する。ＰＣ１０（即ちＯＳ３６）は、印刷スプーラ３７が各印刷ジョブＪ２〜Ｊ５を記憶した順に、ＵＳＢＩ／Ｆ１６を介して、印刷ジョブＪ２〜Ｊ５を処理する。具体的には、Ｔ１１０では、ＰＣ１０（即ちＯＳ３６）は、印刷実行コマンドを含む印刷ジョブＪ２をプリンタ５０に送信する。この結果、Ｔ１１２では、プリンタ５０において印刷ジョブＪ２に従った印刷が実行される。
【００４７】
次いで、Ｔ１５０では、ＰＣ１０は、印刷ジョブＪ３の処理を実行する。具体的には、ＰＣ１０（即ちＯＳ３６）は、ＵＳＢＩ／Ｆ１６を介して、印刷ジョブＪ３に含まれる７個のＰＪＬコマンドをプリンタ５０に順次送信する。この結果、ＰＣ１０（即ちアプリ３８）は、ＵＳＢＩ／Ｆ１６を介して、プリンタ５０から７個のＰＪＬコマンドに対応する７個のＭＩＢ値を受信する。そして、Ｔ１９０では、ＰＣ１０（即ちアプリ３８）は、受信済みの７個のＭＩＢ値をＭＩＢ値リスト４４に記憶して、ＭＩＢ値リスト４４を更新する。プリンタ５０における印刷の実行（Ｔ１１２）に応じてプリンタ５０の情報に変化が生じる。このため、「総印刷枚数」のＭＩＢ値が、図６のＴ８０の実行時の「５００」から「５０５」に変化し、「消耗品残量」のＭＩＢ値が、図６のＴ８０の実行時の「６０」から「５５」に変化する。
【００４８】
次いで、Ｔ２１０では、ＰＣ１０（即ちＯＳ３６）は、印刷実行コマンドを含む印刷ジョブＪ４をプリンタ５０に送信する。この結果、Ｔ２１２では、プリンタ５０において印刷ジョブＪ４に従った印刷が実行される。
【００４９】
次いで、Ｔ２５０では、ＰＣ１０は、印刷ジョブＪ５の処理を実行する。具体的には、ＰＣ１０（即ちＯＳ３６）は、ＵＳＢＩ／Ｆ１６を介して、印刷ジョブＪ５に含まれる７個のＰＪＬコマンドをプリンタ５０に順次送信する。この結果、ＰＣ１０（即ちアプリ３８）は、ＵＳＢＩ／Ｆ１６を介して、プリンタ５０から７個のＰＪＬコマンドに対応する７個のＭＩＢ値を受信する。そして、Ｔ２９０では、ＰＣ１０は、受信済みの７個のＭＩＢ値をＭＩＢ値リスト４４に記憶して、ＭＩＢ値リスト４４を更新する。プリンタ５０における印刷の実行（Ｔ２１２）に応じてプリンタ５０の情報に変化が生じる。このため、「総印刷枚数」のＭＩＢ値が、Ｔ１９０の実行時の「５０５」から「５１０」に変化し、「消耗品残量」のＭＩＢ値が、Ｔ１９０の実行時の「５５」から「５０」に変化する。
【００５０】
その後、Ｔ３００では、ＰＣ１０（即ちアプリ３８）は、管理装置６０からＧｅｔリクエストを受信する（図５のＳ１００でＹＥＳ）。当該Ｇｅｔリクエストは、７個のＯＩＤ「Ｘ１」〜「Ｘ７」を含む。この場合、ＰＣ１０（即ちアプリ３８）は、受信済みの７個のＯＩＤの全てがＭＩＢ値リスト４４に記憶されていると判断する（Ｓ１０５でＹＥＳ）。そして、ＰＣ１０（即ちアプリ３８）は、Ｔ３０２において、ＭＩＢ値リスト４４から７個のＯＩＤに関連付けられている７個のＭＩＢ値「Ｌ８９００ＣＤＷ」等を取得し、取得済みの７個のＭＩＢ値を含むＧｅｔレスポンスを管理装置６０に送信する（Ｓ１１０）。
【００５１】
（本実施例の効果）
本実施例では、ＰＣ１０は、印刷実行コマンドを含む印刷ジョブ（例えば印刷ジョブＪ２、Ｊ４）が印刷スプーラ３７に記憶されることに応じて（図７のＴ１０２、Ｔ１０６）、ＰＪＬによって記述されたＰＪＬコマンドを含む印刷ジョブ（例えば印刷ジョブＪ３、Ｊ５）を印刷スプーラ３７に記憶する（Ｔ１０４、Ｔ１０８）。これにより、印刷スプーラ３７内の印刷実行コマンドがプリンタ５０に送信された後に、印刷スプーラ３７内のＰＪＬコマンドがプリンタ５０に送信される（Ｔ１５０、Ｔ２５０）。従って、ＰＣ１０からプリンタ５０に送信される印刷実行コマンドの通信が妨げられるのを抑制することができる。
【００５２】
例えば、各ＰＪＬコマンドを含む印刷ジョブが印刷スプーラ３７に定期的（例えば１時間毎）に記憶される比較例の構成を想定する。この場合、ＰＣ１０は、各ＰＪＬコマンドを含む印刷ジョブをプリンタ５０に定期的に送信することを繰り返して、プリンタ５０からプリンタ５０の情報（即ち各ＭＩＢ値）を定期的に受信することを繰り返す。ここで、プリンタ５０の情報は、プリンタ５０によって印刷が実行されることに応じて変化し得る情報（例えば、総印刷枚数、消耗品残量、消耗品交換回数）を含む。従って、比較例の構成では、プリンタ５０において長時間に亘って印刷が実行されないことに起因して、プリンタ５０の情報が長時間に亘って変化しない状況であっても、ＰＣ１０は、各ＰＪＬコマンドを含む印刷ジョブをプリンタ５０に送信することを繰り返して、プリンタ５０から同じ情報を受信することを繰り返す。このような無駄な通信が実行されることを抑制するために、本実施例では、ＰＣ１０は、印刷実行コマンドが印刷スプーラ３７に記憶されることを検出する場合（図４のＳ１０でＹＥＳ）、即ち、プリンタ５０において印刷が実行される予定がある場合に、各ＰＪＬコマンドを含む印刷ジョブを印刷スプーラ３７に記憶する（Ｓ２５）。この結果、ＰＣ１０とプリンタ５０との間で無駄な通信が実行されることを抑制することができる。
【００５３】
また、本実施例では、図７のＴ１０８に示されるように、印刷スプーラ３７において、印刷実行コマンドを含む印刷ジョブＪ２と、各ＰＪＬコマンドを含む印刷ジョブＪ３と、印刷実行コマンドを含む印刷ジョブＪ４と、各ＰＪＬコマンドを含む印刷ジョブＪ５と、が同時的に記憶されている状態になる。この結果、ＰＣ１０は、プリンタ５０において印刷が実行される毎に、プリンタ５０からプリンタ５０の情報を受信してＭＩＢ値リスト４４を更新することができる（Ｔ１９０、Ｔ２９０）。これにより、ＰＣ１０は、例えば、図８のＴ２１０で印刷ジョブＪ４の処理を実行している間に、管理装置６０からＧｅｔリクエストを受信する場合にも、印刷ジョブＪ３の処理後に更新された最新の各ＭＩＢ値を管理装置６０に送信することができる。
【００５４】
（対応関係）
ＰＣ１０、管理装置６０が、それぞれ、「通信装置」、「外部装置」の一例である。アプリ３８が、「コンピュータプログラム」の一例である。ＵＳＢＩ／Ｆ１６、ネットワークＩ／Ｆ１８が、それぞれ、「第１の通信インターフェース」、「第２の通信インターフェース」も一例である。印刷スプーラ３７、ＰＪＬ、ＰＪＬコマンド、ＭＩＢ値が、それぞれ、「所定のメモリ領域」、「印刷スクリプト」、「要求コマンド」、「プリンタの情報」の一例である。印刷ジョブＪ２内の印刷実行コマンド、印刷ジョブＪ３内の各ＰＪＬコマンド、印刷ジョブＪ４内の印刷実行コマンド、印刷ジョブＪ５内の各ＰＪＬコマンドが、それぞれ、「第１の印刷実行コマンド」、「第１の要求コマンド」、「第２の印刷実行コマンド」、「第２の要求コマンド」の一例である。ＯＩＤ、ＭＩＢ値リスト４４、図８のＴ３００のＧｅｔリクエストが、それぞれ、「情報識別子」、「データベース」、「情報要求」の一例である。
【００５５】
図４のＳ１０の処理、Ｓ２５の処理が、それぞれ、「検出部」、「第１の記憶制御部」によって実行される処理の一例である。図５のＳ１１０の処理が、「プリンタ情報送信部」によって実行される処理の一例である。図６のＴ１０〜Ｔ７２、図８のＴ１５０、及び、Ｔ２５０において、プリンタ５０からＭＩＢ値を受信する処理が、「プリンタ情報受信部」によって実行される処理の一例である。
【００５６】
（第２実施例）
続いて、第２実施例を説明する。第２実施例では、図４のＳ１０でＮＯと判断される場合に、ＣＰＵ３２がＳ２０のクリーニング監視処理を実行する点が第１実施例とは異なる。クリーニング監視処理は、プリンタ５０においてクリーニング動作が実行されることを監視する処理である。
【００５７】
ここで、クリーニング動作について説明する。インクジェット方式の印刷機構を備えるプリンタ５０では、長時間に亘って印刷が実行されないと、インクを噴射するためのノズル内のインクが固化してしまい、インクを吐出する性能が悪化し得る。クリーニング動作は、ノズルからインクを定期的に噴射することによって、ノズル内のインクの固化を防ぐための処理である。このように、プリンタ５０においてクリーニング動作が実行される場合には、プリンタ５０の情報のうちの消耗品残量が変化し得る。
【００５８】
（クリーニング監視処理；図９）
図９を参照して、クリーニング監視処理の内容を説明する。Ｓ２００では、アプリ３８は、メモリ３４内にクリーニング時刻情報４６が記憶されているのか否かを判断する。クリーニング時刻情報４６は、プリンタ５０がクリーニング動作を実行する時刻を示す情報の領域であり、アプリ３８がインストールされる際には空の状態である。この状態では、アプリ３８は、クリーニング時刻情報４６が記憶されていないと判断し（Ｓ２００でＮＯ）、Ｓ２０５に進む。一方、アプリ３８は、クリーニング時刻情報４６が記憶されていると判断する場合（Ｓ２００でＹＥＳ）には、Ｓ２１５に進む。
【００５９】
Ｓ２０５では、アプリ３８は、ＰＪＬで記述された時刻情報送信コマンドを含む印刷ジョブを生成し、印刷スプーラ３７に記憶する。時刻情報送信コマンドは、ＰＣ１０へのクリーニング時刻情報４６の送信をプリンタ５０に要求するコマンドである。
【００６０】
Ｓ２１０では、アプリ３８は、ＵＳＢＩ／Ｆ１６を介して、プリンタ５０からクリーニング時刻情報４６を受信することを監視する。アプリ３８は、プリンタ５０からクリーニング時刻情報４６を受信する場合（Ｓ２１０でＹＥＳ）に、クリーニング時刻情報４６をメモリ３４に記憶して、Ｓ２１５に進む。なお、本実施例では、プリンタ５０がインクジェットプリンタであることを想定しているので、プリンタ５０からクリーニング時刻情報４６を必ず受信する。ただし、プリンタ５０がレーザプリンタである場合にはクリーニング動作を実行しないので、プリンタ５０からクリーニング時刻情報４６が受信されない。この場合、Ｓ２１０の処理が所定時間経過する場合に、クリーニング動作が実行されないことを意味する非実行ＥＮＤとして図９の処理を終了してもよい。
【００６１】
Ｓ２１５では、アプリ３８は、クリーニング時刻情報４６を参照して、プリンタ５０においてクリーニング動作が実行されるクリーニング時刻に到達したのか否かを判断する。アプリ３８は、クリーニング時刻に到達したと判断する場合（Ｓ２１５でＹＥＳ）に、Ｓ２２０に進み、クリーニング時刻に到達していないと判断する場合（Ｓ２１５でＮＯ）に、非実行ＥＮＤとして、図９の処理を終了する。
【００６２】
Ｓ２２０では、アプリ３８は、所定時間（例えば１分）経過することを監視する。所定時間は、プリンタ５０におけるクリーニング動作に必要な時間以上に設定される。アプリ３８は、所定時間が経過したと判断する場合（Ｓ２２０でＹＥＳ）に、クリーニング動作が実行されたことを意味する実行ＥＮＤとして、図９の処理を終了する。図９の処理が終了すると、図４のＳ２３の処理に進む。
【００６３】
Ｓ２３では、アプリ３８は、クリーニング監視処理が実行ＥＮＤとして終了したのか否かを判断する。アプリ３８は、クリーニング監視処理が実行ＥＮＤとして終了した場合（Ｓ２３でＹＥＳ）に、Ｓ２５に進み、ＭＩＢ値リスト４４内の各ＰＪＬコマンドを含む印刷ジョブを印刷スプーラ３７に記憶する。一方、アプリ３８は、クリーニング監視処理が非実行ＥＮＤとして終了した場合（Ｓ２３でＮＯ）に、Ｓ２５を実行することなく、Ｓ１０に戻る。
【００６４】
（本実施例の効果）
本実施例では、ＰＣ１０は、図９のクリーニング監視処理を実行して、プリンタ５０からクリーニング動作の完了後の各ＭＩＢ値を受信することができる。従って、ＰＣ１０は、クリーニング動作の完了後の各ＭＩＢ値を管理装置６０に送信することができる。本実施例では、クリーニング時刻情報４６、時刻情報送信コマンドが、それぞれ、「タイミング情報」、「所定コマンド」の一例である。
【００６５】
（第３実施例；図１０）
続いて、第３実施例を説明する。第３実施例は、図４のＳ１０でＹＥＳと判断される場合に、ＰＣ１０（即ちアプリ３８）がＳ２４に進むのではなくＳ１５のコマンド監視処理を実行する点が第１実施例とは異なる。
【００６６】
図１０を参照して、コマンド監視処理の内容を説明する。Ｓ３００では、アプリ３８は、ＰＪＬコマンドが印刷スプーラ３７に記憶されているのか否かを判断する。具体的には、アプリ３８は、図４のＳ１０でＯＳ３６から取得した応答が、ＰＪＬコマンドが印刷スプーラ３７に記憶されていることを示す場合に、Ｓ３００でＹＥＳと判断して、Ｓ３０３に進む。一方、アプリ３８は、上記の応答が、ＰＪＬコマンドが印刷スプーラ３７に記憶されていないことを示す場合に、Ｓ３００でＮＯと判断して、図１０の処理を終了し、図４のＳ２５に進む。
【００６７】
Ｓ３０３では、アプリ３８は、印刷スプーラ３７内に記憶されている各コマンドの最後に印刷実行コマンドが記憶されているのか否かを判断する。具体的には、アプリ３８は、上記の応答が、印刷スプーラ３７内に記憶されている各コマンドの最後に印刷実行コマンドが記憶されていることを示す場合に、Ｓ３０３でＹＥＳと判断して、Ｓ３０５に進む。一方、アプリ３８は、上記の応答が、印刷スプーラ３７内に記憶されている各コマンドの最後に印刷実行コマンドではなくＰＪＬコマンドが記憶されていることを示す場合に、Ｓ３０３でＮＯと判断して、図１０の処理を終了し、図４のＳ２５に進む。
【００６８】
Ｓ３０５では、アプリ３８は、印刷スプーラ３７内のＰＪＬコマンドを含む印刷ジョブを削除する。アプリ３８は、Ｓ３０５の処理を終了すると、図１０の処理を終了し、図４のＳ２５に進む。
【００６９】
図１０には、コマンド監視処理によって実現される印刷スプーラ３７内の情報の変化を示す。アプリ３８は、印刷スプーラ３７に印刷実行コマンドを含む印刷ジョブＪ１１が記憶されることに応じて（図４のＳ１０でＹＥＳ）、コマンド監視処理を実行する（Ｓ１５）。当該コマンド監視処理では、アプリ３８は、図１０のＳ３００でＮＯと判断して、各ＰＪＬコマンドを含む印刷ジョブＪ１２を印刷スプーラ３７に記憶する（図４のＳ２５）。次いで、アプリ３８は、印刷スプーラ３７に印刷実行コマンドを含む印刷ジョブＪ１３が記憶されることに応じて（Ｓ１０でＹＥＳ）、コマンド監視処理を再び実行する（Ｓ１５）。当該コマンド監視処理では、アプリ３８は、Ｓ３００でＹＥＳかつＳ３０３でＹＥＳと判断して、印刷スプーラ３７内の印刷ジョブＪ１２を削除する（Ｓ３０５）。そして、アプリ３８は、ＭＩＢ値リスト４４内の各ＰＪＬコマンドを含む印刷ジョブＪ１４を印刷スプーラ３７に記憶する（Ｓ２５）。この結果、印刷スプーラ３７では、印刷実行コマンドを含む印刷ジョブＪ１１と、印刷実行コマンドを含む印刷ジョブＪ１３と、各ＰＪＬコマンドを含む印刷ジョブＪ１４と、が同時的に記憶されている状態になる。
【００７０】
（本実施例の効果）
例えば、プリンタ５０において、印刷ジョブＪ１３に従った印刷が比較的短時間で済む場合には、印刷ジョブＪ１２の処理を実行する必要性が低い。印刷ジョブＪ１２の処理で記憶されたＭＩＢ値が、印刷ジョブＪ１４の処理ですぐに更新されるからである。従って、本実施例では、印刷実行コマンドを含む印刷ジョブＪ１１と各ＰＪＬコマンドを含む印刷ジョブＪ１２とが印刷スプーラ３７に記憶されている状態において、印刷実行コマンドを含む印刷ジョブＪ１３が印刷スプーラ３７に記憶されることに応じて、印刷ジョブＪ１２を削除する。この結果、印刷ジョブＪ１１と印刷ジョブＪ１３との間に必要性が低い印刷ジョブＪ１２の処理を実行せずに済むので、ＰＣ１０及びプリンタ５０の処理負荷を軽減することができる。
【００７１】
本実施例では、印刷ジョブＪ１１内の印刷実行コマンド、印刷ジョブＪ１２内の各ＰＪＬコマンド、印刷ジョブＪ１３内の印刷実行コマンド、印刷ジョブＪ１４内の各ＰＪＬコマンドが、それぞれ、「第１の印刷実行コマンド」、「第１の要求コマンド」、「第２の印刷実行コマンド」、「第２の要求コマンド」の一例である。
【００７２】
（第４実施例；図１１）
続いて、第４実施例を説明する。第４実施例は、ＰＣ１０（即ちアプリ３８）によって実行されるコマンド監視処理（図４のＳ１５）の内容が第３実施例（即ち図１０）とは異なる。
【００７３】
図１１を参照して、本実施例のコマンド監視処理の内容を説明する。Ｓ４００では、アプリ３８は、印刷スプーラ３７に印刷実行コマンドが記憶されているのか否かを判断する。換言すると、アプリ３８は、印刷スプーラ３７に１個の印刷実行コマンドも記憶されていない状態になることを監視する。具体的には、アプリ３８は、図４のＳ１０と同様にＯＳ３６に問い合わせて、ＯＳ３６から応答を取得する。アプリ３８は、当該応答が、印刷スプーラ３７に印刷実行コマンドが記憶されていることを示す場合に、Ｓ４００でＹＥＳと判断して、ＯＳ３６に問い合わせることを繰り返すことによって、印刷スプーラ３７に１個の印刷実行コマンドも記憶されていない状態になるまで待機する。一方、アプリ３８は、当該応答が、印刷スプーラ３７に印刷実行コマンドが記憶されていないことを示す場合、即ち、印刷スプーラ３７に１個の印刷実行コマンドも記憶されていない状態になる場合に、Ｓ４００でＮＯと判断して、図１１の処理を終了する。図１１の処理が終了すると、図４のＳ２５に進む。
【００７４】
図１１には、コマンド監視処理によって実現される印刷スプーラ３７内の情報の変化を示す。アプリ３８は、印刷実行コマンドを含む印刷ジョブＪ２１が印刷スプーラ３７に記憶されることに応じて（図４のＳ１０でＹＥＳ）、コマンド監視処理を実行する（Ｓ１５）。当該コマンド監視処理では、アプリ３８は、Ｓ４００でＹＥＳと判断して待機する（即ちＳ４００の処理を繰り返す）。その後、印刷実行コマンドを含む印刷ジョブＪ２２が印刷スプーラ３７にさらに記憶される。この状態でも、アプリ３８は、Ｓ４００でＹＥＳと判断して待機する（即ちＳ４００の処理を繰り返す）。そして、アプリ３８は、各印刷ジョブＪ２１，Ｊ２２がプリンタ５０に送信されたことに応じて、印刷スプーラ３７に１個の印刷実行コマンドも記憶されていない状態になると、Ｓ４００でＮＯと判断して、各ＰＪＬコマンドを含む印刷ジョブＪ２３を印刷スプーラ３７に記憶する（Ｓ２５）。
【００７５】
（本実施例の効果）
本実施例でも、第３実施例と同様に、印刷ジョブＪ２１と印刷ジョブＪ２３との間に必要性が低い印刷ジョブ（即ち各ＰＪＬコマンドを含む印刷ジョブ）の処理を実行せずに済むので、ＰＣ１０及びプリンタ５０の処理負荷を軽減することができる。
【００７６】
（第５実施例；図１２）
続いて、図１２を参照して第５実施例を説明する。第５実施例は、メモリ３４が印刷ポート４８（以下では「ポート４８」と呼ぶ）とポート記憶領域４９とを格納している点が第１実施例とは異なる。ポート４８は、印刷スプーラ３７からプリンタ５０に送信されるべき各コマンドの中継を実行するプログラムである。ポート記憶領域４９は、ポート４８によって利用されるメモリ領域である。印刷スプーラ３７からプリンタ５０に送信されるべき各コマンドは、プリンタ５０に送信される前にポート記憶領域４９に記憶される。
【００７７】
本実施例では、以下の各処理（１）〜（１０）が実行される。（１）ドライバ４０は、ユーザから印刷指示を受け付ける場合に、印刷実行コマンドを生成し、印刷実行コマンドを含む印刷ジョブを印刷スプーラ３７に記憶する。（２）印刷スプーラ３７は、印刷実行コマンドを含む印刷ジョブが記憶されることに応じて、印刷実行コマンドを含む印刷ジョブをポート記憶領域４９に記憶する。（３）ポート４８は、ポート記憶領域４９に印刷実行コマンドが記憶されることに応じて、ＭＩＢ値リスト４４内の各ＰＪＬコマンドを含む印刷ジョブをポート記憶領域４９に記憶する。これにより、ポート記憶領域４９は、（４）ＵＳＢＩ／Ｆ１６を介して、先に記憶した印刷実行コマンドをプリンタ５０に送信し、その後、（５）ＵＳＢＩ／Ｆ１６を介して、後に記憶した各ＰＪＬコマンドをプリンタ５０に送信する。（６）ポート４８は、各ＰＪＬコマンドがプリンタ５０に送信されることに応じて、プリンタ５０から、ＵＳＢＩ／Ｆ１６を介して、各ＰＪＬコマンドに対応する各ＭＩＢ値を受信する。そして、ポート４８は、各ＭＩＢ値をＭＩＢ値リスト４４に記憶する。
【００７８】
その後、（７）アプリ３８は、管理装置６０から、ネットワークＩ／Ｆ１８を介してＧｅｔリクエストを受信する。この場合、（８）アプリ３８は、Ｇｅｔリクエストに含まれる各ＭＩＢ値の供給を要求するＭＩＢ値要求をポート４８に供給し、（９）ポート４８から各ＭＩＢ値を取得する。そして、（１０）アプリ３８は、取得済みの各ＭＩＢ値を含むＧｅｔレスポンスを管理装置６０に送信する。
【００７９】
（本実施例の効果）
本実施例では、ＰＣ１０（即ちポート４８）は、印刷実行コマンドを含む印刷ジョブがポート記憶領域４９に記憶されることに応じて、各ＰＪＬコマンドを含む印刷ジョブをポート記憶領域４９に記憶する。これにより、ポート記憶領域４９内の印刷実行コマンドがプリンタ５０に送信された後に、ポート記憶領域４９内の各ＰＪＬコマンドがプリンタ５０に送信される。従って、ＰＣ１０からプリンタ５０に送信される印刷実行コマンドの通信が妨げられるのを抑制することができる。本実施例では、アプリ３８及びポート４８の組み合わせが、「コンピュータプログラム」の一例であり、ポート記憶領域４９が、「所定のメモリ領域」の一例である。
【００８０】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
【００８１】
（変形例１）変形例では、図４のＳ１０において、ＰＣ１０（即ちアプリ３８）は、印刷スプーラ３７の印刷ジョブのカウント値をＯＳ３６に要求してもよい。カウント値は、印刷スプーラ３７に記憶された印刷ジョブの総数を示す。この場合、アプリ３８は、各ＰＪＬコマンドを印刷スプーラ３７に記憶した回数（即ちＳ２５の処理を実行した回数）を示す実行回数を記憶しており、ＯＳ３６から印刷ジョブのカウント値を取得する場合に、カウント値と実行回数との差分が実行回数に一致するのか否かを判断する。アプリ３８は、差分が実行回数に一致すると判断する場合に、印刷スプーラ３７に印刷実行コマンドが記憶されたと判断する（Ｓ１０でＹＥＳ）。例えば、図６のＴ８において、各ＰＪＬコマンドを含む印刷ジョブＪ１が印刷スプーラ３７に記憶される場合に、ＰＣ１０（即ちアプリ３８）は、実行回数として「１」を記憶し、印刷スプーラ３７では、カウント値として「１」が記憶される。次いで、図７のＴ１０２において、印刷実行コマンドを含む印刷ジョブＪ２が印刷スプーラ３７に記憶されることに応じて、印刷スプーラ３７では、カウント値として「２」が記憶される場合には、ＰＣ１０は、カウント値「２」と実行回数「１」との差分（即ち「１」）が実行回数「１」に一致すると判断して、Ｔ１０４において、各ＰＪＬコマンドを含む印刷ジョブＪ３を印刷スプーラ３７に記憶する。また、別の変形例では、ＰＣ１０は、メモリ３４内に印刷スプーラ３７に印刷実行コマンドが記憶されているのか否かを示すフラグを記憶していてもよい。ＰＣ１０（即ちアプリ３８）は、当該フラグがＯＮである場合に、Ｓ１０でＹＥＳと判断する。
【００８２】
（変形例２）図４のＳ５の処理が省略されてもよい。即ち、「第１の記憶制御部」は、コンピュータプログラムが起動される際に、要求コマンドを所定のメモリ領域に記憶しなくてもよい。
【００８３】
（変形例３）ＰＣ１０（即ちアプリ３８）は、管理装置６０から、ＳＮＭＰとは異なるプロトコル（例えばプリンタ５０のベンダによって開発された独自プロトコル）に従った情報要求を受信してもよい。この場合、情報要求に含まれる情報識別子は、ＯＩＤでなくてもよく、情報を識別するための他の種類の識別子であってもよい。
【００８４】
（変形例４）印刷スクリプトは、ＰＪＬでなくてもよく、他のスクリプトであってもよい。
【００８５】
（変形例５）変形例では、ＰＣ１０は、クリーニング時刻情報４６に代えて、例えばプリンタ５０において次にクリーニング動作が実行されるまでの期間を示す期間情報を記憶してもよい。この場合、Ｓ２１５では、ＰＣ１０（即ちアプリ３８）は、期間情報を参照して、プリンタ５０においてクリーニング動作が実行される期間が経過したのか否かを判断する。本変形例では、期間情報が、「タイミング情報」の一例である。
【００８６】
（変形例６）変形例では、ＰＣ１０は、メモリ３４内にＭＩＢ値リスト４４を格納していなくてもよい。この場合、例えば、ＰＣ１０は、図８のＴ１５０の印刷ジョブＪ３においてプリンタ５０からＭＩＢ値を受信することに応じて、当該ＭＩＢ値を管理装置６０に送信する。本変形例では、「データベース」、「第３の記憶制御部」、及び、「要求受信部」が省略可能である。
【００８７】
（変形例７）ＰＣ１０は、ＵＳＢＩ／Ｆ１６及びネットワークＩ／Ｆ１８に代えて、ＷＦＤ（Wi-Fi Directの略）機能をサポートしているＷｉ−ＦｉＩ／Ｆを備えてもよい。この場合、ＰＣ１０は、ＷＦＤに従った通信をプリンタ５０と実行し、ＷＦＤではない通常のＷｉ−Ｆｉに従った通信を管理装置６０と実行してもよい。本変形例では、Ｗｉ−ＦｉＩ／Ｆが「第１の通信インターフェース」及び「第２の通信インターフェース」の一例であり、ＷＦＤ、通常のＷｉ−Ｆｉが、それぞれ、「第１の通信規格」、「第２の通信規格」の一例である。また、別の変形例では、ＰＣ１０は、ＵＳＢＩ／Ｆ１６に代えて、ＢＴ（Bluetooth（登録商標）の略）Ｉ／Ｆを備えてもよく、ＢＴＩ／Ｆを介して、プリンタ５０との通信を実行してもよい。本変形例では、ＢＴＩ／Ｆが、「第１の通信インターフェース」の一例であり、ＢＴが、「第１の通信規格」の一例である。
【００８８】
（変形例８）「プリンタ」は、印刷機能を備えるあらゆる装置を含み、例えば、スキャン機能をさらに備える多機能機を含む。
【００８９】
（変形例９）上記の各実施例では、図４〜図１２の各処理がソフトウェア（即ち各プログラム３６、３８、４８）によって実現されるが、これらの各処理のうちの少なくとも１つが論理回路等のハードウェアによって実現されてもよい。
【００９０】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００９１】
２：通信システム、１０：ＰＣ、１２：操作部、１４：表示部、１６：ＵＳＢＩ／Ｆ、１８：ネットワークＩ／Ｆ、３０：制御部、３２：ＣＰＵ、３４：メモリ、３６：ＯＳプログラム、３７：印刷スプーラ、３８：プリンタアプリケーション、４０：プリンタドライバ、４４：ＭＩＢ値リスト、４６：クリーニング時刻情報、４８：印刷ポート、４９：ポート記憶領域、５０，７０：プリンタ、６０：管理装置
【図１】
2019096156.tif 000003
【図２】
2019096156.tif 000004
【図３】
2019096156.tif 000005
【図４】
2019096156.tif 000006
【図５】
2019096156.tif 000007
【図６】
2019096156.tif 000008
【図７】
2019096156.tif 000009
【図８】
2019096156.tif 000010
【図９】
2019096156.tif 000011
【図１０】
2019096156.tif 000012
【図１１】
2019096156.tif 000013
【図１２】
2019096156.tif 000014