(57)【特許請求の範囲】
【請求項１】
ＵＳＢ（Universal Serial BUS）インターフェイスを備えていて、ホストコンピュータと通信可能に接続できるプリンタにおいて、
本プリンタと接続されている他のプリンタについてＵＳＢのシステム上でのアドレスと実際のアドレスとを対応付けて登録している第１のテーブルと、
前記ホストコンピュータから前記他のプリンタに対して前記ＵＳＢのシステム上でのアドレスを指定して行なわれた印刷要求を受付ける受付手段と、
この印刷要求があったときは、前記第１のテーブルを参照して当該ＵＳＢのシステム上でのアドレスを実際のアドレスに変換し当該アドレスが示す前記他のプリンタに前記印刷要求を実行させる印刷手段と、
を備えていることを特徴とするプリンタ。
【請求項２】
前記第１のテーブルに代えて、
ＵＳＢのシステム上でのアドレスと、本プリンタと接続されＵＳＢインターフェイスを備えていない複数の他のプリンタをグループ化して当該各グループを識別するプリンタグループとを対応付けて登録している第２のテーブルと、
前記各プリンタグループと当該プリンタグループが識別する前記各グループに所属する前記他のプリンタにおける実際のアドレスとを対応付けて登録している第３のテーブルと、
を備えていて、
前記印刷手段は、前記ホストコンピュータから前記他のプリンタに対して前記ＵＳＢのシステム上でのアドレスを指定して印刷要求があったときは、前記第２及び第３のテーブルを参照して、当該ＵＳＢのシステム上でのアドレスに対応しているグループに所属する前記他のプリンタに前記印刷要求を実行させること、を特徴とする請求項１に記載のプリンタ。
【請求項３】
前記印刷手段は、前記ホストコンピュータから前記他のプリンタに対して前記ＵＳＢのシステム上でのアドレスを指定して印刷要求があったときは、前記第２及び第３のテーブルを参照して、当該ＵＳＢのシステム上でのアドレスに対応しているグループに所属する他のプリンタに印刷の実行が可能か否か問い合わせ、印刷可能な他のプリンタに対して前記印刷要求を実行させること、
を特徴とする請求項２に記載のプリンタ。
【請求項４】
前記印刷可能な他のプリンタに対して前記印刷要求を実行させるときは、実際にどのプリンタに前記印刷要求を実行させたかを前記ホストコンピュータに通知する通知手段を備えていること、
を特徴とする請求項３に記載のプリンタ。
【請求項５】
前記ホストコンピュータから前記グループの構成の変更要求を受付けて、その要求にしたがって前記第２及び第３のテーブルの登録の内容を変更する変更手段を備えていること、
を特徴とする請求項２又は３に記載のプリンタ。
【請求項６】
互いに接続された複数台のプリンタとホストコンピュータとを接続して構成されるプリンタシステムにおいて、
前記複数台のプリンタのうち少なくとも一台は請求項１〜５の何れかの一に記載のプリンタであること、
を特徴とするプリンタシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ＵＳＢインターフェイスを備えたプリンタ及びこのプリンタを備えたプリンタシステムに関する。
【０００２】
【従来の技術】
ネットワーク技術の進歩や処理高速化のニーズにより、負荷分散や並列処理による高速化を主目的として、複数のプリンタを相互接続してひとつのプリンタシステムを構築し、特定のホストＰＣ（パーソナルコンピュータ）やサーバから制御を行なうようにしたプリンタシステムが利用されている。
【０００３】
一方、ホストＰＣと周辺機器とを接続するインターフェイス（以下、単に「Ｉ／Ｆ」という）については、ＵＳＢ（Universal Serial BUS）規格が多用されるようになってきている。このＵＳＢは、パーソナルコンピュータと周辺機器との通信Ｉ／Ｆとして制定された規格である。ＵＳＢでは、データ転送はホストＰＣ主導で行なわれ、周辺機器はホストＰＣからの要求に応じる形でデータの送受信を行なう。
【０００４】
ＵＳＢを使用した複数プリンタによるプリンタシステムについては、特開2001-075764公報などに提案されている。
【０００５】
また、特開2000-155654公報には、複数部数の印刷を指示されたときに、接続されたプリンタ群に分散印刷を行なわせる技術が開示されている。
【０００６】
【発明が解決しようとする課題】
しかしながら、ホストＰＣとプリンタとをＵＳＢインターフェイスを介して接続する場合、プリンタシステムの各プリンタと１台のホストＰＣを、ハブ経由でＵＳＢにより繋いで制御することも可能ではあるが、ハブのポート数には限りがあり、またプリンタと直接接続できるＵＳＢケーブルの長さにも制限があり、システム構成が複雑化して実際的ではない。
【０００７】
そこで、ホストＰＣから各プリンタにデータを転送するのではなく、直接プリンタ間でデータを転送できるようにしたいが、特開2001-075764公報に開示の技術では、ホストＰＣが主導的にデータ転送を制御する必要があり、プリンタ間でデータを転送するには不向きであるという不具合がある。
【０００８】
また、特開2000-155654公報に開示の技術では、各プリンタをＵＳＢプリンタとしてホストコンピュータから印刷制御することはできないという不具合がある。
【０００９】
この発明の目的は、ＵＳＢの機能をプリンタシステム内の全てのプリンタが備えていなくても、ＵＳＢの機能を持たない複数のプリンタをＵＳＢプリンタとしてホストコンピュータから印刷制御することを、簡易なシステム構成、ホストコンピュータ側の簡易な制御により実現することである。
【００１０】
この発明の別の目的は、複数プリンタの構成を動的に再構成して柔軟なプリンタシステム利用を可能にできるようにすることである。
【００１１】
【課題を解決するための手段】
請求項１に記載の発明は、ＵＳＢ（Universal Serial BUS）インターフェイスを備えていて、ホストコンピュータと通信可能に接続できるプリンタにおいて、本プリンタと接続されている他のプリンタについてＵＳＢのシステム上でのアドレスと実際のアドレスとを対応付けて登録している第１のテーブルと、前記ホストコンピュータから前記他のプリンタに対して前記ＵＳＢのシステム上でのアドレスを指定して出力された要求を受付ける受付手段と、前記ホストコンピュータから前記他のプリンタに対して前記ＵＳＢのシステム上でのアドレスを指定して印刷要求があったときは、前記第１のテーブルを参照して当該ＵＳＢのシステム上でのアドレスを実際のアドレスに変換し当該アドレスが示す前記他のプリンタに前記印刷要求を実行させる印刷手段と、を備えていることを特徴とするプリンタである。
【００１２】
したがって、本プリンタと他のプリンタとを接続し、これにホストコンピュータを接続したプリンタシステムを構築した場合に、他のプリンタがＵＳＢの機能を備えていなくても、本プリンタが他のプリンタに代わってホストコンピュータに応答し、ホストコンピュータからＵＳＢのシステム上でのアドレスで他のプリンタに印刷要求がされても本プリンタが当該他のプリンタの実際のアドレスを判別して印刷要求を行なうので、他のプリンタをＵＳＢプリンタとしてホストコンピュータから印刷制御することを、簡易なシステム構成、ホストコンピュータ側の簡易な制御により実現することができる。
【００１３】
請求項２に記載の発明は、請求項１に記載のプリンタにおいて、前記第１のテーブルに代えて、ＵＳＢのシステム上でのアドレスと、本プリンタと接続されＵＳＢインターフェイスを備えていない複数の他のプリンタをグループ化して当該各グループを識別するプリンタグループとを対応付けて登録している第２のテーブルと、前記各プリンタグループと当該プリンタグループが識別する前記各グループに所属する前記他のプリンタにおける実際のアドレスとを対応付けて登録している第３のテーブルと、を備えていて、前記印刷手段は、前記ホストコンピュータから前記他のプリンタに対して前記ＵＳＢのシステム上でのアドレスを指定して印刷要求があったときは、前記第２及び第３のテーブルを参照して、当該ＵＳＢのシステム上でのアドレスに対応しているグループに所属する前記他のプリンタに前記印刷要求を実行させること、を特徴とする。
【００１４】
したがって、各プリンタをグループ化して、各グループに属するプリンタをそれぞれ単一のＵＳＢデバイスと見立ててホストコンピュータ側から操作することができるので、柔軟なプリンタシステムの利用を可能とすることができる。
【００１５】
請求項３に記載の発明は、請求項２に記載のプリンタにおいて、前記印刷手段は、前記ホストコンピュータから前記他のプリンタに対して前記ＵＳＢのシステム上でのアドレスを指定して印刷要求があったときは、前記第２及び第３のテーブルを参照して、当該ＵＳＢのシステム上でのアドレスに対応しているグループに所属する他のプリンタに印刷の実行が可能か否か問い合わせ、印刷可能な他のプリンタに対して前記印刷要求を実行させること、を特徴とする。
【００１６】
したがって、指定されたグループに属するプリンタのうち印刷可能なプリンタに印刷を実行させて、柔軟なプリンタシステムの利用を可能とすることができる。
【００１７】
請求項４に記載の発明は、請求項３に記載のプリンタにおいて、前記印刷可能な他のプリンタに対して前記印刷要求を実行させるときは、実際にどのプリンタに前記印刷要求を実行させたかを前記ホストコンピュータに通知する通知手段を備えていること、を特徴とする。
【００１８】
したがって、印刷要求したユーザは印刷出力がどのプリンタからなされるのかを知ることができる。
【００１９】
請求項５に記載の発明は、請求項２又は３に記載のプリンタにおいて、前記ホストコンピュータから前記グループの構成の変更要求を受付けて、その要求にしたがって前記第２及び第３のテーブルの登録の内容を変更する変更手段を備えていること、を特徴とする。
【００２０】
したがって、グループ構成の登録を動的に再編成することを可能として、柔軟なプリンタシステムの利用を可能とすることができる。
【００２１】
請求項６に記載の発明は、互いに接続された複数台のプリンタとホストコンピュータとを接続して構成されるプリンタシステムにおいて、前記複数台のプリンタのうち少なくとも一台は請求項１〜５の何れかの一に記載のプリンタであること、を特徴とするプリンタシステムである。
【００２２】
したがって、請求項１〜５の何れかの一に記載の発明と同様の作用、効果を奏する。
【００２３】
【発明の実施の形態】
この発明の一実施の形態について説明する。
【００２４】
［ＵＳＢについて］
まず、ＵＳＢ規格について説明する。
【００２５】
ＵＳＢ規格のRevision1.1では、ＬＳ（Low-Speed 1.5Mbps）およびＦＳ（Full-Speed 12Mbps）の２種の通信速度を規定し、Revision2.0では、ＨＳ（High-Speed 480Mbps）が新たに規定された。
【００２６】
転送モードについては、周辺機器の情報をホストＰＣに通知し、あるいは構成変更を受信するための「コントロール転送」、転送の誤り制御は行なわないが転送バンド幅を保証する「アイソクロナス転送」、転送バンド幅は保証しないが誤り制御を行なう「バルク転送」、及び低速で少量なデータを一定間隔で転送する「割り込み転送」の４つがある。
【００２７】
ＵＳＢでは、ハブを介してホストＰＣとツリー状にバス接続された複数の周辺機器は、ハブを含めてそれぞれにＵＳＢアドレスがホストＰＣにより付与される。ＵＳＢの仕様ではアドレスは０から１２７まで認識可能で、アドレス０は起動時の初期状態での特殊アドレスである。
【００２８】
また、各周辺機器は、複数の「エンドポイント」と呼ばれるＵＳＢのシステムでの通信の端点を持つ。このうち、エンドポイント０はホストＰＣにデバイスの情報（「ディスクリプタ」とよばれる）を通知し、あるいはホストＰＣからのディスクリプタ変更を受信するため（コントロール転送用）の特殊端点であり、全てのデバイスが必ず持っている。それ以外のエンドポイントの構成は機器により異なる。例えば、ＵＳＢプリンタであれば、ホストＰＣから印刷データを受信するためのエンドポイントとステータスを返すためのエンドポイントを別個にもつ。ＵＳＢでは「デバイスクラス」と呼ばれるデバイスの種類に応じたエンドポイント構成やディスクリプタの内容を規定しており、同一デバイスの種類をホストＰＣが統一的に扱うことができるよう配慮されている。
【００２９】
ＵＳＢの動作概要について、図１の通信シーケンス図に沿って説明する。図１では、詳細なハンドシェーク（ＡＣＫ／ＮＡＫ等）は省略して、転送の概略のみ示している。ホストＰＣがＵＳＢを介して接続されたデバイスを認識し、アドレスを付与してデバイスを稼働状態にするまでの過程を「エナミュレーション」と呼ぶ。ホストＰＣはバスの信号状態によりデバイスの接続を検出すると、バスをリセットしてエナミュレーションの開始をデバイスに通知する。続いて、デバイスの情報を得るためのコントロール転送が開始する。具体的には「Get_Descriptor」リクエストをデバイスに送信して、デバイスは指定されたディスクリプタをホストＰＣに返信する。これにより、ホストＰＣは接続されたデバイスの素性がわかるので、対応するデバイスドライバの起動が可能になる。ホストＰＣは、「Set_Address」により、このデバイスに空いているアドレスを付与し、今後、このデバイスとはこのアドレスを介して通信する。
【００３０】
この他、「Set_Descriptor」や「Set_Configuration」といったホストＰＣからのコマンドによりデバイスが実際に稼働状態になる。
【００３１】
ＵＳＢ機器の数の拡張については、ＵＳＢはハブを介してツリー状にバスを拡張することを特徴とする。ハブはホストＰＣ側からのパケットをデバイス側ポートに接続された複数のデバイスにブロードキャストし、デバイスからのパケットを、ホストＰＣ側ポートを介してホストＰＣに通知する。
【００３２】
次に、図２の通信シーケンス図に沿って、ハブとハブに接続されたデバイスが認識される流れについて説明する。
【００３３】
ハブもホストＰＣから見てＵＳＢデバイスのひとつとして扱われる。ハブに複数デバイスが接続されたシステムでは、まずハブに対するエナミュレーションが実行され、ハブとしての機能が有効になった後で接続されたデバイスのエナミュレーションが順次実行される。具体的には、ハブが持つ各デバイス側ポートについて、デバイスが接続されていた場合にポートステータスを変更し、ホストＰＣから定期的に発行されるステータス要求に対してこのポートステータスを返す、デバイスの転送速度はハブとデバイス間で接続時に確定する。ホストＰＣはポートステータスが変化したのを検出して、デバイスの新規接続であれば新たにエナミュレーションを実施し、デバイスの取り外しであれば当該デバイスを無効化する。エナミュレーション以降、ハブに接続されたデバイスとホストＰＣ間のデータはハブ内をスルーする。
【００３４】
［発明の実施の形態１］
一実施の形態を発明の実施の形態１として説明する。
【００３５】
図３は、このプリンタシステム１の全体構成を示すブロック図である。図３に示すように、このプリンタシステム１は、複数台のプリンタ２が、プリンタ間インターフェイス（Ｉ／Ｆ）３を介して、プリンタ間Ｉ／Ｆバス４により接続されている。プリンタ２群のうち一台のプリンタ２は、ＵＳＢＩ／Ｆ５によりホストコンピュータであるホストＰＣ６と、ＵＳＢケーブル７を介して接続されている。プリンタ間Ｉ／Ｆ３で接続された各プリンタ２は、それぞれが一意のアドレスを持っており、プリンタ２間の通信は、このアドレスにより所定の宛先にデータ転送ができることを前提としている。
【００３６】
各プリンタ２は、図４に示すように、プリンタ間Ｉ／Ｆ３等の各種Ｉ／Ｆ１１を備え、各種Ｉ／Ｆ５の制御や画像処理を主機能とするコントローラ１２とコントローラ１２からの画像データを印刷出力するプロッタ１３とを備えている。
【００３７】
図５は、コントローラ１２の内部の電気的な接続を示すブロック図である。コントローラ１２は、Ｉ／Ｆ制御や画像処理機能をソフトウェアとハードウェアにより行なう。コントローラ１２は、各種演算を行いプリンタ２の各部を集中制御するプロセッサ２１と、ＲＯＭ２２と、ＲＡＭ２３とを備えている。また、各種Ｉ／Ｆ１１を制御する為にそれぞれに対応したＩ／Ｆコントローラ２４を備え、Ｉ／Ｆからのデータを、プロセッサ２１を介さずにＲＡＭ２３に転送処理するためにＤＭＡコントローラ（ＤＭＡＣ）２５を備えている。
【００３８】
画像処理部２６は、ＲＡＭ−ｔｏ−ＲＡＭで画像データを加工し、符号化や伸張処理などの処理を行なう。プロセッサ２１側、ＲＡＭ２３側、プロッタ１３（のプロッタＩ／Ｆ２６）側にも、それぞれのＩ／Ｆを制御するＩ／Ｆコントローラ２７〜２９を備え、ソフトウェアでＩ／Ｆコントローラ２４やＤＭＡＣ２５の内部レジスタを制御できるように、プロセッサバスコントローラ２７の先にはＰＩＯコントローラ３０を備えている。各種Ｉ／Ｆ１１は、ユーザによって必要であったり不要であったりする場合があるので、オプションとしてモジュール毎の着脱が可能である。
【００３９】
プリンタ２による印刷の流れとしては、各種Ｉ／Ｆ１１から受け取った印刷データをＤＭＡＣ２５経由でＲＡＭ２３にライトし、ＲＡＭ−ｔｏ−ＲＡＭの画像処理などをおこなった後に、再びＤＭＡＣ２５により、プロッタＩ／Ｆ２６に渡して印刷出力を行なう。プリンタ間Ｉ／Ｆ３を介して、プリンタ２間でのコマンド・ステータスの授受や印刷データの転送も可能である。
【００４０】
図６は、Ｉ／Ｆコントローラ２４であり、ＵＳＢＩ／Ｆ５を制御するＵＳＢＩ／Ｆコントローラ３１の電気的な接続を示すブロック図である。
【００４１】
ＵＳＢのデータ線は、Ｄ＋／Ｄ−のシリアル差動信号であり、ＵＳＢ物理層３２は、この信号を受信時はシリアルデータからパラレル変換し、送信時は逆にパラレルデータからシリアル変換して出力する。接続速度に関する処理もＵＳＢ物理層３２で行なう。ＵＳＢ物理層３２に接続されているプロトコル処理部３３では、ＵＳＢプロトコルのハンドシェークを行なう（例えば、要求に対するＡＣＫハンドシェークやＮＡＫハンドシェーク、あるいはデータの再送など）。ホストＰＣ６からの転送アドレス、エンドポイントの検出も、プロトコル処理部３３でおこなわれ、自身のＵＳＢアドレス宛の要求にのみ応答し、対応するエンドポイントのデータを送出または受信する。プロトコル処理部３３には、送信用と受信用の内部バッファ３４，３５が接続され、ホストＰＣ６からの要求に応じて、ホストＰＣ６からのデータは受信用の内部バッファ３４に格納され、ホストＰＣ６へのデータは送信用の内部バッファ３５に格納される。
【００４２】
これらの内部バッファ３４，３５は、プリンタ間Ｉ／Ｆ制御部３６、ＤＭＡＣＩ／Ｆ制御部３７及びプロセッサＩ／Ｆ制御部３８に接続されており、他のプリンタ２へのデータ配信及び他のプリンタ２からのデータ受信が、これらのバッファ内部３４，３５を介しておこなわれる。また、他のプリンタ２側のソフトウェアが、ＤＭＡＣ２５との間のＩ／ＦであるＤＭＡＣＩ／Ｆ３９や、プロセッサ２１との間のＩ／ＦであるプロセッサＩ／Ｆ４０を介して、内部バッファ３４，３５にアクセスすることも可能である。プロセッサＩ／Ｆ制御部３８には、コントロールステータスを記憶するコントロールステータスレジスタ４５が接続されている。
【００４３】
第１のテーブルであるＵＳＢアドレスプリンタアドレス変換テーブル４１は、ＵＳＢのシステム上での各プリンタ２のアドレスと、各プリンタ２の実際のプリンタシステム１でのアドレスと対応付けて記憶し、ＵＳＢのシステム上でのプリンタ２のアドレスをプリンタ２の実際のプリンタシステム１でのアドレスに変換するＲＡＭ等で構成されるテーブルである。ＵＳＢのシステム上でのアドレス割り当ては、プリンタ２以外のホストＰＣ６に接続されたデバイスも関与して毎回一義的に決まらないため、システム起動毎にＵＳＢアドレスと各プリンタ２のアドレスを対応づける必要がある。
【００４４】
プリンタシステム１の初期状態としては、ＵＳＢＩ／Ｆ５を備えたプリンタ２（以下、ＵＳＢＩ／Ｆ５を備えたプリンタ２を他のプリンタ２特別して、プリンタ２ａという）はホストＰＣ６と接続されていない状態である。そこで、まず電源が投入されているプリンタシステム１内のプリンタ２ａをホストＰＣ６に接続してエナミュレーションを実行し、デバイスとして認識させるまでの流れを、図７の通信シーケンス図と図６のブロック図とを参照して説明する。なお、速度確定からエナミュレーションまでの概略は、図１を参照して前記したとおりである。
【００４５】
まず、ホストＰＣ６側ではＵＳＢ仕様で規定されている電気的特性によりケーブルの接続を検出する。その後、デバイス側とのネゴシエーションにより転送速度（ＬＳ／ＦＳ／ＨＳ）が確定する。
【００４６】
続いて、ホストＰＣ６はＵＳＢデバイスの素性が記述されたデバイスディスクリプタを出力するようプリンタ２ａ側に要求する。
【００４７】
プリンタ２ａ側では、これに応答してプリンタ機器としてのディスクリプタをホストＰＣ６に返信するが（ＵＳＢＩ／Ｆコントローラ３１で、送信用の内部バッファ３４にＤＭＡＣＩ／Ｆ３９もしくはプロセッサＩ／Ｆ４０を介してディスクリプタを記録しておくことで、ホストＰＣ６が要求したときにプロトコル処理部３３がこれに応えて内部バッファ３４からデータを読み出し、ＵＳＢ物理層３２に渡してＵＳＢケーブル７に出力する）、このホストＰＣ６との接続を担うプリンタ２ａは、プリンタシステム１の他のプリンタ２群をあたかもＵＳＢデバイスとして見えるようにするため、プリンタ機器のディスクリプタに先立ち、ＵＳＢハブとしてのディスクリプタを返信する。
【００４８】
この処理はプロトコル処理部３３で自動的に実行する。そして，まずホストＰＣ６にＵＳＢハブと認識されたあと、プリンタ機器が繋がっているようにホストＰＣ６に見せるため、プロトコル処理部３３は、デバイスが接続されたというステータスをハブの機能としてホストＰＣ６に通知する。
【００４９】
デバイス接続通知の流れは、図２を参照して前記したとおりである。ホストＰＣ６では、ハブに新規デバイスが接続されたと解釈して、このデバイスに対するエナミュレーションを試み、ディスクリプタの要求を行なう。この要求に対してプリンタ２ａは、今度はプリンタ機器としてのディスクリプタで応答し、これにより、ハブとそれに繋がったプリンタ機器として、ホストＰＣ６に認識される。この状態では、ＵＳＢプリンタが一台だけなので、ホストＰＣ６が印刷を行なう場合、ＵＳＢで接続されたプリンタ２ａだけが印刷データを受け取り、印刷を実行する。
【００５０】
以下では、プリンタシステム１の他のプリンタ２をＵＳＢデバイスのようにホストＰＣ６に見せて、このプリンタ２により印刷させるまでの流れを説明する。
【００５１】
すなわち、ホストＰＣ６とＵＳＢ接続されたプリンタ２ａが、上述の動作に引き続き、ハブとしての動作で新たなデバイスの接続があったというステータスをホストＰＣ６に通知して、ホストＰＣ６からのディスクリプタ要求に対して、プリンタ機器としてのディスクリプタを返す、という動作をプリンタシステム１における他のプリンタ２の台数分繰り返すことで（かかるホストＰＣ６とプリンタ２ａの通信のやりとりは、図７のとおり）、プリンタシステム１の他のプリンタ２がＵＳＢで接続されたプリンタとして、ホストＰＣ６からＵＳＢのデバイスアドレスを割り当てられて認識される。
【００５２】
ＵＳＢＩ／Ｆコントローラでは、プリンタ２ａを含めてプリンタ２に新たにＵＳＢアドレスが割り振られる度に、ＵＳＢアドレスプリンタアドレス変換テーブル４１の対応付けを更新する（例えば、プリンタ２ａはＵＳＢアドレス２、他のプリンタ２のうちの一台にはＵＳＢアドレス５、など）。
【００５３】
印刷の際は、ホストＰＣ６からＵＳＢ接続されたプリンタ２ａに印刷データが送信される。プリンタ２ａは内部バッファ３５で受付ける。プリンタ２ａでは、この印刷データの宛先のＵＳＢデバイスアドレスにより、プリンタシステム１内のどのプリンタ２宛のデータかを、ＵＳＢアドレスプリンタアドレス変換テーブル４１をルックアップして判定し、プリンタ２ａ宛のデータでなければ、所定のプリンタアドレスに向けてプリンタ間Ｉ／Ｆ３を介して転送する。そして、プリンタ間Ｉ／Ｆ３を介して印刷データを受け取ったプリンタ２が印刷を実行する。かかる処理により、受付手段、印刷手段を実現している。
【００５４】
印刷データを転送する前には、プリンタ２ａから宛先プリンタ２が印刷可能であるかを問い合わせる。印刷可能であれば、上述のように印刷データを宛先プリンタ２に転送するが、もし既に印刷実行中もしくはトラブルにより印刷可能でない状態であれば、他の印刷可能なプリンタ２に対してデータを転送し、振替印刷を実行する。
【００５５】
印刷動作は、通常、印刷データ転送の後に、プリンタ２ａ側からホストＰＣ６側へのステータスの返信がおこなわれる。実際の印刷を実行したプリンタ２は、プリンタ２ａに対して、印刷実行結果を正常、異常問わずにプリンタ間Ｉ／Ｆ３を介して返信する。この間、ホストＰＣ６からプリンタ２ａに対してステータス返信の催促がＵＳＢ上でおこなわれる（具体的にはＩＮ転送要求）が、印刷実行したプリンタ２からのステータスが返ってくるまでは、プリンタ２ａはホストＰＣ６に対してＮＡＫ応答（まだ転送準備ができていないことを示す）を行ない、ステータスが返ってきたら、ＵＳＢを介してステータスデータをホストＰＣ６に返信する。ホストＰＣ６が要求しているプリンタ２で印刷できずに、前述のように振替印刷を行った場合は、ステータス情報に実際に印刷動作をおこなったプリンタ２の情報を含めることで、ホストＰＣ６のプリンタアプリケーションがユーザに対して結果通知を行なうことができる。
【００５６】
プリンタ２ａは、入り交じる複数のプリンタ２宛の印刷データとステータス要求を正しく処理するため、送受信用の内部バッファ３４，３５（ＲＡＭ等で構成される）を各プリンタ２用に分離し、排他的に使用する。
【００５７】
なお、ＵＳＢアドレスプリンタアドレス変換テーブル４１は、プロセッサＩ／Ｆ４０を介して書き換えが可能であり（ＵＳＢアドレス部分を除く）、既に割り当てられたＵＳＢアドレスに対応するプリンタ２を、別のプリンタ２に切り替えることができる（例えばＵＳＢアドレス５のプリンタ２を別のプリンタ２に切り替えるなど）。
【００５８】
［発明の実施の形態２］
別の実施の形態を発明の実施の形態２として説明する。
【００５９】
以下では、実施の形態１の場合と相違する点を中心に説明し、発明の実施の形態１と同様の回路要素等には同一符号を用い、詳細な説明は省略する。
【００６０】
実施の形態１では、ＵＳＢアドレスと実際のプリンタ２が１対１で対応していたが、この実施の形態２では、複数のプリンタ２をあたかも一台のプリンタのようにホストＰＣ６に見せて、印刷動作を行なわせる。
【００６１】
図８は、この実施の形態２のプリンタ２ａで使用するＵＳＢＩ／Ｆコントローラ３１の電気的な接続を示すブロック図である。
【００６２】
このＵＳＢＩ／Ｆコントローラ３１は、実施の形態１におけるＵＳＢＩ／Ｆコントローラ３１の構成に加え、第２のテーブルであるプリンタグループテーブル４２を備えている。このプリンタグループテーブル４２は、グループ番号と各プリンタ２のアドレス群が対応づけされて登録されている。実際は、ＲＡＭ等を使用してグループ番号とプリンタ２のアドレスのリストが列挙される形式（例えば、グループ１は、アドレス２及びアドレス３のプリンタ２、グループ２は、プリンタ２ａ及びアドレス２のプリンタ２など）となり、プロセッサＩ／Ｆ４０を介してプリンタ２側の組み込みソフトウェアが設定可能である。また、ＵＳＢアドレスプリンタアドレス変換テーブル４１に代えて、ＵＳＢアドレスとプリンタグループ番号とを対応付けて登録している第３のテーブルであるＵＳＢアドレスプリンタグループ変換テーブル４３が用意されている。
【００６３】
そして、まず、ホストＰＣ６にプリンタシステム１を認識させる流れは基本的に実施の形態１の場合と同様であるが、ＵＳＢデバイスとしては、プリンタ２の数ではなくグループの数だけホストＰＣ６に接続通知する。
【００６４】
これにより、ホストＰＣ６からの印刷データはプリンタグループ宛の印刷データとなるので、ＵＳＢＩ／Ｆコントローラ３１は、ＵＳＢアドレスプリンタグループ変換テーブル４３により、ＵＳＢアドレスをプリンタグループに変換し、プリンタグループの各プリンタ２に印刷可能かどうかを、プリンタ間Ｉ／Ｆ３を介して問い合わせ、印刷可能なプリンタ２に対して印刷データを転送する。これにより印刷手段を実現している。
【００６５】
ステータスには、実際にどのプリンタ２に出力されたかという情報を付加して、ホストＰＣ６のプリンタアプリケーションが印刷出力のされたプリンタ２の別をユーザに通知できるようにする。これにより通知手段を実現している。
【００６６】
［発明の実施の形態３］
別の実施の形態を発明の実施の形態３として説明する。
【００６７】
以下では、実施の形態２の場合と相違する点を中心に説明し、発明の実施の形態１と同様の回路要素等には同一符号を用い、詳細な説明は省略する。
【００６８】
実施の形態２のプリンタシステム１における複数のプリンタ２群をＵＳＢシステム上でひとつのＵＳＢ機器に見せるＵＳＢＩ／Ｆコントローラ３１に対し、この実施の形態３では、ホストＰＣ６側から動的にプリンタグループ構成の変更が可能である。
【００６９】
図９は、この実施の形態２のプリンタ２ａで使用するＵＳＢＩ／Ｆコントローラ３１の電気的な接続を示すブロック図である。
【００７０】
この実施の形態３でも、プリンタシステム１の初期状態をホストＰＣ６に認識させるまでの流れと印刷動作は、実施の形態２のプリンタシステム１と同様である。図９のＵＳＢＩ／Ｆコントローラ３１では、図８のＵＳＢＩ／Ｆコントローラ３１の構成に加えて、グループ構成変更用の内部バッファ４４を備えている。ＵＳＢシステム上で、ホストＰＣ６からのデータ受信用として新たなエンドポイントを定義し、この内部バッファ４４で新たなエンドポイント向けデータを受信する。要求を受付けるＵＳＢアドレスは最初に付与されるＵＳＢハブとしてのアドレスで受付けることとする。印刷データとこの新たな受信データの区別は、プロトコル処理部３３で行なわれる。
【００７１】
ホストＰＣ６のプリンタアプリケーションは、プリンタ２ａに対してこのエンドポイントを介して、現在のプリンタグループ構成の問い合わせ要求もしくは新たなグループ構成定義（削除、追加も含む）要求を送信する。これら要求は上述の受信用の内部バッファ４４に記憶し、プリンタ２ａ側のプロセッサ２１に対してプロセッサＩ／Ｆ制御部３８を介して割り込みを発生して、プリンタ２ａ側のソフトウェアにより要求内容の解釈を行い、要求に従った処理を実行する。
【００７２】
この場合に実行する処理のフローチャートを、図１０に示す。すなわち、前述のように、ホストＰＣ６の要求を受信用の内部バッファ４４に記憶し、割り込みを発生すると（ステップＳ１）、プロセッサ２１は、受信用の内部バッファ４４の読み出しを行い（ステップＳ２）、そのコマンドを解析して（ステップＳ３）、以下のような処理を行なう。
【００７３】
すなわち、現在のグループ構成の問い合わせであれば（ステップＳ４のＮ）、プリンタグループとプリンタアドレスの一覧を送信用の内部バッファ３４に書き込み（ステップＳ５）、ホストＰＣ６からのＩＮ転送要求で、その内容を返信し（ステップＳ６）、ホストＰＣ６側のプリンタアプリケーションにおいて、グループ構成の情報を取得できるようにする。
【００７４】
また、新規グループの追加の場合は（ステップＳ４のＹ，Ｓ７のＹ）、新規のグループとプリンタアドレスを内部バッファ４４から読み出し（ステップＳ８）、プリンタグループテーブル４２及びＵＳＢアドレスプリンタグループ変換テーブル４３に追加する（ステップＳ９）。必要であれば、そのステータス（成功もしくはエラー）を、送信用バッファを介してホストＰＣ６に通知する。
【００７５】
もし、グループ構成の変更によりグループの増減が発生した場合は、ＵＳＢシステム上でデバイスが追加もしくは削除されたように見せるため、プリンタ２ａはホストＰＣ６に対してＵＳＢハブとして、デバイス追加又は削除のポートステータスを通知する（ステップＳ１０）。この後、ホストＰＣ６から新規のプリンタ２のグループに対してエナミュレーションを実行し、プロトコル処理部３３が自動応答する。そして、新規のプリンタ２のグループをホストＰＣ６から新規のＵＳＢプリンタトして認識する。
【００７６】
また、既存グループの削除要求の場合は（ステップＳ４のＹ，Ｓ７のＮ）、プリンタグループテーブル４２から当該グループのエントリを削除し（ステップＳ１１）、ステップＳ１０と同様の処理を行なう（ステップＳ１２）。ステップＳ７〜Ｓ１２により変更手段を実現している。この後、ホストＰＣ６が、デバイスの削除を検出し、当該デバイス（グループ）を無効化する。
【００７７】
【発明の効果】
請求項１に記載の発明は、本プリンタと他のプリンタとを接続し、これにホストコンピュータを接続したプリンタシステムを構築した場合に、他のプリンタをＵＳＢプリンタとしてホストコンピュータから印刷制御することを、簡易なシステム構成、ホストコンピュータ側の簡易な制御により実現することができる。
【００７８】
請求項２に記載の発明は、請求項１に記載のプリンタにおいて、各プリンタをグループ化して、柔軟なプリンタシステムの利用を可能とすることができる。
【００７９】
請求項３に記載の発明は、請求項２に記載のプリンタにおいて、指定されたグループに属するプリンタのうち印刷可能なプリンタに印刷を実行させて、柔軟なプリンタシステムの利用を可能とすることができる。
【００８０】
請求項４に記載の発明は、請求項３に記載のプリンタにおいて、印刷要求したユーザは印刷出力がどのプリンタからなされるのかを知ることができる。
【００８１】
請求項５に記載の発明は、請求項２又は３に記載のプリンタにおいて、グループ構成の登録を動的に再編成することを可能として、柔軟なプリンタシステムの利用を可能とすることができる。
【００８２】
請求項６に記載の発明は、請求項１〜５の何れかの一に記載の発明と同様の効果を奏する。
【図面の簡単な説明】
【図１】ＵＳＢのシステムが行なう処理について説明する通信シーケンス図である。
【図２】ＵＳＢのシステムが行なう処理について説明する通信シーケンス図である。
【図３】実施の形態１であるプリンタシステムの全体構成を示すブロック図である。
【図４】プリンタシステムのプリンタの全体構成を示すブロック図である。
【図５】プリンタのコントローラの電気的な接続を示すブロック図である。
【図６】プリンタのＵＳＢＩ／Ｆコントローラの電気的な接続を示すブロック図である。
【図７】プリンタとホストＰＣとの間の通信シーケンス図である。
【図８】実施の形態２のプリンタのＵＳＢＩ／Ｆコントローラの電気的な接続を示すブロック図である。
【図９】実施の形態３のプリンタのＵＳＢＩ／Ｆコントローラの電気的な接続を示すブロック図である。
【図１０】プリンタのＵＳＢＩ／Ｆコントローラが行なう処理のフローチャートである。
【符号の説明】
１      プリンタシステム
２，２ａ      プリンタ
５      ＵＳＢＩ／Ｆ
６      ホストコンピュータ
【図１】
0003754930.tif 000002
【図２】
0003754930.tif 000003
【図３】
0003754930.tif 000004
【図４】
0003754930.tif 000005
【図５】
0003754930.tif 000006
【図６】
0003754930.tif 000007
【図７】
0003754930.tif 000008
【図８】
0003754930.tif 000009
【図９】
0003754930.tif 000010
【図１０】
0003754930.tif 000011