(57)【特許請求の範囲】
【請求項１】
印刷を実行する印刷装置に、ネットワーク上のクライアントからの印刷要求に応じて、印刷に利用される制御データを送信するネットワーク装置であって、
パケットを用いた通信プロトコルに従って前記制御データを送信する第１プロトコル処理部を有し、
前記印刷装置は、前記通信プロトコルに従って前記制御データを受信する第２プロトコル処理部を有し、
前記第１プロトコル処理部は、データ転送用のクレジットの取得モードとして、
（ｉ）クレジット要求を前記第２プロトコル処理部に送信することによってクレジットを取得する要求モードと、
（ｉｉ）クレジット要求の有無に拘わらずに前記第２プロトコル処理部によって自発的に前記第１プロトコル処理部に提供されたクレジットを取得する提供モードと、を有し、
前記第１プロトコル処理部は、前記第２プロトコル処理部に、前記提供モードで動作可能か否かを問い合わせるとともに、
前記提供モードで動作可能な場合には、前記提供モードによるクレジット取得を選択して実行し、
前記提供モードで動作できない場合には、前記要求モードによるクレジット取得を選択して実行する、
ネットワーク装置。
【請求項２】
請求項１に記載のネットワーク装置であって、
前記ネットワーク装置と前記印刷装置との間はＵＳＢで接続され、
前記ネットワーク装置がＵＳＢホストとして機能し、
前記印刷装置はＵＳＢデバイスとして機能し、
前記通信プロトコルは、下位層のプロトコルとしてＵＳＢプロトコルを利用する、
ネットワーク装置。
【請求項３】
ネットワーク上のクライアントからの印刷要求に応じて印刷を実行するネットワークプリンタであって、
請求項１または請求項２に記載のネットワーク装置と、前記印刷装置と、を備える、ネットワークプリンタ。
【請求項４】
印刷を実行する印刷装置と、ネットワーク上のクライアントからの印刷要求に応じて印刷に利用される制御データを前記印刷装置に送信するネットワーク装置と、を備えるネットワークプリンタの制御方法であって、
（Ａ）前記ネットワーク装置が、前記印刷装置からデータ転送用のクレジットを取得する処理を実行する工程を備え、
前記クレジットの取得処理は、
（ｉ）前記ネットワーク装置が、クレジット要求を前記印刷装置に送信することによってクレジットを取得する要求モードと、
（ｉｉ）前記ネットワーク装置が、クレジット要求の有無に拘わらずに前記印刷装置によって自発的に前記ネットワーク装置に提供されたクレジットを取得する提供モードと、を有し、
前記工程（Ａ）は、
（Ａ１）前記ネットワーク装置が、前記印刷装置に、前記提供モードで動作可能か否かを問い合わせる工程と、
（Ａ２）前記提供モードで動作可能な場合には、前記ネットワーク装置が、前記提供モードによるクレジット取得を選択して実行し、
前記提供モードで動作できない場合には、前記ネットワーク装置が、前記要求モードによるクレジット取得を選択して実行する工程と、を含む、
制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークプリンタにおけるデータ通信用クレジットの取得に関するものである。
【背景技術】
【０００２】
従来より、画像を印刷するプリンタシステムが用いられている。プリンタシステムの中には、ネットワークを介して印刷要求を受信するものがある（ネットワークプリンタとも呼ばれる）。ネットワークプリンタの中には、印刷を実行する印刷装置（以下「プリンタユニット」とも呼ぶ）と、ネットワークから受信した印刷要求（印刷データ）に応じて、印刷に利用される制御データを印刷装置に送信するネットワーク装置（以下「ネットワークユニット」とも呼ぶ）と、を有するものがある。ここで、ネットワーク装置と印刷装置との間のデータ通信に、パケット通信が利用される場合がある。パケット通信としては、例えば、クレジットに基づくパケット通信が知られている（例えば、特許文献１参照）。
【０００３】
【特許文献１】特開２０００−２３６３５１号公報
【０００４】
ところで、ネットワーク装置は、印刷装置に制御データを送信するために、印刷装置からクレジットを取得する。ここで、クレジット取得の方式としては、種々の方式を採用可能である。例えば、印刷装置にクレジット要求を送信することによってクレジットを取得する方式を採用可能である。また、クレジット要求を送信せずに、印刷装置によって自発的に提供されたクレジットを取得する方式を採用可能である。ここで、印刷装置が動作可能な方式として、印刷装置毎に適した方式が採用される場合が多い。ところが、このような種々の印刷装置をネットワークプリンタとして利用するためには、その印刷装置に適合したネットワーク装置を準備しなくてはならず、その設計・製作に多大な手間を要するという問題があった。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、上記の課題を解決するためになされたものであり、ネットワーク装置と印刷装置とを有するネットワークプリンタにおける、利用可能な印刷装置の構成の自由度を高めることのできる技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述の課題の少なくとも一部を解決するため、本発明の第１の態様は、印刷を実行する印刷装置に、ネットワーク上のクライアントからの印刷要求に応じて、印刷に利用される制御データを送信するネットワーク装置であって、パケットを用いた通信プロトコルに従って前記制御データを送信する第１プロトコル処理部を有し、前記印刷装置は、前記通信プロトコルに従って前記制御データを受信する第２プロトコル処理部を有し、前記第１プロトコル処理部は、データ転送用のクレジットの取得モードとして、（ｉ）クレジット要求を前記第２プロトコル処理部に送信することによってクレジットを取得する要求モードと、（ｉｉ）クレジット要求の有無に拘わらずに前記第２プロトコル処理部によって自発的に前記第１プロトコル処理部に提供されたクレジットを取得する提供モードと、を有し、前記第１プロトコル処理部は、前記第２プロトコル処理部に、前記提供モードで動作可能か否かを問い合わせるとともに、前記提供モードで動作可能な場合には、前記提供モードによるクレジット取得を選択して実行し、前記提供モードで動作できない場合には、前記要求モードによるクレジット取得を選択して実行する、ネットワーク装置を提供する。
【０００７】
このネットワーク装置によれば、第１プロトコル処理部は、印刷装置の第２プロトコル処理部に提供モードで動作可能か否かを問い合わせるとともに、提供モードで動作可能な場合には、提供モードによるクレジット取得を選択して実行し、提供モードで動作できない場合には、要求モードによるクレジット取得を選択して実行するので、ネットワークプリンタにおける利用可能な印刷装置の構成の自由度を高めることができる。
【０００８】
上記ネットワーク装置において、前記ネットワーク装置と前記印刷装置との間はＵＳＢで接続され、前記ネットワーク装置がＵＳＢホストとして機能し、前記印刷装置はＵＳＢデバイスとして機能し、前記通信プロトコルは、下位層のプロトコルとしてＵＳＢプロトコルを利用することとしてもよい。
【０００９】
この構成によれば、一般的なパーソナルコンピュータにＵＳＢを用いて接続されるプリンタを、印刷装置として利用することができる。
【００１０】
また、第２の態様は、ネットワーク上のクライアントからの印刷要求に応じて印刷を実行するネットワークプリンタであって、上記第１の態様のネットワーク装置と、前記印刷装置と、を備える、ネットワークプリンタを提供する。
【００１１】
なお、本発明は、種々の形態で実現することが可能であり、例えば、ネットワークプリンタ用のネットワーク装置、ネットワーク装置と印刷装置とを有するネットワークプリンタ、それらの装置の制御方法及び制御装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の形態で実現することができる。
【発明を実施するための最良の形態】
【００１２】
次に、この発明の実施の形態を実施例に基づいて以下の順序で説明する。
Ａ．実施例：
Ｂ．変形例：
【００１３】
Ａ．実施例：
図１は、本発明の実施例を適用するネットワークシステムの構成を示す概略図である。このネットワークシステム１０は、パーソナルコンピュータ１００とネットワークプリンタ２００とがＬＡＮを介して相互に接続された構成を有している。ＬＡＮは、ＩＥＥＥ８０２．３のような有線ネットワークでも、ＩＥＥＥ８０２．１１ｂ／ｇ／ａなどの無線ネットワークでもよい。
【００１４】
パーソナルコンピュータ１００は、プリンタドライバ１００Ｄを用いて印刷画像の元となる元画像データを生成する。そして、パーソナルコンピュータ１００は、元画像データを含む印刷要求を、ＬＡＮを介してネットワークプリンタ２００に送信して、ネットワークプリンタ２００に印刷を実行させる。本実施例では、パーソナルコンピュータ１００は、ＬＰＲ（Line PRinter daemon protocol）を利用して、印刷要求をネットワークプリンタ２００に送信する。ただし、印刷要求の形式としては、ＬＰＲを利用する形式に限らず、他の任意の形式を採用可能である。
【００１５】
また、元画像データの形式としては任意の形式を採用可能である。例えば、ＰＤＬ（Page Description Language：ページ記述言語）で記述されたＰＤＬデータを採用してもよい。また、ＪＰＥＧデータやＴＩＦＦデータといった画像データを採用してもよい。また、ＸＨＴＭＬ（eXtensible HyperText Markup Language）で記述されたＸＨＴＭＬデータを採用してもよい。
【００１６】
ネットワークプリンタ２００は、ネットワークユニット３００と、プリンタユニット４００と、を有している。ネットワークユニット３００は、ＬＡＮ上の他の装置とプリンタユニット４００との間で交換されるデータ（例えば、元画像データ）を仲介する。プリンタユニット４００は、受信した元画像データに従って印刷を実行する。ネットワークユニット３００とプリンタユニット４００との間は、ＵＳＢ（Universal Serial Bus）で接続されている。但し、両者の間をＵＳＢ以外の他の物理的インタフェースで接続することも可能である。
【００１７】
ネットワークユニット３００は、中央制御部（ＣＰＵ）３１０と、ＲＡＭ３２０と、ＲＯＭ３３０と、ネットワーク制御部３４０と、ＵＳＢホスト制御部３５０とを有している。図１の例では、ネットワーク制御部３４０は、コネクタ３４２を介して有線ネットワークに接続される。ＵＳＢホスト制御部３５０は、ルートハブ３５２を有しており、ルートハブ３５２にはＵＳＢコネクタ３５４が設けられている。ＵＳＢコネクタ３５４は、ＵＳＢケーブルを介してプリンタユニット４００のＵＳＢコネクタ４６２に接続されている。
【００１８】
プリンタユニット４００は、中央制御部（ＣＰＵ）４１０と、ＲＡＭ４２０と、ＲＯＭ４３０と、印刷エンジン４４０と、ＵＳＢデバイス制御部４６０と、を有している。印刷エンジン４４０は、与えられた印刷データに応じて印刷を実行する印刷機構である。本実施例では、中央制御部４１０が、プリンタドライバ１００Ｄによって生成された元画像データを解析し、色変換やハーフトーン処理を実行して印刷データを作成し、この印刷データを印刷エンジン４４０に供給する。但し、中央制御部４１０の代わりに印刷エンジン４４０が色変換やハーフトーン処理の機能を有するように構成することも可能である。
【００１９】
図２は、ＲＯＭ３３０、４３０を中心としたネットワークプリンタ２００の構成を示すブロック図である。図２では、各構成要素が、データ通信の階層と同じ順番に並んで配置されている。ネットワークユニット３００のＲＯＭ３３０には、ＬＡＮからの印刷要求に応じてプリンタユニット４００に印刷を実行させるプリントサーバモジュール３３４が格納されている。このプリントサーバモジュール３３４は、ＬＡＮを介して受信した印刷要求に含まれる元画像データを、プリンタユニット４００に転送する。
【００２０】
プリントサーバモジュール３３４の下位には、ネットワークアーキテクチャの下位層と、ＵＳＢアーキテクチャの下位層とが存在する。ネットワークアーキテクチャの下位層としては、ネットワークモジュール３３２が設けられている。ネットワークモジュール３３２の下位には、ネットワーク制御部３４０が設けられている。ネットワークモジュール３３２は、比較的上位のプロトコル（例えば、ＴＣＰ（Transmission Control Protocol）やＩＰ（Internet Protocol））を解釈することによって、ＬＡＮを介したデータ通信を行う。ネットワーク制御部３４０は、比較的下位のプロトコル（例えば、Ｅｔｈｅｒｎｅｔ（登録商標））を解釈することによって、ＬＡＮを介したデータ通信を行う。
【００２１】
一方、プリントサーバモジュール３３４のＵＳＢアーキテクチャの下位層としては、Ｄ４プロトコル処理モジュール３３６が設けられている。このＤ４プロトコル処理モジュール３３６の下位には、ＵＳＢ制御モジュール３３８が設けられている。このＵＳＢ制御モジュール３３８の下位には、ＵＳＢホスト制御部３５０が設けられている。
【００２２】
Ｄ４プロトコル処理モジュール３３６は、いわゆる「Ｄ４プロトコル」に従ってデータ転送を行う。Ｄ４プロトコルとは、ＩＥＥＥ  Ｐ１２８４．４で規定された通信プロトコルである。このＤ４プロトコルでは、データの転送は、パケットを用いるとともに論理的なチャンネルを介して行われる。以下、ＩＥＥＥ  Ｐ１２８４．４で規定されたパケットのことを「Ｄ４パケット」とも呼ぶ。
【００２３】
ＵＳＢ制御モジュール３３８は、比較的上位のＵＳＢプロトコル（例えば、データ転送用のパイプ（Bulk OUT pipe）を用いた通信プロトコル）を解釈することによって、データ転送を行う。また、このＵＳＢ制御モジュール３３８は、ＵＳＢシステムソフトウェアと、ＵＳＢプリンタクラスのクライアントソフトウェアと、のそれぞれの機能を有している。
【００２４】
一方、ＵＳＢホスト制御部３５０は、比較的下位のＵＳＢプロトコル（例えば、電気信号のプロトコル）を解釈することによって、データ転送を行う。このＵＳＢホスト制御部３５０は、ＵＳＢホストコントローラ（ホスト側バスインターフェース）として機能する。
【００２５】
一方、プリンタユニット４００のＲＯＭ４３０には、印刷要求（元画像データ）に応じて印刷エンジン４４０に印刷データを供給するプリンタ機能モジュール４３４が格納されている。このプリンタ機能モジュール４３４の下位には、ＵＳＢアーキテクチャの下位層が存在する。ＵＳＢアーキテクチャの下位層としては、Ｄ４プロトコル処理モジュール４３６が設けられている。このＤ４プロトコル処理モジュール４３６の下位には、ＵＳＢ制御モジュール４３８が設けられている。このＵＳＢ制御モジュール４３８の下位には、ＵＳＢデバイス制御部４６０が設けられている。
【００２６】
Ｄ４プロトコル処理モジュール４３６は、Ｄ４プロトコル処理モジュール３３６と同様に、Ｄ４プロトコルに従ってデータ転送を行う。
【００２７】
ＵＳＢ制御モジュール４３８は、ＵＳＢ制御モジュール３３８と同様に、比較的上位のＵＳＢプロトコルに従ってデータ転送を行う。また、このＵＳＢ制御モジュール４３８は、ＵＳＢプリンタクラスのＵＳＢ論理デバイスと、ＵＳＢプリンタクラスのＵＳＢファンクションと、のそれぞれの機能を有している。
【００２８】
ＵＳＢデバイス制御部４６０は、ＵＳＢホスト制御部３５０と同様に、比較的下位のＵＳＢプロトコルを解釈することによって、データ転送を行う。このＵＳＢデバイス制御部４６０は、ＵＳＢバスインターフェースとして機能する。
【００２９】
なお、プリントサーバモジュール３３４がプリンタ機能モジュール４３４に元画像データを送信する際には、Ｄ４プロトコル処理モジュール３３６とＤ４プロトコル処理モジュール４３６とが、Ｄ４プロトコルに従ってデータ転送を行う。その下位層では、ＵＳＢ制御モジュール３３８とＵＳＢ制御モジュール４３８とが、ＵＳＢプロトコルに従ってデータ転送を行う。その下位層では、ＵＳＢホスト制御部３５０とＵＳＢデバイス制御部４６０とが、ＵＳＢプロトコルに従ってデータ転送を行う。
【００３０】
図２には、Ｄ４プロトコルの論理チャンネルｄｃｈが示されている。元画像データの転送は、この論理チャンネルｄｃｈを介して行われる。なお、論理チャンネルとしては、元画像データ用の論理チャンネルｄｃｈに限らず、任意の複数の論理チャンネルが設けられ得る。例えば、印刷エンジン４４０のステータス情報を送受信するためのチャンネルを設けることができる。このようなステータス情報は、ＳＮＭＰ等のプロトコルにより、ネットワークユニット３００からネットワーク上の他の装置（例えば、パーソナルコンピュータ１００）に対して提供され得る。
【００３１】
なお、論理チャンネルの識別情報は、Ｄ４パケットのヘッダに登録される（図示省略）。すなわち、Ｄ４プロトコル処理モジュール３３６、４３６は、Ｄ４パケットを送信する時には、そのＤ４パケットの論理チャンネルの識別情報をヘッダに登録する。また、Ｄ４プロトコル処理モジュール３３６、４３６は、Ｄ４パケットを受信する時には、受信したＤ４パケットのヘッダを参照することによって、そのＤ４パケットの論理チャンネルを特定する。
【００３２】
図３は、論理チャンネルｄｃｈにおけるクレジットの取得方式の一例の概要を示すシーケンス図である。Ｄ４プロトコルでは、転送データを含むＤ４パケット（以下「データパケット」とも呼ぶ）の転送制御にクレジットが利用される。クレジットを利用したデータ転送では、最初に、データの受信側（receiver）が、データの送信側（sender）に、受信可能なデータパケット数（「クレジット数」とも呼ばれる）を提供する。送信側は、提供されたクレジット数を限度として、データパケットを受信側に送信することができる。提供されたクレジット数は、パケット送信によって消費される。なお、このシーケンス図では、下位層（ＵＳＢ）での通信の図示が省略されている。
【００３３】
図３は、要求方式に従ったデータ転送の一例を示すシーケンス図である。このシーケンス図では、ネットワークユニット３００がプリンタユニット４００にデータ（例えば、元画像データ）を送信することと仮定している。最初のステップＳ３００では、ネットワークユニット３００が、外部から印刷要求を受信する。ネットワークユニット３００のＤ４プロトコル処理モジュール３３６（以下「ネットＤ４モジュール３３６」とも呼ぶ）は、この印刷要求に応じて、元画像データの送信前に、プリンタユニット４００にクレジット要求（Credit Request）を送信する（ステップＳ３１０）。プリンタユニット４００のＤ４プロトコル処理モジュール４３６（以下「プリンタＤ４モジュール４３６」とも呼ぶ）は、このクレジット要求に応じて、クレジット要求応答（Credit Request Reply）をネットワークユニット３００に返信する（ステップＳ３２０）。プリンタＤ４モジュール４３６は、この応答でクレジット数を指定する。このクレジット数は、プリンタユニット４００の動作状況（例えば、データ受信用バッファメモリの空き容量）に応じて設定される。図３の例では、ステップＳ３２０の応答では、クレジット数が「ゼロ」に設定されている。以後、ネットＤ４モジュール３３６は、１以上のクレジット数を指定した応答を受信するまで、クレジット要求の送信を繰り返す。そして、ネットＤ４モジュール３３６は、１以上のクレジット数を指定した応答に応じて、データパケットをプリンタユニット４００に送信する。ここで送信されるデータパケット数は、指定されたクレジット数に制限される。図３の例では、ステップＳ３３０のクレジット要求に対する応答で、クレジット数が１に設定されている（Ｓ３４０）。そこで、ネットＤ４モジュール３３６は、次のステップＳ３５０で、１つのデータパケットを送信する。以後、ネットＤ４モジュール３３６は、元画像データの転送が完了するまで、クレジット要求とデータ送信とを繰り返す。なお、一度に提供されるクレジット数は２以上であってもよい。
【００３４】
このように、データ送信側が、クレジット要求をデータ受信側に送信することによって、クレジットを取得する方式を「要求方式」と呼ぶ。この「要求方式」では、データ受信側は、クレジット要求に応じてクレジットを提供するが、自発的なクレジットの提供を行わない。
【００３５】
図４は、提供方式に従ったデータ転送の一例を示すシーケンス図である。図３に示すシーケンス図との差異は、プリンタＤ４モジュール４３６が、クレジット要求の有無に拘わらずに、自発的にクレジットを提供する点である。
【００３６】
最初のステップＳ４００Ａでは、ネットワークユニット３００が、外部から印刷要求を受信する。ただし、提供方式では、ネットＤ４モジュール３３６は、自発的なクレジット要求を行わずに、クレジットが提供されるまで待機する。図４の例では、次のステップＳ４１０で、プリンタＤ４モジュール４３６が、自発的にクレジットを提供する。ここで、プリンタＤ４モジュール４３６は、１以上のクレジット数を指定する。図４の例では、ステップＳ４１０のクレジット提供で、クレジット数が「１」に設定されている。なお、クレジット提供の契機としては、任意のものを採用可能である。例えば、プリンタユニット４００のデータ受信用バッファメモリの空き容量が十分に大きくなったことを契機として用いることができる。このような、データ受信用バッファメモリとしては、任意のメモリを利用可能であり、例えば、ＲＡＭ４２０（図１）の一部の領域を用いることができる。
【００３７】
ネットＤ４モジュール３３６は、クレジット提供に応じて、クレジット提供を受信したことを示すクレジット提供応答を返信する（ステップＳ４２０）。そして、ネットＤ４モジュール３３６は、クレジット提供に応じて、データパケットをプリンタユニット４００に送信する（ステップＳ４３０）。ここで送信されるデータパケット数は、指定されたクレジット数に制限される。以後、ネットＤ４モジュール３３６は、元画像データの転送が完了するまで、クレジットが提供されるまでの待機と、クレジット提供に応じたデータ送信と、を繰り返す。
【００３８】
このように、データ送信側からのクレジット要求の有無に拘わらずに、データ受信側によって自発的に提供されたクレジットを取得する方式を「提供方式」と呼ぶ。この「提供方式」では、データ送信側は、自発的なクレジット要求を行わない。
【００３９】
図５は、提供方式に従ったデータ転送の別の例を示すシーケンス図である。図４に示す例との差異は、ネットワークユニット３００が印刷要求を受信するタイミング（Ｓ４００Ｂ）が、クレジット提供（Ｓ４１０）の後である点だけである。この場合には、ネットワークユニット３００は、印刷要求を受信した時点には、既にクレジットの提供を受けているので、待ち時間無しで、データパケットを送信することができる（Ｓ４３０）。提供済みのクレジットが不足している場合には、ネットワークユニット３００は、再びクレジットが提供されることを待ち、クレジット提供に応じてデータパケットを送信する（ステップＳ４４０、Ｓ４５０、Ｓ４６０）。以後、ネットワークユニット３００は、元画像データの転送が完了するまで、クレジットが提供されるまでの待機と、クレジット提供に応じたデータ送信と、を繰り返す。
【００４０】
以上のように、要求方式（図３）では、送信側（ネットＤ４モジュール３３６）は、データを送信しようとする時に、送信前にクレジットを要求する。受信側（プリンタＤ４モジュール４３６）は、クレジット要求に応じてクレジットを提供する。このように、要求方式では、簡単な方法でクレジットが取得されるので、送信側と受信側との構成を簡素化することができる。ただし、受信側がクレジットを提供できない状態で送信側がデータを送信しようとする場合には、送信側は、クレジットが提供されるまで、クレジット要求を繰り返し送信する。
【００４１】
一方、提供方式（図４、図５）では、受信側は、クレジット要求の有無に拘わらずに自発的にクレジットを提供する。一方、送信側は、自発的なクレジット要求を送信しない。その結果、受信側がクレジットを提供できない状態で送信側がデータを送信しようとする場合であっても、クレジット要求が繰り返し送信されることが防止される。また、受信側は、クレジットの提供が可能な場合には、送信側がデータ送信の要求（例えば、印刷要求）を受ける前に、予めクレジットを提供することができる。その結果、クレジットの提供が通信負荷の低い状態で行われ得る。このように、提供方式は、要求方式と比べて、通信負荷を抑制できる点で好ましい。
【００４２】
ところで、図１の例では、ネットワークユニット３００とプリンタユニット４００との接続にＵＳＢが用いられている。この理由は、一般的なパーソナルコンピュータにＵＳＢを用いて接続されるプリンタを、プリンタユニット４００として利用するためである。このように、接続インターフェースとして、パーソナルコンピュータとの接続インターフェースと同じもの（この例ではＵＳＢ）を用いれば、パーソナルコンピュータ用のプリンタを、容易に、プリンタユニット４００として用いることができる。この際、パーソナルコンピュータ用プリンタのＵＳＢよりも上位の層の構成（例えば、図２のプリンタＤ４モジュール４３６とプリンタ機能モジュール４３４とに相当する部分の構成）をそのまま利用できるように、ネットワークユニット３００を構成することが好ましい。
【００４３】
なお、パーソナルコンピュータとプリンタとの間の通信では、しばしば「要求方式」が採用される。この理由は以下の通りである。ＵＳＢプロトコルでは、データ転送のスケジュールは、ＵＳＢホストによって管理される。ＵＳＢデバイスがＵＳＢホストにデータを送信する場合も、ＵＳＢデバイスは、自発的にデータをＵＳＢホストに送信することができない。この代わりに、ＵＳＢデバイスは、ＵＳＢホストからのいわゆる「ＩＮトークン」を受信して初めてデータをＵＳＢホストに送信することができる。ＵＳＢホストによる「ＩＮトークン」の発行頻度は、通常は、ＵＳＢデバイスの要求に応じて設定される。
【００４４】
ここで、パーソナルコンピュータとプリンタとの間の通信に提供方式（図４、図５）を適用すると仮定する。ＵＳＢデバイス（プリンタ）による自発的なクレジット提供を実現するためには、ＵＳＢホスト（パーソナルコンピュータ）は、頻繁に「ＩＮトークン」をＵＳＢデバイスに送信する。すなわち、パーソナルコンピュータは、プリンタを利用していない状態であっても、プリンタに「ＩＮトークン」を送信し続けることになる。ここで、パーソナルコンピュータが、プリンタの利用とは異なる他の処理（例えば、アプリケーションの実行）を実行している場合には、利用していないプリンタのための「ＩＮトークン」送信の負荷によって、他の処理の効率が低下する可能性がある。
【００４５】
一方、図３に示す要求方式のように、ＵＳＢホスト側のネットＤ４モジュール３３６が自発的にクレジット要求を行う場合には、ＵＳＢホストは必要に応じていわゆる「ＯＵＴトークン」をＵＳＢデバイスに送信すればよい。ここで、パーソナルコンピュータとプリンタとの間の通信に提供方式を適用すると仮定する。すると、パーソナルコンピュータは、プリンタを利用していない状態においては、プリンタに「ＩＮトークン」と「ＯＵＴトークン」とを送信する必要がない。従って、利用していないプリンタに起因して、他の処理の効率が低下することを抑制できる。
【００４６】
以上のように、プリンタを利用していない場合のパーソナルコンピュータの負荷が大きくなることを抑制するために、パーソナルコンピュータとプリンタとの間の通信では、しばしば「要求方式」が採用される。
【００４７】
ところで、「ＩＮトークン」用のＵＳＢプロトコルパケットのデータ量は、「クレジット要求」等の上位層データ用のＵＳＢプロトコルパケットのデータ量と比べて、小さい。従って、「ＩＮトークン」が繰り返し送受信される「提供方式」の通信負荷は、「クレジット要求」が繰り返し送受信される「要求方式」の通信負荷と比べて小さい。一方、ネットワークプリンタ２００のネットワークユニット３００に関しては、プリンタの利用とは異なる他の処理の効率低下が問題となる場合が少ない。従って、ネットワークユニット３００とプリンタユニット４００との通信では、「提供方式」が採用されることが好ましい。
【００４８】
なお、ネットワークユニット３００に接続されるプリンタユニット４００の中には、パーソナルコンピュータ用プリンタのように「提供方式」には対応せずに「要求方式」に対応しているものと、「提供方式」に対応しているものとが、あり得る。そこで、本実施例では、ネットＤ４モジュール３３６は、接続されているネットワークユニット３００に合わせて、「提供方式」と「要求方式」とのいずれかを選択する。
【００４９】
図６は、クレジット取得方式の選択処理の手順を示すフローチャートである。最初のステップＳ６００では、ネットＤ４モジュール３３６（図２）は、プリンタＤ４モジュール４３６に、「提供方式」で動作可能か否かを問い合わせる。「提供方式」での動作が可能である場合には、ネットＤ４モジュール３３６は、ステップＳ６１０に移行して、「提供方式」によるクレジット取得を選択して実行する。「提供方式」での動作ができない場合には、ネットＤ４モジュール３３６は、ステップＳ６２０に移行して、「要求方式」によるクレジット取得を選択して実行する。
【００５０】
図７は、「提供方式」に対応していないプリンタユニット４００を用いる場合のデータ転送の一例を示すシーケンス図である。この場合には、ネットＤ４モジュール３３６は、「要求方式」によるクレジット取得を選択して実行する。なお、図７のシーケンス図には、図３のシーケンス図と比べて、ネットＤ４モジュール３３６とプリンタＤ４モジュール４３６との間でやりとりされるデータ（コマンド）がより詳細に示されている。
【００５１】
なお、Ｄ４プロトコルでは、元画像データのような転送データに限らず、コマンドと、その応答も、Ｄ４パケットを用いて送受信される。ただし、このようなコマンドパケットと応答パケットとは、データ転送用の論理チャンネルｄｃｈとは異なる所定の論理チャンネル（図示せず）を用いて転送される。
【００５２】
最初のステップＳ２００では、ネットＤ４モジュール３３６は、オープンチャンネル（Open Channel）コマンドを、プリンタＤ４モジュール４３６に送信する。このコマンドは、論理チャンネルｄｃｈ（図２）をオープンするために送信される。このようなオープンチャンネルコマンドは、任意のタイミングで発行され得る。例えば、ネットワークプリンタ２００の起動時に発行されることとしてもよい。また、印刷要求に応じて発行されることとしてもよい。以下、印刷要求に応じて図７の処理が実行されると仮定して説明を行う。
【００５３】
オープンチャンネルコマンドは、以下の２つのパラメータを含んでいる。
（１）要求クレジット数（Credit Requested。以下「C.R.」とも呼ぶ）
（２）最大保持クレジット数（Maximum Outstanding Credit。以下「M.O.C.」とも呼ぶ）
「C.R.」は、送信側によって新規に要求されるクレジット数に設定される。クレジットが要求されない場合には「０ｘ００００」に設定される。ここで、プレフィックス「０ｘ」は１６進数を意味している（後述する他のパラメータについても同じ）。「M.O.C.」は、送信側が保持を要求するクレジット数に設定される。クレジットが要求されない場合には「０ｘ００００」に設定される。ステップＳ２００のコマンドでは、両方のパラメータが「０ｘ００００」に設定されている。このようなパラメータ設定は、クレジットを要求しないことを意味している。このようなオープンチャンネルコマンドが発行された場合には、データ受信側は、データ送信側から要求があるまでクレジットを提供しない。なお、このようなパラメータ設定が受信側に受け入れられた論理チャンネルｄｃｈの状態は「クレジット無しモード（No Credit Mode）」とも呼ばれる。
【００５４】
次のステップＳ２１０では、プリンタＤ４モジュール４３６が、オープンチャンネル応答（Open Channel Reply）を、ネットＤ４モジュール３３６に返信する。この応答は、オープンチャンネルコマンドの結果と、提供されたクレジット数と、を含んでいる。図７のステップＳ２１０では、結果は成功（ＯＫ）であり、クレジット数は「０」である。
【００５５】
次のステップＳ２２０では、ネットＤ４モジュール３３６は、クレジット要求（Credit Request）コマンドを、プリンタＤ４モジュール４３６に送信する。このコマンドも、オープンチャンネルコマンドと同様に、「C.R.」と「M.O.C.」とを含んでいる。ステップＳ２２０のクレジット要求では、両方のパラメータが最大値（０ｘＦＦＦＦ）に設定されている。このようなパラメータ設定は、できるだけ早く、できるだけ多くのクレジットを提供し続けることをデータ受信側に要求することを意味している。本実施例では、このようなパラメータ設定は、「提供方式」に従った動作の要求を意味している。なお、このようなパラメータ設定が受信側に受け入れられた論理チャンネルｄｃｈの状態は「無制限クレジットモード（Unlimited Credit Mode）」とも呼ばれる。
【００５６】
次のステップＳ２３０では、プリンタＤ４モジュール４３６が、クレジット要求応答（Credit Request Reply）を、ネットＤ４モジュール３３６に返信する。この応答は、クレジットリクエストの結果を含んでいる。図７の例では、プリンタＤ４モジュール４３６は「提供方式」に対応していないので、結果は失敗（ＮＧ）に設定されている。このように、プリンタＤ４モジュール４３６は、「提供方式」に対応していない場合には、対応していないことを示す応答を、ネットＤ４モジュール３３６に返信する。
【００５７】
ネットＤ４モジュール３３６は、プリンタＤ４モジュール４３６から「提供方式」に従ったクレジット提供に対応していないことを示す応答を受信したら、「要求方式」に従って動作する。
【００５８】
次のステップＳ２４０では、ネットＤ４モジュール３３６は、「要求方式」に従ったクレジット要求コマンドを、プリンタＤ４モジュール４３６に送信する。このステップＳ２４０でのクレジット要求では、「C.R.」が「０ｘ００００」よりも大きく、最大値（０ｘＦＦＦＦ）未満の値に設定されている。「M.O.C.」は最大値（０ｘＦＦＦＦ）に設定されている。このようなパラメータ設定は、「C.R.」で指定された数のクレジットをデータ受信側に要求することを意味している。本実施例では、このようなパラメータ設定は、「要求方式」に従ったクレジット要求を意味している。なお、このようなパラメータ設定が受信側に受け入れられた論理チャンネルｄｃｈの状態は「制限クレジットモード（Limited Credit Mode）」とも呼ばれる。
【００５９】
次のステップＳ２５０では、プリンタＤ４モジュール４３６が、クレジット要求応答を、ネットＤ４モジュール３３６に返信する。この応答は、クレジットリクエストの結果と、提供されたクレジット数と、を含んでいる。図７の例では、プリンタＤ４モジュール４３６は「要求方式」に対応しているので、結果が成功（ＯＫ）に設定されている。ただし、この段階では「クレジット」は「０」に設定されている。
【００６０】
以後、ネットＤ４モジュール３３６は、１以上のクレジット提供があるまで、ステップＳ２４０と同様のクレジット要求コマンドを繰り返し送信する。そして、ネットＤ４モジュール３３６は、１以上のクレジット提供に応じて、データパケットをプリンタＤ４モジュール４３６に送信する。図７の例では、ステップＳ２６０のクレジット要求に対する応答で、１つのクレジットが提供されている（Ｓ２７０）。そこで、ネットＤ４モジュール３３６は、次のステップＳ２８０で、１つのデータパケットを送信する。以後、ネットＤ４モジュール３３６は、データの転送が完了するまで、クレジット要求とデータ送信とを繰り返す。
【００６１】
以上のように、ネットＤ４モジュール３３６は、プリンタＤ４モジュール４３６に「提供方式」に対応しているか否かを問い合わせるとともに（図７：Ｓ２２０）、「提供方式」に従ったクレジット提供に対応していないことを示す応答を受信したら、「要求方式」に従って動作する。
【００６２】
図８は、データ転送の別の例を示すシーケンス図である。図７のシーケンス図との差違は、このシーケンス図が、プリンタユニット４００が「提供方式」に対応している場合を示している点である。この場合には、ネットＤ４モジュール３３６は、「提供方式」によるクレジット取得を選択して実行する。なお、図８のシーケンス図には、図４と図５とのシーケンス図と比べて、ネットＤ４モジュール３３６とプリンタＤ４モジュール４３６との間でやりとりされるデータ（コマンド）がより詳細に示されている。
【００６３】
最初のステップＳ１００、Ｓ１１０、Ｓ１２０は、図７のステップＳ２００、Ｓ２１０、Ｓ２２０と、それぞれ同じである。
【００６４】
次のステップＳ１３０では、プリンタＤ４モジュール４３６が、クレジット要求応答を、ネットＤ４モジュール３３６に返信する。図８の例では、プリンタＤ４モジュール４３６は「提供方式」に対応しているので、結果は成功（ＯＫ）に設定されている。このように、プリンタＤ４モジュール４３６は、「提供方式」に対応している場合には、対応していることを示す応答を、ネットＤ４モジュール３３６に返信する。
【００６５】
ネットＤ４モジュール３３６は、プリンタＤ４モジュール４３６から「提供方式」に従ったクレジット提供に対応していることを示す応答を受信したら、「提供方式」に従って動作する。具体的には、ネットＤ４モジュール３３６は、クレジット要求を送信せずに、プリンタＤ４モジュール４３６からの自発的なクレジット提供を待つ。そして、ネットＤ４モジュール３３６は、クレジット提供に応じてデータパケットを送信する。
【００６６】
図８の例では、次のステップＳ１４０で、プリンタＤ４モジュール４３６がクレジットコマンドを送信している。このコマンドは、データ送信側にクレジットを提供するためのコマンドである。このクレジットコマンドは、提供されるクレジット数を含んでいる。ステップＳ１４０のクレジットコマンドでは、クレジットが「１」に設定されている。このクレジットコマンドを受信したネットＤ４モジュール３３６は、クレジットコマンドを受け入れたことを示すクレジット応答（Credit Reply）をプリンタＤ４モジュール４３６に送信し（ステップＳ１５０）、次のステップＳ１６０で、１つのデータパケットを送信する。以後、ネットＤ４モジュール３３６は、データの転送が完了するまで、クレジットの提供までの待機と、クレジット提供に応じたデータ送信とを繰り返す。
【００６７】
このように、ネットＤ４モジュール３３６は、プリンタＤ４モジュール４３６に「提供方式」に対応しているか否かを問い合わせるとともに（図８：Ｓ１２０）、「提供方式」に従ったクレジット提供に対応していることを示す応答を受信したら、「提供方式」に従って動作する。
【００６８】
以上のように、本実施例では、ネットＤ４モジュール３３６は、プリンタＤ４モジュール４３６に、「提供方式」での動作が可能であるか否かを問い合わせるとともに、「提供方式」で動作可能である場合には、「提供方式」によるクレジット取得を選択して実行し、「提供方式」で動作できない場合には、「要求方式」によるクレジット取得を選択して実行する。従って、ネットワークユニット３００は、「提供方式」に対応したプリンタユニットと、「提供方式」には対応せずに「要求方式」に対応したプリンタユニットとの、それぞれに対して適切なクレジット取得方式で動作することができる。その結果、利用可能なプリンタユニットの構成の自由度を高めることが可能となる。
【００６９】
また、本実施例では、ネットワークユニット３００とプリンタユニット４００との間がＵＳＢで接続されている。このように、接続インターフェースとして、パーソナルコンピュータとプリンタとの間の接続インターフェースとしてしばしば利用されるＵＳＢを採用すれば、パーソナルコンピュータ用のプリンタを容易にプリンタユニット４００として利用することが可能となる。また、特にこの場合には、プリンタの中には「提供方式」に対応せずに「要求方式」に対応しているものが多い。ただし、ネットワークユニット３００はプリンタユニットに合わせて「提供方式」と「要求方式」との一方を選択可能であるので、このようなプリンタを容易にプリンタユニット４００として利用できる。
【００７０】
Ｂ．変形例：
なお、上記各実施例における構成要素の中の、独立クレームでクレームされた要素以外の要素は、付加的な要素であり、適宜省略可能である。また、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【００７１】
変形例１：
上記各実施例において、プリンタユニット４００（プリンタＤ４モジュール４３６）による「提供方式」での動作が可能であるか否かの問い合わせ方法としては、クレジットリクエストコマンド（図７：Ｓ２２０、図８：Ｓ１２０）を用いる方法に限らず、任意の方法を採用可能である。例えば、オープンチャンネルコマンド（図７：Ｓ２００、図８：Ｓ１００）を用いて問い合わせる方法を採用してもよい。この場合には、ネットＤ４モジュール３３６は、オープンチャンネルコマンドにおいて、「C.R.」と「M.O.C.」との両方のパラメータを最大値（０ｘＦＦＦＦ）に設定すればよい。
【００７２】
同様に、このような問い合わせに対する応答方法としては、クレジットリクエスト応答（図７：Ｓ２３０、図８：Ｓ１３０）を用いる方法に限らず、任意の方法を採用可能である。例えば、上述のようなオープンチャンネルコマンドを用いた問い合わせに対しては、オープンチャンネル応答（図７：Ｓ２１０、図８：Ｓ１１０）を用いて応答する方法を採用可能である。この場合には、プリンタＤ４モジュール４３６は、「提供方式」に対応している場合には、結果が成功（ＯＫ）であるオープンチャンネル応答を返信すればよく、また、「提供方式」に対応していない場合には、結果が失敗（ＮＧ）であるオープンチャンネル応答を返信すればよい。
【００７３】
変形例２：
上記各実施例において、プリンタユニット４００が「提供方式」に対応しているか否かに関する問い合わせのタイミングとしては、データ転送前の任意のタイミングを採用可能である。例えば、ネットＤ４モジュール３３６が、ネットワークプリンタ２００の起動後に、印刷要求の有無に拘わらずに問い合わせることとしてもよい。また、ネットＤ４モジュール３３６は、一度問い合わせをした後は、再度の問い合わせをせずに、問い合わせの応答に応じて選択されたクレジット取得方式を継続して利用することが好ましい。ここで、ネットワークユニット３００に不揮発性メモリ（図示せず）を設け、ネットＤ４モジュール３３６が、不揮発性メモリに選択結果を格納してもよい。こうすれば、ネットＤ４モジュール３３６は、ネットワークプリンタ２００が再起動された場合にも、問い合わせをせずに、不揮発性メモリに格納された適切なクレジット取得方式で動作することができる。
【００７４】
また、上記各実施例において、ネットワークプリンタ２００のユーザが、プリンタユニット４００を他のプリンタユニットに交換できる構成を採用してもよい。このような構成としては、例えば、図１のＵＳＢコネクタ４６２が着脱可能である構成を採用可能である。ここで、ネットＤ４モジュール３３６は、ネットワークユニット３００にプリンタユニット４００が接続される毎に、問い合わせを行うことが好ましい。こうすれば、ネットＤ４モジュール３３６は、プリンタユニット４００が他の種類のプリンタユニットに交換された場合でも、適切なクレジット取得方式で動作することができる。
【００７５】
変形例３：
上記各実施例において、ネットワークプリンタ２００によって受信される印刷要求の形式としては、ＬＰＲを利用する形式に限らず、任意の形式を採用可能である。例えば、ネットワークプリンタ２００をＵＰｎＰ（Universal Plug and Play。UPnPは、UPnP Implementers Corporationの商標）対応のネットワーク装置として構成することも可能である。このような構成としては、例えば、以下の構成を採用可能である。ネットワークユニット３００は、ＬＡＮ上の他の装置（例えば、パーソナルコンピュータ１００）からＵＰｎＰのプロトコルに従った印刷用のメッセージを受信する。さらに、ネットワークユニット３００は、このメッセージをプリンタユニット４００に転送する。プリンタユニット４００は、受信したメッセージに従って印刷を実行する。ここで、ネットＤ４モジュール３３６とプリンタＤ４モジュール４３６とは、印刷用のメッセージを送受信する。
【００７６】
変形例４：
上記各実施例において、ネットＤ４モジュール３３６とプリンタＤ４モジュール４３６との間でクレジットに従って送受信されるデータとしては、元画像データや印刷用のメッセージに限らず、プリンタユニット４００による印刷の制御に利用される任意の制御データを採用可能である。
【００７７】
変形例５：
上記各実施例では、Ｄ４プロトコルが利用されているが、Ｄ４プロトコルに限らず、クレジットに従ってデータパケットの転送が行われる任意の通信プロトコルに、本発明を適用することができる。
【００７８】
変形例６：
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。例えば、図２のＵＳＢ制御モジュール３３８の機能を、論理回路を有するハードウェア回路によって実現することとしてもよい。
【００７９】
なお、本発明の機能の一部または全部がソフトウェアで実現される場合には、そのソフトウェア（コンピュータプログラム）は、コンピュータ読み取り可能な記録媒体に格納された形で提供することができる。この発明において、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスクやＣＤ−ＲＯＭのような携帯型の記録媒体に限らず、各種のＲＡＭやＲＯＭ等のコンピュータ内の内部記憶装置や、ハードディスク等のコンピュータに固定されている外部記憶装置も含んでいる。
【図面の簡単な説明】
【００８０】
【図１】本発明の実施例を適用するネットワークシステムの構成を示す概略図である。
【図２】ＲＯＭ３３０４３０を中心としたネットワークプリンタ２００の構成を示すブロック図である。
【図３】論理チャンネルｄｃｈにおけるクレジットの取得方式の一例の概要を示すシーケンス図である。
【図４】提供方式に従ったデータ転送の一例を示すシーケンス図である。
【図５】提供方式に従ったデータ転送の別の例を示すシーケンス図である。
【図６】クレジット取得方式の選択処理の手順を示すフローチャートである。
【図７】「提供方式」に対応していないプリンタユニット４００を用いる場合のデータ転送の一例を示すシーケンス図である。
【図８】データ転送の別の例を示すシーケンス図である。
【符号の説明】
【００８１】
１０…ネットワークシステム
１００…パーソナルコンピュータ
１００Ｄ…プリンタドライバ
２００…ネットワークプリンタ
３００…ネットワークユニット
３２０…ＲＡＭ
３３０…ＲＯＭ
３３２…ネットワークモジュール
３３４…プリントサーバモジュール
３３６…Ｄ４プロトコル処理モジュール（ネットＤ４モジュール）
３３８…ＵＳＢ制御モジュール
３４０…ネットワーク制御部
３４２…コネクタ
３５０…ＵＳＢホスト制御部
３５２…ルートハブ
３５４…ＵＳＢコネクタ
４００…プリンタユニット
４１０…中央制御部
４２０…ＲＡＭ
４３０…ＲＯＭ
４３４…プリンタ機能モジュール
４３６…Ｄ４プロトコル処理モジュール（プリンタＤ４モジュール）
４３８…ＵＳＢ制御モジュール
４４０…印刷エンジン
４６０…ＵＳＢデバイス制御部
４６２…ＵＳＢコネクタ
【図１】
0004665705.tif 000002
【図２】
0004665705.tif 000003
【図３】
0004665705.tif 000004
【図４】
0004665705.tif 000005
【図５】
0004665705.tif 000006
【図６】
0004665705.tif 000007
【図７】
0004665705.tif 000008
【図８】
0004665705.tif 000009