(57)【要約】【課題】二つの電子機器共にＵＳＢ２．０の通信能力を具備している場合に、何らかの原因で一方側がＵＳＢ１．１での通信を要望しているとき、ＵＳＢ１．１で両者間の通信を行うことを可能にする通信制御システム等を提供する。【解決手段】ホスト側がＵＳＢ１．１での通信を要望しているとき、ネゴシエーションの結果がＵＳＢ２．０であれば、ホストはターゲットに対して、次回のネゴシエーションでは例えＵＳＢ２．０の通信能力を具備していてもＵＳＢ１．１の通信能力しか明示しないことを指示し、その指示を受けたターゲットは、次のネゴシエーションでは例えＵＳＢ２．０の通信能力を具備していてもＵＳＢ１．１の通信能力しか明示しないことにより、ネゴシエーションの結果、強制的にＵＳＢ１．１が選択されるようにする。【選択図】　　　　図４
2004062748.tif 000002
【特許請求の範囲】
【請求項１】
回線を介して接続された第一機器と第二機器の間で通信を行うための通信プロトコルを、前記第一機器と第二機器間で行われるネゴシエーションによって決定する通信制御システムにおいて、
前記ネゴシエーションによって決定される通信プロトコルが所定の通信規格の第一のバージョン形式または第二のバージョン形式である場合に、該ネゴシエーションで決定された通信プロトコルが前記第二のバージョン形式となったとき、前記第一機器は、前記第二機器に対して、次回のネゴシエーションでは前記第一のバージョン形式の通信能力しかない旨の応答を行うように指示する指示手段を備えたことを特徴とする通信制御システム。
【請求項２】
前記第一機器の前記指示手段が前記第二機器に対して行う前記指示は、前記通信規格が規定する所定のコマンドを使用して行うことを特徴とする請求項１記載の通信制御システム。
【請求項３】
前記第一機器は、前記第二機器に対して前記指示手段による前記指示を行った後、その受付完了が前記第二機器から報告されたとき、前記通信規格が定める所定のイベントを前記回線上に発生させて、改めて通信プロトコルを前記第一のバージョン形式または前記第二のバージョン形式に決定するネゴシエーションを行うことを特徴とする請求項１または請求項２記載の通信制御システム。
【請求項４】
前記第二機器は、前記指示手段の指示を前記第一機器から受信したとき、その直後の前記所定のイベント発生後のネゴシエーションのみにおいて、前記第一のバージョン形式の通信能力しかない旨の応答を行うことを特徴とする請求項３記載の通信制御システム。
【請求項５】
前記第二機器は、前記指示手段の指示を前記第一機器から受信したとき、その後の前記所定のイベント発生後のネゴシエーションにおいて、前記第一のバージョン形式の通信能力しかない旨の応答を行うことを特徴とする請求項３記載の通信制御システム。
【請求項６】
前記所定の通信規格はＵＳＢ規格であり、前記第一のバージョン形式はＵＳＢｖｅｒｓｉｏｎ１．０（またはｖｅｒｓｉｏｎ１．１）であり、前記第二のバージョン形式はＵＳＢｖｅｒｓｉｏｎ２．０であり、前記所定のコマンドはＶｅｎｄｏｒＵｎｉｑｕｅコマンドであることを特徴とする請求項１乃至５記載の通信制御システム。
【請求項７】
回線を介して接続された外部機器との間で通信を行うための通信プロトコルを、前記外部機器との間で行われるネゴシエーションによって決定する通信制御装置において、
前記ネゴシエーションによって決定される通信プロトコルが所定の通信規格の第一のバージョン形式または第二のバージョン形式である場合に、該ネゴシエーションで決定された通信プロトコルが前記第二のバージョン形式となったとき、前記外部機器に対して、次回のネゴシエーションでは前記第一のバージョン形式の通信能力しかない旨の応答を行うように指示する指示手段を備えたことを特徴とする通信制御装置。
【請求項８】
前記指示手段が前記外部機器に対して行う前記指示は、前記通信規格が規定する所定のコマンドを使用して行うことを特徴とする請求項７記載の通信制御装置。
【請求項９】
前記外部機器に対して前記指示手段による前記指示を行った後、その受付完了が前記外部機器から報告されたとき、前記通信規格が定める所定のイベントを前記回線上に発生させて、改めて通信プロトコルを前記第一のバージョン形式または前記第二のバージョン形式に決定するネゴシエーションを行うことを特徴とする請求項７または請求項８記載の通信制御装置。
【請求項１０】
前記所定の通信規格はＵＳＢ規格であり、前記第一のバージョン形式はＵＳＢｖｅｒｓｉｏｎ１．０（またはｖｅｒｓｉｏｎ１．１）であり、前記第二のバージョン形式はＵＳＢｖｅｒｓｉｏｎ２．０であり、前記所定のコマンドはＶｅｎｄｏｒＵｎｉｑｕｅコマンドであることを特徴とする請求項７乃至９記載の通信制御装置。
【請求項１１】
第一機器と第二機器の間で通信を行うための通信プロトコルを、前記第一機器と第二機器間で行われるネゴシエーションによって決定する通信制御方法において、
前記ネゴシエーションによって決定される通信プロトコルがＵＳＢｖｅｒｓｉｏｎ１．０（またはｖｅｒｓｉｏｎ１．１）、またはＵＳＢｖｅｒｓｉｏｎ２．０である場合に、該ネゴシエーションで決定された通信プロトコルが前記ＵＳＢｖｅｒｓｉｏｎ２．０となったとき、前記第一機器は、前記第二機器に対して、次回のネゴシエーションでは前記ＵＳＢｖｅｒｓｉｏｎ１．０（またはｖｅｒｓｉｏｎ１．１）の通信能力しかない旨の応答を行うように指示する指示手段を備えたことを特徴とする通信制御方法。
【請求項１２】
回線を介して接続された外部機器との間で通信を行うための通信プロトコルを、前記外部機器との間で行われるネゴシエーションによって決定する通信制御装置の制御方法を実行するための制御プログラムにおいて、
前記ネゴシエーションによって決定される通信プロトコルが所定の通信規格の第一のバージョン形式または第二のバージョン形式である場合に、該ネゴシエーションで決定された通信プロトコルが前記第二のバージョン形式となったとき、前記外部機器に対して、次回のネゴシエーションでは前記第一のバージョン形式の通信能力しかない旨の応答を行うように指示する指示ステップを備えたことを特徴とする制御プログラム。
【請求項１３】
前記指示ステップが前記外部機器に対して行う前記指示は、前記通信規格が規定する所定のコマンドを使用して行うことを特徴とする請求項１２記載の制御プログラム。
【請求項１４】
前記外部機器に対して前記指示ステップによる前記指示を行った後、その受付完了が前記外部機器から報告されたとき、前記通信規格が定める所定のイベントを前記回線上に発生させて、改めて通信プロトコルを前記第一のバージョン形式または前記第二のバージョン形式に決定するネゴシエーションを行うことを特徴とする請求項１２または請求項１３記載の制御プログラム。
【請求項１５】
前記所定の通信規格はＵＳＢ規格であり、前記第一のバージョン形式はＵＳＢｖｅｒｓｉｏｎ１．０（またはｖｅｒｓｉｏｎ１．１）であり、前記第二のバージョン形式はＵＳＢｖｅｒｓｉｏｎ２．０であり、前記所定のコマンドはＶｅｎｄｏｒＵｎｉｑｕｅコマンドであることを特徴とする請求項１２乃至１４記載の制御プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、二つの電子機器間で通信を行う際の通信プロトコルを決定する通信制御システム等に関し、特にＵＳＢ（Ｕｎｉｖｅｒｓａｌ　Ｓｅｒｉａｌ　Ｂｕｓ）回線で接続された二つの電子機器間でＵＳＢプロトコルを通信プロトコルとする通信制御システム等に関する。
【０００２】
【従来の技術】
二つの電子機器間においてデータ交換またはコマンドの送付を行う通信を実行する場合において、二つの電子機器の間で通信を行うための物理チャネルまたは論理チャネルを構築するとき、その物理チャネルまたは論理チャネルを構築する通信プロトコルを二つの電子機器間でのネゴシエーションによって決定する通信制御システムは、従来より既に知られている。
【０００３】
かかるシステムにおいては、ＵＳＢｖｅｒｓｉｏｎ２．０（以下、ＵＳＢ２．０という）をサポートしている二つの電子機器がＵＳＢ回線で接続されたとき、ＵＳＢｖｅｒｓｉｏｎ１．０またはｖｅｒｓｉｏｎ１．１（以下、ＵＳＢ１．１という）かＵＳＢ２．０で通信を行うネゴシエーションが行われ、二つの電子機器両方がＵＳＢ２．０をサポートしていれば、ネゴシエーションの結果は常にＵＳＢ２．０を選択することとなっていた。
【０００４】
【発明が解決しようとする課題】
しかしながら、上記通信制御システムでは、次のような問題点があった。
【０００５】
二つの電子機器（ホストとターゲット）の両方ともがＵＳＢ２．０の通信能力を具備している場合、両者の通信時において、何らかの理由でホスト側またはターゲット側がＵＳＢ１．１での通信を要望し、且つホスト側ではＵＳＢ１．１へのスイッチが不可能な実装方法を採るときでも、ＵＳＢ２．０ではなく強制的にＵＳＢ１．１で通信を行うようにする方法は今まで存在していなかった。
【０００６】
本発明は上記従来の問題点に鑑み、二つの電子機器共にＵＳＢ２．０の通信能力を具備している場合に、何らかの原因で一方側がＵＳＢ１．１での通信を要望しているときは、ＵＳＢ１．１で両者間の通信を行うことを可能にする通信制御システム等を提供することを目的とする。
【０００７】
【課題を解決するための手段】
上記目的を達成するために、本発明の通信制御システムでは、回線を介して接続された第一機器と第二機器の間で通信を行うための通信プロトコルを、前記第一機器と第二機器間で行われるネゴシエーションによって決定する通信制御システムにおいて、前記ネゴシエーションによって決定される通信プロトコルが所定の通信規格の第一のバージョン形式または第二のバージョン形式である場合に、該ネゴシエーションで決定された通信プロトコルが前記第二のバージョン形式となったとき、前記第一機器は、前記第二機器に対して、次回のネゴシエーションでは前記第一のバージョン形式の通信能力しかない旨の応答を行うように指示する指示手段を備えたことを特徴とする。
【０００８】
本発明の通信制御装置では、外部機器との間で通信を行うための通信プロトコルを、前記外部機器との間で行われるネゴシエーションによって決定する通信制御装置において、前記ネゴシエーションによって決定される通信プロトコルが所定の通信規格の第一のバージョン形式または第二のバージョン形式である場合に、該ネゴシエーションで決定された通信プロトコルが前記第二のバージョン形式となったとき、前記外部機器に対して、次回のネゴシエーションでは前記第一のバージョン形式の通信能力しかない旨の応答を行うように指示する指示手段を備えたことを特徴とする。
【０００９】
本発明の通信制御方法では、第一機器と第二機器の間で通信を行うための通信プロトコルを、前記第一機器と第二機器間で行われるネゴシエーションによって決定する通信制御方法において、前記ネゴシエーションによって決定される通信プロトコルがＵＳＢｖｅｒｓｉｏｎ１．０（またはｖｅｒｓｉｏｎ１．１）、またはＵＳＢｖｅｒｓｉｏｎ２．０である場合に、該ネゴシエーションで決定された通信プロトコルが前記ＵＳＢｖｅｒｓｉｏｎ２．０となったとき、前記第一機器は、前記第二機器に対して、次回のネゴシエーションでは前記ＵＳＢｖｅｒｓｉｏｎ１．０（またはｖｅｒｓｉｏｎ１．１）の通信能力しかない旨の応答を行うように指示する指示手段を備えたことを特徴とする。
【００１０】
本発明の制御プログラムでは、回線を介して接続された外部機器との間で通信を行うための通信プロトコルを、前記外部機器との間で行われるネゴシエーションによって決定する通信制御装置の制御方法を実行するための制御プログラムにおいて、前記ネゴシエーションによって決定される通信プロトコルが所定の通信規格の第一のバージョン形式または第二のバージョン形式である場合に、該ネゴシエーションで決定された通信プロトコルが前記第二のバージョン形式となったとき、前記外部機器に対して、次回のネゴシエーションでは前記第一のバージョン形式の通信能力しかない旨の応答を行うように指示する指示ステップを備えたことを特徴とする。
【００１１】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて説明する。
【００１２】
＜構成＞
図１は、本発明の実施の一形態に係る通信制御システム構成を示すブロック図である。
【００１３】
本実施形態の通信制御システムは、例えばパーソナルコンピュータ（ホスト機器）５０とプリンタ（ターゲット機器）６０がＵＳＢバス７０を介して接続されたシステムに、本発明を適用したものである。
【００１４】
図２は、図１中のホストコンピュータ５０の内部構成を示すブロック図である。　図中の１は本発明を制御するＣＰＵ、２はＣＰＵ１のワークエリアを提供するＲＡＭ、３は本発明のプログラムを提供するハードディスク（フロッピー（登録商標）ディスク、ＣＤＲＯＭ、ＤＶＤ、フラッシュラム等でもよい）、４は、ユーザーのコマンドを入力するユーザーコマンド入力装置（具体的にはマウス、キーボード等）、５はＵＳＢポート、８はメインバスである。
【００１５】
図３は、図１のプリンタ６０の内部のブロック構成図である。
【００１６】
図中の１１は本発明を制御するＣＰＵ、１２はＣＰＵ１のワークエリアを提供するＲＡＭ、１３は本発明のプログラムを提供するＲＯＭ（フロッピー（登録商標）ディスク、ＣＤＲＯＭ、ハードディスク等でもよい）、１５はＵＳＢポート、１４は印字用紙に印字を実行するプリンタエンジン、１８はメインバスである。
【００１７】
なお、本実施形態は特に断らない限り、ホストコンピュータ５０では、ＣＰＵ１がメインバス８を介して、ＲＡＭ２、ハードディスク３、ユーザーコマンド入力装置４及びＵＳＢポート５を制御して実施する。プリンタ６０では、ＣＰＵ１１がメインバス１８を介してＲＡＭ１２、ハードディスク１３、ＵＳＢポート１５及びプリンタエンジン１４を制御して実施する。
【００１８】
＜ホスト側動作＞
次に、図４のフローチャートを参照しつつ、本実施形態のホスト側動作の詳細を説明する。なお、図４のフローチャートに従ったプログラムをホスト機器５０内の例えばハードディスク３に格納し動作することにより、次の制御方法を実現させることが可能となる。
【００１９】
ＵＳＢでは、新しい機器が接続されたり、ＵＳＢバス７０から外されたりして、機器のコンフィグラーションが変更されたときにＢｕｓＲｅｓｅｔイベントを発生させて、ＵＳＢバス７０の機器構成の変化が発生したことをＵＳＢバス７０上の他の機器に通知する。そして、前記ＢｕｓＲｅｓｅｔイベントをトリガにＵＳＢバス７０上の機器を検知したホストコンピュータがそれぞれの機器とネゴシエーションを行い、ＵＳＢ１．１で定められた方法で当該機器と通信を行うのか、ＵＳＢ２．０で定められた方法で通信を行うのかを決定する。よってＢｕｓＲｅｓｅｔイベントがすべての通信の開始になる。
【００２０】
図４において、まずホスト機器５０は、ＵＳＢバス７０の状態を常に監視し、ＢｕｓＲｅｓｅｔイベントが発生していないかどうか常に監視している（ステップＳ１０２）。そして、ＢｕｓＲｅｓｅｔイベントが発生したことを検知したならば、ＵＳＢバス７０上を検索し、ターゲット機器６０が接続されているかどうか調べる（ステップＳ１０３）。なお、もし複数のターゲット機器６０がホスト機器５０によって検知されたならば、それぞれのターゲット機器６０に対してこれ以下に記する手順をホスト機器５０は行わなければならないが、本発明とは直接関係がないと思われるのでその詳細方法は省略する。
【００２１】
ホスト機器５０は、検知した接続されているターゲット機器６０との間で、ＵＳＢ１．１／ＵＳＢ２．０のいずれかを決定するネゴシエーションを実行する（ステップＳ１０４）。その結果、ホスト機器５０と当該ターゲット機器６０間でのデータ交換に使用するプロトコルとしてＵＳＢ１．１／ＵＳＢ２．０のいずれかが決定する（ステップＳ１０５）。これを以ってＵＳＢプロトコルレベルでの接続を完了する（ステップＳ１０６）。
【００２２】
そしてホスト機器５０は、ＵＳＢプロトコルで定められた方法に則り、ターゲット機器６０のデバイス属性（ｄｅｓｃｒｉｐｔｉｏｎ）を読み取り（ステップＳ１０７）、その情報をＵＳＢバス７０を利用してデータ交換を実施しようとしているＵＳＢプロトコルスタックの上位モジュールに報告する（ステップＳ１０８）。
【００２３】
ＵＳＢプロトコルスタックの上位クライアントは報告されたデバイス属性から必要な情報を読み出し、読み出した情報や上位モジュールが保持している情報からＵＳＢ２．０で通信してもよいかまたはＵＳＢ１．１で通信すべきかを判断する。具体的な判断基準になり得るものとしては、（１）ホスト機器５０側のＵＳＢ２．０のコントローラやドライバに不具合が発生している、（２）通信目的がターゲット機器６０からのＵＳＢ２．０通信エラー情報の採取、（３）デバイス属性からターゲット機器６０のモデル名を読み出し、このモデルに実装されているＵＳＢ２．０のコントローラやドライバの安定性に不安がある、（４）ＵＳＢ規格で規定するＤＥＶＩＣＥＣＬＡＳＳモジュールとＵＳＢ２．０プロトコルスタックの連携に問題があり、ＵＳＢ１．１では通信が可能なことが判明している場合等が考えられる。
【００２４】
そして、上位モジュールはもしＵＳＢ１．１で通信すべきであれば、ＵＳＢモジュールにＵＳＢ１．１で通信すべきという指示を出す。ＵＳＢモジュールは上位モジュールからの指示を確認する（ステップＳ１０９）。もしＵＳＢモジュールは上位モジュールからのＵＳＢ１．１で通信すべきという指示がなければ、上位モジュールからの指示に従い、データの送信や受信を行ったり、ＵＳＢが規定するコマンドの送出や受信、そしてそれに伴う処理を行い、上位モジュールの要求を満たす（ステップＳ１１０）。
【００２５】
もし上位モジュールからのＵＳＢ１．１で通信すべきという指示があれば、ＵＳＢ１．１で通信を行うのかＵＳＢ２．０で通信を行うのかのネゴシエーションの結果を参照する（ステップＳ１１１）。そしてネゴシエーションの結果が、ＵＳＢ１．１で通信を行うというものであれば、上位モジュールからの指示とネゴシエーション結果は同じなので、上記ステップＳ１１０の処理を行う。もしネゴシエーションの結果がＵＳＢ２．０で通信を行うというものであれば、上位モジュールからの指示（ＵＳＢ１．１で通信すべき）と、ＵＳＢ２．０で通信を行うというネゴシエーションの結果とが異なるため、ターゲット機器６０に対して通信ネゴシエーションを行い、通信をＵＳＢ１．１で行うように再設定する必要がある。
【００２６】
そのため、ＵＢＳモジュールは、ターゲット機器６０に対し、次回のネゴシエーションでは例えＵＳＢ２．０で通信を行う能力を具備していてもＵＳＢ１．１でしか通信できない、と応答するように要求するコマンド（以下、ＳｅｔＵＳＢ１．１Ｒｅｑｕｅｓｔコマンドと呼ぶ。コマンドフォーマットの詳細は図５を参照）を作成し（ステップＳ１１２）、そしてＵＳＢ規格が定めるＶｅｎｄｏｒＵｎｉｑｕｅコマンド（データはホスト機器５０→ターゲット機器６０）の形式でＵＳＢ２．０規格に則りターゲット機器６０に送出する（ステップＳ１１３）。
【００２７】
次に、ＳｅｔＵＳＢ１．１Ｒｅｑｕｅｓｔコマンドに対する応答を受信するためのＶｅｎｄｏｒＵｎｉｑｕｅコマンド（以下、ＳｅｔＵＳＢ１．１ｉｎｄコマンドと呼ぶ。コマンドフォーマットの詳細は図６を参照）を作成する（ステップＳ１１４）。そして作成したＳｅｔＵＳＢ１．１ｉｎｄコマンドをＵＳＢ２．０規格に則りターゲット機器６０に送出する（ステップＳ１１５）。その応答を受信するのを待つ（ステップＳ１１７）。
【００２８】
この応答として受信したデータを解析し、その内容がＳｅｔＵＳＢ１．１Ｒｅｑｕｅｓｔコマンドに対する完了通知がどうか確認する（ステップＳ１１８）。
ＳｅｔＵＳＢ１．１Ｒｅｑｕｅｓｔコマンドに対する完了通知でなければ、その内容にあった処理を行う（ステップＳ１１６）。もし完了通知であれば、これでホスト機器５０は、ターゲット機器６０が次回のＢｕｓＲｅｓｅｔイベント後のＵＳＢ通信プロトコルを決定するネゴシエショーンで、ターゲット機器６０がＵＳＢ１．１と応えると判断し、ＵＳＢバス７０に対してＢｕｓＲｅｓｅｔイベントを発生させて（ステップＳ１１９）、ステップＳ１０２へ戻る。
【００２９】
＜ターゲット機器６０の動作＞
次に、ターゲット機器６０の動作について、図７のフローチャートを参照して説明する。なお、図７のフローチャートに従ったプログラムをホスト機器５０内の例えばハードディスク１３に格納し動作することにより、次の制御方法を実現させることが可能となる。
【００３０】
ターゲット機器６０の電源が入れられると（ステップＳ２０１）、ターゲット機器６０は、デバイス初期化の中で、ＵＳＢ１．１フラグ（ＵＳＢ１．１ＦＬＧ）をＯＦＦに設定し（ステップＳ２０２）、ＢｕｓＲｅｓｅｔイベントを発生させる（ステップＳ２０３）。そして、ホスト機器５０からＵＳＢ１．１での通信要求が来ていたかどうか確認するため、ＵＳＢ１．１ＦＬＧの値を確認する（ステップＳ２０４）。もしＵＳＢ１．１ＦＬＧがＯＮであればホスト機器５０からＵＳＢ１．１での通信要求が来ているので、ＵＳＢコントローラに対し、通信プロトコルのネゴシエーションに対してＵＳＢ２．０と応答しないように指示を出す（ステップＳ２０５）。
【００３１】
ＵＳＢコントローラは、ホスト機器５０から通信プロトコルのネゴシエーション要求を受信すると（ステップＳ２０６）、ＵＳＢ２．０のサポートを調べる信号には反応せず、その結果、「ＵＳＢ１．１のみサポート」と応える（ステップＳ２０７）。こうして、ネゴシエーションにおいてＵＳＢ１．１でホスト機器５０とターゲット機器６０間の通信が行われることが決定し（ステップＳ２０８）、ＵＳＢ１．１ＦＬＧをＯＦＦに設定する（ステップＳ２０９）。
【００３２】
その後は新たにＢｕｓＲｅｓｅｔイベントが発生するまではＵＳＢ１．１のプロトコルに則った方式でデータの送受信またはコマンドの送出や受信を行い、上位モジュールの要求に応える（ステップＳ２１０）。常にＢｕｓＲｅｓｅｔイベントが発生しているかどうかを監視しながら、ホスト機器５０や上位モジュールの要求に従ってデータの送受信を行う（ステップＳ２１１，ステップＳ２１２）。
【００３３】
一方、ステップＳ２０４でＵＳＢ１．１ＦＬＧがＯＦＦであれば、ホスト機器５０からＵＳＢ１．１での通信要求がないと判断する。そしてＵＳＢコントローラは、ホスト機器５０から通信プロトコルのネゴシエーション要求を受信すると（ステップＳ２１３）、ＵＳＢ２．０のサポートを調べる信号には反応して、「ターゲット機器６０はＵＳＢ２．０をサポートしている」と応える（ステップＳ２１４）。こうして、ネゴシエーションにおいてＵＳＢ２．０でホスト機器５０とターゲット機器６０間の通信が行われることが決定する（ステップＳ２１５）。
【００３４】
ネゴシエーションが成立した直後ＶｅｎｄｏｒＵｎｉｑｕｅコマンドが来ていないかどうか調べる（ステップＳ２１６）。もし受信していなければ、ホスト機器５０の上位層もＵＳＢ２．０で通信することを要望していると判断し、その後は新たにＢｕｓＲｅｓｅｔイベントが発生するまでＵＳＢ２．０のプロトコルに則った方式でデータの送受信またはコマンドの送出や受信を行い、上位モジュールの要求に応える（ステップＳ２１７）。
【００３５】
一方、ネゴシエーションが成立した直後にＶｅｎｄｏｒＵｎｉｑｕｅコマンドを受信していれば、その内容を調べてそのコマンドはＳｅｔＵＳＢ１．１Ｒｅｑｕｅｓｔコマンドかどうか判断する（ステップＳ２１８）。ＳｅｔＵＳＢ１．１Ｒｅｑｕｅｓｔコマンドでなければ、その受信したコマンド内容に従い処理を行う（ステップＳ２１９）。もしＳｅｔＵＳＢ１．１Ｒｅｑｕｅｓｔコマンドであれば、ホスト機器５０がＵＳＢ１．１で通信することを要望していると判断し、ＵＳＢ１．１ＦＬＧをＯＮにする（ステップＳ２２０）。
【００３６】
そして、ＶｅｎｄｏｒＵｎｉｑｕｅコマンドが来ていないかどうかを調べ（ステップＳ２２１）、受信していればその内容がＳｅｔＵＳＢ１．１ｉｎｄかどうかを確認する（ステップＳ２２２）。ＳｅｔＵＳＢ１．１ｉｎｄでなければ、その受信したコマンド内容に従い処理を行う（ステップＳ２２３）。もしＳｅｔＵＳＢ１．１ｉｎｄであれば、ＳｅｔＵＳＢ１．１Ｒｅｑｕｅｓｔコマンドに対する完了報告受信要求ＳｅｔＵＳＢ１．１ｉｎｄ（図８参照）を作成し（ステップＳ２２４）、ＵＳＢ２．０の規格に則り、ホスト機器５０へ送出して（ステップＳ２２５）、前記ステップＳ２０３の処理へ戻る。
【００３７】
このように本実施形態では、ＵＳＢ２．０をサポートするホスト機器５０とターゲット機器６０の通信時において、何らかの理由でホスト機器５０側がＵＳＢ１．１での通信を要望しているとき、ＶｅｎｄｏｒＵｎｉｑｕｅコマンドでターゲット機器６０にその旨を通知し、その通知を受信したターゲット機器６０はそれ以降、ホスト機器５０からの通信プロトコルネゴにＵＳＢ１．１と応答するようにしたので、ホスト側でＵＳＢ１．１へのスイッチが不可能な実装方法を採ると場合であっても、次のネゴシエーションの結果、強制的にＵＳＢ１．１が選択され、ＵＳＢ１．１で通信を行うことができる。
【００３８】
具体的な応用例として、次のようなものが挙げられる。
【００３９】
近年のホスト機器５０の実装方法としては、ＵＳＢプロトコルスタックより上位層に対してはＵＢＳ１．１とＵＳＢ２．０の差異を吸収して、上位にその違いを隠蔽する方法を採用しているケースがある。そのため、ホスト機器５０のＵＳＢプロトコルスタックより上位層から直接ホスト機器５０のＵＳＢプロトコルスタックに対して直接指示を出し、ＵＳＢ１．１及びＵＳＢ２．０の切り替えができない実装も多く見受けられる。
【００４０】
ところでＵＳＢ２．０はＵＳＢ１．１と比較し、新しいプロトコルである。そのためＵＳＢ２．０コントローラ及びそのドライバはＵＳＢ１．１のコントローラ及びそのドライバと比べて不具合を内包している可能性が高い。もしホスト機器５０のＵＳＢ２．０コントローラまたはそのドライバ不具合が発生してＵＳＢ２．０でのデータ通信が不可能なとき、本発明があればＵＳＢ１．１で通信可能になる。
【００４１】
また、ターゲット機器６０側のＵＳＢ２．０のコントローラやドライバの実装がまだ不完全なときも、発明を採用することにより、ホスト機器５０側の主導で通信プロトコルをＵＳＢ１．１に設定することも可能になる。
【００４２】
さらに、本発明は特にデバッグやデバッグのためのログをターゲット機器６０から採取したり、通信速度は重要視されないが通信の信頼度が重視される場合に有効である。
【００４３】
なお、本発明は、上記実施形態に限定されず種々の変形が可能である。その変形例としては、次のようなものがある。
【００４４】
（１）上記実施形態では、ＳｅｔＵＳＢ１．１ＲｅｑｕｅｓｔコマンドとＳｅｔＵＳＢ１．１ｉｎｄのｉｎ，ｏｕｔ二つのＶｅｎｄｏｒＵｎｉｑｕｅコマンドのハンドシェイクによって、ホスト機器５０がターゲット機器６０に対してＵＳＢ１．１で通信することの要求コマンドを送出し確認しているが、ＶｅｎｄｏｒＵｎｉｑｕｅコマンドのｏｕｔのコマンドをのみでもこの機能を実現することができる（そのフォーマットは図９、図１０参照）。具体的には、ｂＲｅｑｕｅｓｔでＳｅｔＵＳＢ１．１Ｒｅｑｕｅｓｔコマンド指定したｉｎコマンドを発行し、ターゲット機器６０はそのぺイロードにその結果を書き込む形である。
【００４５】
（２）上記実施形態では、ＳｅｔＵＳＢ１．１ＲｅｑｕｅｓｔコマンドとＳｅｔＵＳＢ１．１ｉｎｄのｉｎ，ｏｕｔ二つのＶｅｎｄｏｒＵｎｉｑｕｅコマンドのハンドシェイクによって、また上記変形例（１）では、１つのｉｎのＶｅｎｄｏｒＵｎｉｑｕｅコマンドホスト機器５０を利用することによって、ホスト機器５０がターゲット機器６０に対してＵＳＢ１．１で通信することの要求コマンドを送出し確認しているが、このコマンドの通知方法を予め定められたＥＮＤＰＯＩＮＴを介して、予め定められたコマンド形態を使用して、実施する形態も考えられる。
【００４６】
また、本発明は、上述した実施形態の装置に限定されず、複数の機器から構成されるシステムに適用しても、１つの機器から成る装置に適用してもよい。前述した実施形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体をシステムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、完成されることは言うまでもない。
【００４７】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。プログラムコードを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭを用いることができる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけではなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００４８】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、次のプログラムコードの指示に基づき、その拡張機能を拡張ボードや拡張ユニットに備わるＣＰＵなどが処理を行って実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００４９】
【発明の効果】
以上詳細に説明したように本発明によれば、何らかの原因で第一機器側が所定の通信規格の第一のバージョン形式（例えばＵＳＢ１．１）での通信を要望しているときに、第一機器、第二機器共に第二のバージョン形式（例えばＵＳＢ２．０）の通信能力を具備していても、強制的に前記第一のバージョン形式を選択して第一のバージョン形式で第一機器、第二機器間の通信を行うことが可能になる。
【図面の簡単な説明】
【図１】本発明の実施の一形態に係る通信制御システム構成を示すブロック図である。
【図２】図１中のホストコンピュータ５０の内部構成を示すブロック図である。
【図３】図１のプリンタ６０の内部のブロック構成図である。
【図４】実施形態のホスト側動作を示すフローチャートである。
【図５】ＳｅｔＵＳＢ１．１Ｒｅｑｕｅｓｔコマンドのフォーマットの一例を示す図である。
【図６】ＳｅｔＵＳＢ１．１ｉｎｄコマンドのフォーマットの一例を示す図である。
【図７】実施形態のターゲット機器６０の動作を示すフローチャートである。
【図８】ＳｅｔＵＳＢ１．１完了報告コマンドの内容フォーマットの一例を示す図である。
【図９】ＳｅｔＵＳＢ１．１完了報告受信要求コマンドのフォーマットの一例を示す図である。
【図１０】ＳｅｔＵＳＢ１．１完了報告受信要求コマンドの内容フォーマットの一例を示す図である。
【符号の説明】
１　ＣＰＵ
２　ＲＡＭ
３　ハードディスク
４　ユーザーコマンド入力装置
５　ＵＳＢポート
８　メインバス
１１　ＣＰＵ
１２　ＲＡＭ
１３　ＲＯＭ
１４　プリンタエンジン
１５　ＵＳＢポート
１８　メインバス
５０　ホスト機器
６０　ターゲット機器
７０　ＵＳＢバス
【図１】
2004062748.tif 000003
【図２】
2004062748.tif 000004
【図３】
2004062748.tif 000005
【図４】
2004062748.tif 000006
【図５】
2004062748.tif 000007
【図６】
2004062748.tif 000008
【図７】
2004062748.tif 000009
【図８】
2004062748.tif 000010
【図９】
2004062748.tif 000011
【図１０】
2004062748.tif 000012