(57)【特許請求の範囲】
【請求項１】
アイソクロナス転送可能なデバイスがローカル接続されているデバイス制御装置に、ネットワークを介して接続されたクライアント装置であって、
前記デバイスに対するデータ出力を指示する出力要求指示手段と、
前記デバイスが直接接続されているようにシミュレートする仮想化制御手段と、
前記出力要求指示手段から前記デバイスに対してアイソクロナス転送によるデータ出力要求が指示されると、アイソクロナス出力要求を生成する出力要求生成手段と、
前記出力要求生成手段で生成された前記アイソクロナス出力要求に対する応答情報を前記出力要求指示手段に通知する応答情報通知手段と、
前記仮想化制御手段により前記デバイス制御装置に対して、前記出力要求生成手段で生成されたアイソクロナス出力要求をアイソクロナス転送によって送信する通信制御手段と、
前記出力要求生成手段で生成されたアイソクロナス出力要求に対する前記デバイスの応答情報を擬製し、前記通信制御手段によって前記アイソクロナス出力要求が送信された後、所定時間が経過すると、当該擬製されたデバイスの応答情報を前記応答情報通知手段に通知するダミー応答生成手段と、を備え、
前記応答情報通知手段は、前記デバイスからの応答情報を受け取ることなく前記ダミー応答生成手段で擬製された応答情報を前記出力要求指示手段に通知すること
を特徴とするクライアント装置。
【請求項２】
前記デバイスを識別するための個体情報を取得し、当該個体情報をもとに前記デバイス制御装置に接続されているデバイスを識別する個体情報識別手段をさらに備え、
前記アイソクロナス出力要求は、
前記個体情報識別手段で識別された前記デバイスの個体情報を含むことを特徴とする請求項１に記載のクライアント装置。
【請求項３】
前記ダミー応答生成手段は、前記アイソクロナス出力要求に含まれている情報で、前記デバイスに応じて規定されているフレームの情報に基づいてインターバル時間を算出し、当該インターバル時間に従って、前記擬製されたデバイスの応答情報の通知を行うこと
を特徴とする請求項１又は２に記載のクライアント装置。
【請求項４】
前記ダミー応答生成手段は、前記デバイス制御装置から受信した、前記ネットワークにおける遅延を補正するための補正値に基づいて、前記擬製された応答情報の通知間隔を調整すること
を特徴とする請求項１乃至３の何れか１項に記載のクライアント装置。
【請求項５】
アイソクロナス転送可能なデバイスがローカル接続されているデバイス制御装置に、ネットワークを介して接続されたクライアント装置におけるデバイス制御方法であって、
仮想化制御手段が前記デバイスを直接接続されているようにシミュレートする仮想化制御ステップと、
出力要求生成手段が前記デバイスに対して、前記デバイスを制御するための制御プログラムからアイソクロナス転送によるデータ出力要求が指示されると、アイソクロナス出力要求を生成する出力要求生成ステップと、
応答情報通知手段が前記出力要求生成ステップで生成された前記アイソクロナス出力要求に対する応答情報を前記制御プログラムに通知する応答情報通知ステップと、
通信制御手段が前記仮想化制御ステップにより前記デバイス制御装置に対して、前記出力要求生成ステップで生成されたアイソクロナス出力要求をアイソクロナス転送によって送信する通信制御ステップと、
ダミー応答生成手段が前記出力要求生成ステップにおいて生成されたアイソクロナス出力要求に対する前記デバイスの応答情報を擬製するダミー応答生成ステップと、
ダミー応答通知手段が前記通信制御ステップによって前記アイソクロナス出力要求が送信された後、所定時間が経過すると、前記ダミー応答生成ステップで擬製されたデバイスの応答情報を前記応答情報通知手段に対して通知するダミー応答通知ステップと、を備え、
前記応答情報通知ステップは、前記デバイスからの応答情報を受け取ることなく前記ダミー応答生成ステップで擬製された応答情報を前記制御プログラムに通知すること
を特徴とするデバイス制御方法。
【請求項６】
個体情報識別手段が前記デバイスを識別するための個体情報を取得し、当該個体情報をもとに前記デバイス制御装置に接続されているデバイスを識別する個体情報識別ステップをさらに備え、
前記アイソクロナス出力要求は、
前記個体情報識別ステップで識別された前記デバイスの個体情報を含むことを特徴とする請求項５に記載のデバイス制御方法。
【請求項７】
前記ダミー応答通知ステップにおいて、前記アイソクロナス出力要求に含まれている情報で、前記デバイスに応じて規定されているフレームの情報に基づいてインターバル時間を算出し、当該インターバル時間に従って、前記擬製されたデバイスの応答情報の通知を行うこと
を特徴とする請求項５又は６に記載のデバイス制御方法。
【請求項８】
前記ダミー応答通知ステップにおいて、前記デバイス制御装置から受信した前記ネットワークにおける遅延を補正するための補正値に基づいて、前記擬製された応答情報の通知間隔を調整すること
を特徴とする請求項５乃至７の何れか１項に記載のデバイス制御方法。
【請求項９】
請求項１乃至４のいずれか１項に記載のクライアント装置と、ネットワークを介して前記クライアントと接続されたデバイス制御装置と、前記デバイス制御装置にローカル接続され、アイソクロナス転送可能なデバイスと、から構成されるデバイス制御システムであって、
前記デバイス制御装置は、
前記クライアント装置から前記アイソクロナス出力要求を受信する出力要求受信手段と、
前記出力要求受信手段で受信した前記アイソクロナス出力要求により識別されたデバイスに対して、当該アイソクロナス出力要求を送信する出力要求送信手段と、
前記アイソクロナス出力要求を送信したデバイスから、当該アイソクロナス出力要求に対する応答情報を受信する応答情報受信手段と、
前記応答情報受信手段で受信した前記応答情報を破棄する応答情報破棄手段と、を備えること
を特徴とするデバイス制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介してデバイスを制御するための機能を備えたクライアント装置、デバイス制御方法、およびデバイス制御システムに関するものである。
【背景技術】
【０００２】
ネットワークの普及により、従来、パーソナルコンピュータ（以下、クライアントＰＣ）などに直結（ローカル接続）して利用していたデバイス（周辺機器）を、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などのネットワーク上のクライアントＰＣから利用できるように工夫したデバイスサーバが発表されている。
【０００３】
例えば、クライアントＰＣとＵＳＢ（Ｕｎｉｖｅｒｓａｌ
Ｓｅｒｉａｌ  Ｂｕｓ）規格のインターフェースを介して直結（ローカル接続）して使用するプリンタ、ストレージ、スキャナなどのデバイス（以下、ＵＳＢデバイス）をデバイスサーバに接続することで、ネットワーク上のクライアントＰＣは、デバイスサーバを介してＵＳＢデバイスにアクセスし、直結（ローカル接続）したときと同様の状態で使用できるようになる。
【０００４】
先に本出願人においても、デバイスサーバが自身に接続されているデバイスを監視し、デバイスの状態変化を検知すると、この検知を示す情報（以下、トリガ通知）をネットワーク上のクライアントＰＣへ通知することで、クライアントＰＣとデバイスサーバ間でセッションを開始し、デバイスサーバを介してネットワーク上のクライアントＰＣとデバイス間でデータ送受信を可能とするデバイス制御システムを提案している（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特願２００９−２５３３９５
【発明の概要】
【発明が解決しようとする課題】
【０００６】
例えば、クライアントＰＣからデバイスに対して音声や映像などリアルタイム性を必要とするストリーミングデータを転送する場合、一定時間あたりの最低限のデータ転送量を保証するアイソクロナス方式によるデータ転送（以下、アイソクロナス転送）を行うことで、全体の転送量が高くても、最低限のデータ転送量が保証される為、途切れることなくデータを転送することができる。
【０００７】
特許文献１のように、デバイスサーバを介してクライアントＰＣとデバイス間でデータ送受信を実行させるシステムにおいて、上述のアイソクロナス転送を実施する場合、クライアントＰＣとデバイスは直結（ローカル接続）ではなく、ＬＡＮなどのネットワーク経由で接続されているので、ネットワークトラフィックが高くなり、ネットワーク区間のデータ転送速度が低下するため、アイソクロナス転送で保証する最低限のデータ転送量を維持する必要がある。
【０００８】
そこで、本発明は、デバイスサーバを介してネットワーク上のクライアントＰＣとデバイス間でデータ送受信を可能とするデバイス制御システムにおいて、アイソクロナス転送により、クライアントＰＣからデバイスに対してデータ転送する（以下、アイソクロナス出力転送）場合、ネットワーク区間で生じるデータ転送速度低下の影響をできる限りなくして、アイソクロナス出力転送を維持できるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、請求項１に記載のクライアント装置は、アイソクロナス転送可能なデバイスがローカル接続されているデバイス制御装置に、ネットワークを介して接続されたクライアント装置であって、前記デバイスに対するデータ出力を指示する出力要求指示手段と、前記デバイスが直接接続されているようにシミュレートする仮想化制御手段と、前記出力要求指示手段から前記デバイスに対してアイソクロナス転送によるデータ出力要求が指示されると、アイソクロナス出力要求を生成する出力要求生成手段と、前記出力要求生成手段で生成された前記アイソクロナス出力要求に対する応答情報を前記出力要求指示手段に通知する応答情報通知手段と、前記仮想化制御手段により前記デバイス制御装置に対して、前記出力要求生成手段で生成されたアイソクロナス出力要求をアイソクロナス転送によって送信する通信制御手段と、前記出力要求生成手段で生成されたアイソクロナス出力要求に対する前記デバイスの応答情報を擬製し、前記通信制御手段によって前記アイソクロナス出力要求が送信された後、所定時間が経過すると、当該擬製されたデバイスの応答情報を前記応答情報通知手段に通知するダミー応答生成手段と、を備え、前記応答情報通知手段は、前記デバイスからの応答情報を受け取ることなく前記ダミー応答生成手段で擬製された応答情報を前記出力要求指示手段に通知することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、クライアントＰＣは、自装置内でデータ出力要求に対するデバイスからの応答情報を擬製して処理することで、応答情報を受信したものと判断して、デバイスからの応答情報を待たずに次のデータ出力要求を送出し、デバイスサーバは、デバイスからの応答情報を破棄してクライアントＰＣへ返送しないように制御するので、クライアントＰＣは、デバイスからの応答情報の遅延（受信待ち）によって、次のデータ出力要求の処理が停滞することもなくなるため、アイソクロナス出力転送で保証する最低限のデータ転送量を維持することができ、また、デバイスサーバからネットワーク上に応答情報が送出されなくなるので、ネットワークトラフィックの低減にも寄与する。
【図面の簡単な説明】
【００１１】
【図１】実施例１に係るデバイス制御システムの概略構成を示す図である。
【図２】アイソクロナス出力要求パケットのデータ構成を例示する図である。
【図３】実施例１に係るデバイス制御システムにおけるアイソクロナス出力要求の過程を示すシーケンス図である。
【図４】実施例２に係るデバイス制御システムの概略構成を示す図である。
【図５】図４のデバイス制御システムにおけるアイソクロナス出力要求の過程を示すシーケンス図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
【実施例１】
【００１３】
＜１．デバイス制御システムの構成＞
図１は、本発明を実現するための「デバイス制御システム」の概略構成であり、クライアントＰＣ１００（１００Ａ，１００Ｂ）、デバイスサーバ２００、デバイス３００（３００Ａ，３００Ｂ）から構成されている。
【００１４】
デバイス３００（３００Ａ，３００Ｂ）は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）インターフェースに準拠した接続ケーブル４００でデバイスサーバ２００に接続（ローカル接続）されている。ただし、ＵＳＢに限定されるものではなく、ＩＥＥＥ１３９４など別のインターフェースに準拠したものであってもよい。一方、クライアントＰＣ１００（１００Ａ，１００Ｂ）は、デバイスサーバ２００と有線又は無線のネットワーク５００を介して接続されている。
【００１５】
＜２．クライアントＰＣ１００の構成＞
クライアントＰＣ１００は、本発明の「クライアント装置」の実施形態の一例であり、一般的なパーソナルコンピュータと同様なハードウェア構成を備えており、不図示のＣＰＵ、入力部、表示部、メモリ、通信部、外部記憶部などが内部バスで接続されている。
【００１６】
ＣＰＵは、クライアントＰＣ１００内の各部を制御する中央処理装置である。入力部は、キーボードやマウス等の操作装置である。表示部は、液晶モニタ等の表示装置である。メモリは、ＲＡＭ、ＲＯＭ等の記憶装置である。通信部は、ネットワーク５００（有線又は無線ネットワーク）に接続するためのインターフェースであり、デバイスサーバ２００とデータ通信を行うことで、デバイス３００とデータを送受信することが可能となる。外部記憶部は、ハードディスク等の記憶装置である。
【００１７】
次に、外部記憶部に格納されるソフトウェア部品などの機能について順次説明する。
【００１８】
外部記憶部には、ＯＳ（不図示）、アプリケーションプログラム１０１、常駐モジュール１０２、デバイスドライバ１０３、ＵＳＢクラスドライバ１０４、ＵＳＢ仮想バスデバイス１０５、通信制御部１０６などのソフトウェア部品及び制御に必要な各種データが格納される。これらソフトウェア部品及び各種データは、ＣＰＵの制御に従い、メモリ上に読み出されて各種制御が実行される。
【００１９】
アプリケーションプログラム１０１は、ドライバソフトウェア部品（デバイスドライバ１０３、ＵＳＢクラスドライバ１０４、ＵＳＢ仮想バスデバイス１０５）を介して、デバイス３００に対してデータ入出力要求を送るソフトウェア部品である。
【００２０】
常駐モジュール１０２は、ＯＳが起動している間、常に待機及び動作しているソフトウェア部品である。ネットワーク５００上にあるデバイスサーバ２００とデータの送受信を行うことにより、デバイスサーバ２００に接続されたデバイス３００を認識し、当該デバイス３００を識別するためのデバイス情報を受信し、受信したデバイス情報をもとに、デバイス３００とのデータ送受信に必要となるデバイスドライバ１０３、ＵＳＢクラスドライバ１０４、ＵＳＢ仮想バスデバイス１０５を一意に特定して、動的に生成し、当該デバイス３００を仮想化制御（後述）できる状態にする。
【００２１】
デバイスドライバ１０３は、ＯＳやアプリケーションプログラム１０１、常駐モジュール１０２など上位層のソフトウェアプログラムからのデータ入出力要求を対象となるデバイス３００に応じたデータ形式のデータ（以下、制御コマンド）に変換し、また、この制御コマンドに対する応答を上位層のソフトウェアプログラムへ通知するソフトウェア部品である。本実施例では、アイソクロナス転送によるデータ出力要求（以下、アイソクロナス出力要求）が制御コマンドに変換される。
【００２２】
ＵＳＢクラスドライバ１０４は、デバイスドライバ１０３で制御コマンドに変換されたデータ入出力要求をＵＳＢのデータ形式に準拠したパケットデータ（以下、ＵＳＢデータ）に変換してＵＳＢ仮想バスデバイス１０５に送り、ＵＳＢ仮想バスデバイス１０５から送られてくるＵＳＢデータを制御コマンドと同様のデータ形式に変換してデバイスドライバ１０３へ送るソフトウェア部品である。本実施例では、デバイスドライバ１０３で制御コマンドに変換されたアイソクロナス出力要求がＵＳＢデータに変換される。
【００２３】
ＵＳＢ仮想バスデバイス１０５は、上位層のソフトウェアプログラムからのデータ入出力要求に対して、デバイス３００がクライアントＰＣ１００に直結（ローカル接続）しているときと同様の振る舞いをシミュレートする機能（以下、仮想化制御）を備えたソフトウェア部品である。この「仮想化制御」によって、デバイス３００をローカル接続したときと同じ状態でデータ送受信を行うことができる。
【００２４】
また、ＵＳＢ仮想バスデバイス１０５は、アイソクロナス出力要求に対する応答情報（以下、応答情報）を擬製し、この「擬製した応答情報」（以下、ダミー応答）をＵＳＢクラスドライバ１０４に対して通知する機能を備えており、ＵＳＢクラスドライバ１０４からのアイソクロナス出力要求を受信すると、当該アイソクロナス出力要求に対するダミー応答を生成し、当該アイソクロナス出力要求を通信制御部１０６に転送する。そして、通信制御部１０６からアイソクロナス出力要求が送信された後、所定時間（以下、インターバル時間）が経過すると、生成したダミー応答をＵＳＢクラスドライバ１０４に対して通知する。さらに、デバイスサーバ２００から送られてくる補正値（後述）に基づいて、ダミー応答の通知間隔を調整する機能を備えている。
【００２５】
なお、インターバル時間は、次の算出式で示すように、アイソクロナス出力要求に含まれる「転送インターバル」及び「フレーム数（ｎ）」の値（図２（Ｂ）参照）を用いて算出され、データ送受信完了までの間は算出したインターバル時間が適用される。
【００２６】
［算出式］
インターバル時間＝転送インターバル×フレーム数×データ転送周期
【００２７】
データ転送周期は、デバイス３００側のＵＳＢ規格で決まるもので、ＨｉｇｈＳｐｅｅｄ（４８０Ｍｂｐｓ）のときは０．１２５［ｍｓ］、ＦｕｌｌＳｐｅｅｄ（１２Ｍｂｐｓ）及びＬｏｗＳｐｅｅｄ（１．５Ｍｂｐｓ）のときは１［ｍｓ］である。
【００２８】
通信制御部１０６は、ＵＳＢ仮想バスデバイス１０５から送られてくる「ＵＳＢデータ」とネットワーク５００を介してデバイスサーバ２００と送受信する「ネットワークパケット」との変換処理を行い、通信部を介してデバイスサーバ２００との間のデータ送受信の制御を行うソフトウェア部品である。また、上位層のソフトウェアプログラムからのデータ入出力要求を受信すると、デバイスサーバ２００とセッションを開始し、データ送受信が完了すると、当該セッションを切断するセッション制御機能を備えている。
【００２９】
＜２−１．アイスクロナス出力要求のデータ構成＞
ここで、ＵＳＢクラスドライバ１０４で生成されるアイソクロナス出力要求のデータ構成を説明する。図２は、アイソクロナス出力要求（ＵＳＢデータ）のデータ構成の一例であり、図２（Ａ）が示すように、ヘッダ部とデータ部から構成されている。
【００３０】
ヘッダ部には、本システムのプロトコルであることを識別するための「署名データ」、パケットのデータサイズを示す「電文サイズ」、制御コマンドの内容（種別）を示す「コマンドＩＤ」、デバイス３００を一意に識別するためのデバイス識別情報（「ベンダーＩＤ（ＶＩＤ）」、「製品ＩＤ（ＰＩＤ）」、「シリアル番号」）、デバイス３００が具備している機能を一意に識別するための機能識別情報（「機能番号」、「エンドポイント」）などが格納される。本実施例では、アイソクロナス出力要求であることを示すＩＤ情報が「コマンドＩＤ」として格納される。
【００３１】
図２（Ｂ）は、図２（Ａ）で示した「データ部」の構成の一例であり、デバイス３００のスペックなどに応じて規定されているフレーム（データ転送の基本単位）に関する情報（以下、フレーム情報）と、デバイス３００に出力させるデータの実体（以下、出力データ）から構成される。
【００３２】
フレーム情報は、フレーム全体に関する情報と各フレーム（１〜ｎ）の個別情報から構成される。フレーム全体に関する情報として、データ転送周期を設定するためのパラメータである「転送インターバル」、出力データの容量を示す「送信データサイズ」、データ転送を開始する際のフレーム番号を指定した場合に設定される「フレーム開始番号」、１回のアイソクロナス出力要求で使用するフレームの総数を示す「フレーム数（ｎ）」が格納される。各フレーム（１〜ｎ）の個別情報として、フレームの先頭位置を示す「データオフセット」、フレームが格納する出力データの容量を示す「フレーム送信サイズ」、各フレームのエラー情報を示す「ステータス」が格納される。
【００３３】
＜３．デバイスサーバ２００の構成＞
デバイスサーバ２００は、本発明の「デバイス制御装置」の実施形態の一例であり、不図示のＣＰＵ、メモリ、通信部、ＵＳＢインターフェース、外部記憶部などが内部バスで接続されている。ＵＳＢインターフェースは、接続ケーブル４００でデバイス３００と直結（ローカル接続）してデータ送受信をするためのインターフェースであり、その他の構成については、クライアントＰＣ１００と同様であるため、その説明については省略する。
【００３４】
外部記憶部は、ＯＳ（不図示）、情報取得部２０１、デバイス制御部２０２、クライアント制御部２０３、通信制御部２０４などのソフトウェア部品及び制御に必要な各種データが格納される。これらソフトウェア部品及び各種データは、ＣＰＵの制御に従い、メモリ上に読み出されて各種制御が実行される。
【００３５】
情報取得部２０１は、デバイス３００を一意に識別するためのデバイス識別情報と当該デバイスが具備している機能を一意に識別するための機能識別情報（以下、併せてデバイス個体情報）を、通信制御部２０４を介して取得するソフトウェア部品である。
【００３６】
デバイス制御部２０２は、情報取得部２０１が取得したデバイス個体情報に基づいて、自装置に接続されているデバイス３００とその機能を管理し、また、クライアント制御部２０３、通信制御部２０４と連携してデバイス３００との間の処理や制御を行うソフトウェア部品である。具体的には、クライアント制御部２０３から転送されてくるデータ入出力要求（アイソクロナス出力要求など）をデバイス３００へ送信し、デバイス３００から受信したデータ（「応答情報」など）をクライアント制御部２０３へ転送する。
【００３７】
クライアント制御部２０３は、デバイス制御部２０２、通信制御部２０４と連携して、クライアントＰＣ１００との間の処理や制御を行うソフトウェア部品である。クライアントＰＣ１００からの要求に応じて、デバイス制御部２０２が管理するデバイス個体情報を、通信制御部２０４を介してクライアントＰＣ１００に送信する。また、通信制御部２０４を介して受信したデータ入出力要求（アイソクロナス出力要求など）をデバイス制御部２０２へ転送し、デバイス制御部２０２から転送されてくるデバイス３００のデータを、通信制御部２０４を介してクライアントＰＣ１００に送信する。
【００３８】
また、クライアント制御部２０３は、デバイス制御部２０２から転送されてくる「応答情報」を破棄する機能を備えている。さらに、アイソクロナス出力要求の受信回数（以下、単に受信回数）、及び規定した受信回数を満たすまでに要した時間（以下、所要時間）をカウントする機能を備え、このカウント値をもとにして、クライアントＰＣ１００からデバイスサーバ２００までのデータ伝送区間（以下、ネットワーク区間）の遅延を調整するための補正値を算出する機能を備えている。
【００３９】
補正値は、次の算出式で示すように、カウントした受信回数、所要時間、アイソクロナス出力要求に含まれる「転送インターバル」及び「フレーム数（ｎ）」の値（図２（Ｂ）参照）を用いて算出される。
【００４０】
［算出式］
補正値
＝｛所要時間−（受信回数×転送インターバル×データ転送周期）｝÷受信回数
【００４１】
データ転送周期は、デバイス３００側のＵＳＢ規格で決まるもので、ＨｉｇｈＳｐｅｅｄ（４８０Ｍｂｐｓ）のときは０．１２５［ｍｓ］、ＦｕｌｌＳｐｅｅｄ（１２Ｍｂｐｓ）及びＬｏｗＳｐｅｅｄ（１．５Ｍｂｐｓ）のときは１［ｍｓ］である。
【００４２】
クライアント制御部２０３は、算出した補正値をクライアントＰＣ１００に送り、クライアントＰＣ１００のＵＳＢ仮想バスデバイス１０５によりダミー応答の通知間隔が調整される。
【００４３】
通信制御部２０４は、クライアントＰＣ１００との間のセッションを制御（開始、切断）する機能を備えるとともに、デバイス３００との間で送受信する「ＵＳＢデータ」とネットワーク５００を介してクライアントＰＣ１００と送受信する「ネットワークパケット」との変換処理を行い、クライアントＰＣ１００やデバイス３００との間のデータ送受信の制御を行うソフトウェア部品である。
【００４４】
＜４．デバイス３００の構成＞
デバイス３００（３００Ａ、３００Ｂ）は、ＵＳＢインターフェースを有し、アイソクロナス転送をサポート（対応）している汎用的な入出力機器（デバイス）である。例えば、スピーカなどの出力機器、ディスプレイなどの表示機器、プリンタやＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）などの周辺機器である。ただし、これらに限定されるものでなく、アイソクロナス転送をサポート（対応）している別のデバイスであってもよい。
【００４５】
なお、上述したデバイスサーバ２００、デバイス３００をそれぞれ別体の装置、機器として説明したが、これに限定されるものではなく、デバイスサーバ２００をデバイス３００と一体構造としても良い。
【００４６】
＜５．デバイス制御システムの概略シーケンス＞
次に、上述したデバイス制御システムのアイソクロナス転送による動作シーケンスについて説明する。図３は、クライアントＰＣ１００からデバイス３００に対してアイソクロナス出力要求するときの過程を示したシーケンス図である。なお、クライアントＰＣ１００は、主要な構成のみが図示されている。
【００４７】
また、クライアントＰＣ１００は、デバイスサーバ２００を介して目的とするデバイス３００を仮想化制御できる状態になっているものとして説明する。
【００４８】
まず、クライアントＰＣ１００において、上位層のソフトウェアプログラム、例えば、アプリケーションプログラム１０１（以下、ＡＰ１０１）がデバイス３００へのアイソクロナス転送によるデータ出力要求を指示すると、デバイスドライバ１０３によってデバイス３００に応じた制御コマンドに変換され、ＵＳＢクラスドライバ１０４によってＵＳＢのデータ形式に準拠したパケットデータ（以下、ＵＳＢデータ）に変換されて、ＵＳＢ仮想バスデバイス１０５に送られる（タイミングＴ３０１〜Ｔ３０２）。
【００４９】
ＵＳＢ仮想バスデバイス１０５は、ＵＳＢクラスドライバ１０４から送られてきたアイソクロナス出力要求を通信制御部１０６に転送するとともに、当該アイソクロナス出力要求に対するダミー応答の生成を行う。
【００５０】
通信制御部１０６は、ＵＳＢ仮想バスデバイス１０５から転送されてきたアイソクロナス出力要求をネットワークパケットに変換して、仮想化制御しているデバイス３００が接続されたデバイスサーバ２００に対して送信する（タイミングＴ３０３）。
【００５１】
ＵＳＢ仮想バスデバイス１０５では、通信制御部１０６からアイソクロナス出力要求（ネットワークパケット）が送出された後、インターバル時間が経過すると、生成したダミー応答をＵＳＢクラスドライバ１０４に通知する（タイミングＴ３０４）。
【００５２】
ＵＳＢクラスドライバ１０４がダミー応答を受信すると、デバイスドライバ１０３を介してＡＰ１０１に通知がなされる。ＡＰ１０１は、この通知によってデバイス３００から「応答情報」を受信したと判断し、次のデータ出力要求の指示を行う（タイミングＴ３０５）。
【００５３】
このように、クライアントＰＣ１００では、データ送受信が完了するまでの間、上述した一連の処理（タイミングＴ３０１〜Ｔ３０５）を繰り返し実行する。
【００５４】
一方、デバイスサーバ２００では、クライアントＰＣ１００から送られてくるアイソクロナス出力要求（ネットワークパケット）を受信すると、通信制御部２０４でＵＳＢデータに変換してクライアント制御部２０３に送り、クライアント制御部２０３は、このアイソクロナス入力要求をデバイス制御部２０２に転送する。
【００５５】
デバイス制御部２０２は、アイソクロナス出力要求に含まれるデバイス識別情報（図２（Ａ）参照）とデバイス個体情報を照合して、該当するデバイス３００を識別し、当該デバイス３００に対してアイソクロナス出力要求を送信する（タイミングＴ３０６）。
【００５６】
デバイス３００は、受信したアイソクロナス出力要求に基づいてデータ出力処理を実行し、当該アイソクロナス出力要求に対する「応答情報」をデバイスサーバ２００に送信（返送）する（タイミングＴ３０７）。
【００５７】
デバイスサーバ２００は、デバイス３００から受信した「応答情報」を、デバイス制御部２０２を介してクライアント制御部２０３に転送し、クライアント制御部２０３は、転送されてきた「応答情報」をクライアントＰＣ１００に送信（返送）せずに、破棄する（タイミングＴ３０８）。
【００５８】
このように、デバイスサーバ２００では、データ送受信が完了するまでの間、上述した一連の処理（タイミングＴ３０６〜Ｔ３０８）を繰り返し実行する。
【００５９】
＜６．ダミー応答の間隔調整＞
なお、デバイスサーバ２００のクライアント制御部２０３では、規定したアイソクロナス出力要求の受信回数（例えば、１００回）と、規定の受信回数を満たすまでの所要時間をカウントしている。
【００６０】
規定の受信回数に達すると、このカウント値をもとにして補正値を算出して、クライアントＰＣ１００に対して送信する（タイミングＴ３１０、Ｔ３１１）。なお、規定の受信回数を満たすと、カウント値をリセットし、新たに受信回数、所要時間をカウントする。
【００６１】
クライアントＰＣ１００は、デバイスサーバ２００から受信した補正値がプラス値の場合、ネットワーク区間で遅延が発生していると判断し、ＵＳＢ仮想バスデバイス１０５によってダミー応答の通知間隔を補正値に応じた時間短く（速く）するように調整する（タイミングＴ３１２）。
【００６２】
ダミー応答の通知間隔が短く（速く）なると、ＡＰ１０１から指示されるデータ出力要求の間隔も短く（速く）なり、最終的にクライアントＰＣ１００のアイソクロナス出力要求の送信間隔も速くなるため、ネットワーク区間の遅延による影響をクライアントＰＣ側で吸収することができる。
【００６３】
このように、クライアントＰＣ１００内では、アイソクロナス出力要求パケットを送信した後、ダミー応答を生成し、インターバル時間が経過すると、上位層のソフトウェアプログラムにダミー応答が通知され、デバイス３００から「応答情報」を受信したものとみなして、次のアイソクロナス出力要求（データ）を送出される。従って、ネットワーク区間の遅延によりデバイス３００からの「応答情報」が遅れて、次のデータ出力要求が指示できない状態は回避され、アイソクロナス出力転送を維持することができる。
【００６４】
一方、デバイスサーバ２００は、デバイス３００からの「応答情報」をクライアントＰＣ１００に転送せずに破棄するため、ネットワーク５００に「応答情報」が送出されず、ネットワークトラフィックへの影響も低減する。
【００６５】
また、デバイスサーバ２００は、アイソクロナス出力要求の受信回数と、規定した受信回数に要した所要時間によって算出した補正値により、ネットワーク区間の遅延状態を判定して、この補正値をクライアントＰＣ１００に送り、クライアントＰＣは、補正値に基づいてダミー応答の通知間隔を調整することにより、ネットワーク区間で発生している遅延をクライアントＰＣ１００側で吸収することができる。
【００６６】
なお、ＵＳＢ規格のアイソクロナス転送では、エラーチェックやリトライを行わない仕様であり、転送中にエラーが発生した場合であっても、エラーが復旧するまでクライアントＰＣからデバイスサーバ２００に対してアイソクロナス出力要求の送信が継続される。エラーが復旧できない場合は、ユーザがクライアントＰＣ１００のＡＰ１０１などから所定の操作により、通信終了、再起動などを行う。
【実施例２】
【００６７】
＜７．マルチキャスト通信システムへの適用例＞
本実施例は、マルチキャスト通信をアイソクロナス出力転送で実施する点が特徴である。図４に示すマルチキャスト通信システムは、クライアントＰＣ１００、デバイスサーバ２００（２００Ａ、２００Ｂ）、デバイス３００（３００Ａ，３００Ｂ）から構成されており、ネットワーク上の複数のＵＳＢスピーカ（デバイス３００Ａ、３００Ｂ）に対してクライアントＰＣ１００の音声データを一斉に出力（配信）することができるシステムである。
【００６８】
なお、本システムの装置や機器の構成及び機能、接続形態などは、図１のデバイス制御システムのクライアントＰＣ１００、デバイスサーバ２００、デバイス３００で説明したものと、ほとんどが同じであるため、以下、重複する箇所の詳細な説明は省略する。
【００６９】
クライアントＰＣ１００は、音声データの配信元となるデータ配信装置である。本実施例では、自装置内の音声データ又は自装置に接続したマイク等の入力機器に入力された音声を音声データに変換し、デバイスサーバ２００を介して複数のＵＳＢスピーカ（デバイス３００Ａ，３００Ｂ）に一斉送信する機能を備えている。
【００７０】
また、クライアントＰＣ１００は、マルチキャスト配信の設定を行うためのデータ配信設定機能を備えている。本機能は、アプリケーションプログラム１０１に含まれる形態であってもよく、独立したソフトウェアプログラム（ユーティリティ）であってもよい。
【００７１】
データ配信設定機能では、データ転送方式を設定するための「転送モード」、ＵＳＢスピーカ（デバイス３００Ａ、３００Ｂ）が接続されているデバイスサーバ２００の「宛先情報」（ＩＰアドレス、ＭＡＣアドレス）などを設定する。これらの設定が完了するとマルチキャスト通信で使用するマルチキャストアドレス情報（マルチキャストＩＰ及びマルチキャストＭＡＣ）を決定し、「宛先情報」が設定されている装置に対してマルチキャストアドレス情報を通知する。
【００７２】
デバイス３００（３００Ａ，３００Ｂ）は、音声データを変換して音声出力するＵＳＢスピーカである。デバイスサーバ２００を介してクライアントＰＣ１００から配信されてくる音声データを出力するための機器である。
【００７３】
＜８．マルチキャスト配信システムのシーケンス＞
図５は、上述したマルチキャスト配信システムにおいて、クライアントＰＣ１００からアイソクロナス転送により複数のＵＳＢスピーカ（デバイス３００Ａ、３００Ｂ）に対して音声データを一斉配信する過程を示したシーケンス図である。なお、シーケンス図のクライアントＰＣ１００は、主な構成だけ図示してある。
【００７４】
また、クライアントＰＣ１００は、デバイスサーバ２００を介してＵＳＢスピーカ（デバイス３００Ａ、３００Ｂ）と接続（仮想化制御）できる状態であるものとして説明する。
【００７５】
＜８−１．マルチキャスト配信設定／初期化処理＞
まず、クライアントＰＣ１００において、マルチキャスト配信に必要となる情報を設定する。具体的には、「データ転送モード」として「アイソクロナス転送」、ＵＳＢスピーカ（デバイス３００Ａ、３００Ｂ）が接続されているデバイスサーバ２００Ａ、２００Ｂの「宛先情報」（ＩＰアドレス／ＭＡＣアドレス）を設定する（タイミングＴ５０１）。
【００７６】
マルチキャスト配信の設定が完了すると、マルチキャスト通信で使用するマルチキャストアドレス（マルチキャストＩＰアドレス／マルチキャストＭＡＣアドレス）が決定され、このマルチキャストアドレスを「宛先情報」として設定したデバイスサーバ２００Ａ、２００Ｂ宛に送信する（タイミングＴ５０２）。
【００７７】
デバイスサーバ２００Ａ，２００Ｂは、クライアントＰＣ１００から送られてくるマルチキャストアドレスをクライアント制御部２０３に登録（記憶）する（タイミングＴ５０３）。
【００７８】
続いて、クライアントＰＣ１００は、データ配信を開始する前に、デバイスサーバ２００Ａ、２００Ｂに対して、マルチキャスト通信を実行可能な状態とするための初期化処理の実行要求（初期化要求）を送信する。
【００７９】
各ＵＳＢスピーカ（デバイス３００Ａ、３００Ｂ）では、それぞれ、クライアントＰＣ１００からの初期化要求に応じて、初期化処理（データ転送モードの切り替えなど）を実行し、初期化処理が完了すると、完了応答をクライアントＰＣ１００に返送し、クライアントＰＣ１００が完了応答を受信することで、マルチキャスト通信が可能な状態となる（タイミングＴ５０４〜Ｔ５０６）。
【００８０】
このように、各装置でマルチキャストアドレスの設定・登録、初期化処理が完了すると、クライアントＰＣ１００では、マルチキャストアドレス宛のパケットデータ（以下、マルチキャストパケット）を作成して送信し、デバイスサーバ２００Ａ、２００Ｂではマルチキャストパケットの受信が可能な状態となる。クライアントＰＣ１００は、マルチキャストアドレスを指定したデータパケットを作成すればよく、個々のデバイスサーバ２００宛にデータパケットを作成する必要がなくなる。
【００８１】
＜８−２．アイソクロナス転送によるマルチキャスト＞
まず、クライアントＰＣ１００は、自装置内の音声データ又はマイクからの音声を変換した音声データをマルチキャスト配信するため、ＡＰ１０１によって、当該音声データを含むアイソクロナス転送によるデータ出力要求を指示する。当該アイソクロナス出力要求は、デバイスドライバ１０３によってＵＳＢスピーカ（デバイス３００Ａ、３００Ｂ）に応じた制御コマンドに変換され、ＵＳＢクラスドライバ１０４によってＵＳＢデータに変換され、ＵＳＢ仮想バスデバイス１０５に送られる（タイミングＴ５０７〜Ｔ５０８）。
【００８２】
ＵＳＢ仮想バスデバイス１０５は、ＵＳＢクラスドライバ１０４から送られてくるアイソクロナス出力要求を通信制御部１０６に転送するとともに、当該アイソクロナス出力要求に対するダミー応答を生成する。
【００８３】
通信制御部１０６は、ＵＳＢ仮想バスデバイス１０５から転送されてきたアイソクロナス出力要求をデータ配信設定機能によって決定されたマルチキャストアドレス宛てのネットワークパケット（以下、マルチキャストパケット）に変換して送信する（タイミングＴ５０９）。なお、このマルチキャストパケットを作成することで、個々のデバイスサーバ宛にデータパケットを作成する必要がなくなるため、処理負荷が軽減される。
【００８４】
ＵＳＢ仮想バスデバイス１０５では、実施例１と同様、マルチキャストパケットに変換されたアイソクロナス出力要求が送信された後、所定のインターバル時間が経過すると、生成したダミー応答をＵＳＢクラスドライバ１０４に通知する（タイミングＴ５１０）。
【００８５】
ダミー応答がＵＳＢクラスドライバ１０４に通知されると、さらに、デバイスドライバ１０３を経由してＡＰ１０１に通知される。ＡＰ１０１は、ダミー応答の通知を受信すると、これを各ＵＳＢスピーカ（デバイス３００Ａ、３００Ｂ）からの「応答情報」であると判断し、次のデータ出力要求を指示する（タイミングＴ５１１）。
【００８６】
このように、クライアントＰＣ１００では、ＡＰ１０１からのデータ送受信完了が指示されるまでの間、上述した一連のアイソクロナス出力要求処理（タイミングＴ５０７〜Ｔ５１１）を繰り返し実行する。
【００８７】
一方、デバイスサーバ２００Ａ、２００Ｂでは、それぞれ、クライアントＰＣ１００から送られてくるアイソクロナス出力要求（マルチキャストパケット）を受信すると、通信制御部２０４でＵＳＢデータに変換して、クライアント制御部２０３に送り、クライアント制御部２０３はこのアイソクロナス入力要求をデバイス制御部２０２に転送する。
【００８８】
デバイス制御部２０２は、アイソクロナス出力要求に含まれるデバイス識別情報（図２（Ａ）参照）とデバイス個体情報を照合して、該当するデバイスを識別し、該当するＵＳＢスピーカ（デバイス３００Ａ、３００Ｂ）に対してアイソクロナス出力要求を送信する（タイミングＴ５１２）。
【００８９】
ＵＳＢスピーカ（デバイス３００Ａ、３００Ｂ）は、それぞれ、受信したアイソクロナス出力要求に基づいてデータ出力処理を実行し、当該アイソクロナス出力要求に対する「応答情報」をデバイスサーバ２００に送信（返送）する（タイミングＴ５１３）。すなわち、クライアントＰＣ１００から送られてきた音声データがそれぞれのＵＳＢスピーカで変換され、一斉に音声出力されることになる。
【００９０】
一方、デバイスサーバ２００Ａ，２００Ｂは、それぞれ、デバイス３００Ａ、３００Ｂから受信した「応答情報」を、デバイス制御部２０２を介してクライアント制御部２０３に転送し、クライアント制御部２０３は、当該「応答情報」をクライアントＰＣ１００に転送（返送）せずに、破棄する（タイミングＴ５１４）。
【００９１】
このように、デバイスサーバ２００Ａ、２００Ｂでは、データ送受信が完了するまでの間、一連のアイソクロナス出力要求処理（タイミングＴ５１２〜Ｔ５１４）の処理を繰り返し実行する。
【００９２】
なお、実施例１と同様に、デバイスサーバ２００Ａ、２００Ｂでは、それぞれ、補正値が算出され、クライアントＰＣ１００に対して補正値を送る。クライアントＰＣ１００では、複数のデバイスサーバ２００から補正値が送られてくるため、ＵＳＢ仮想バスデバイス１０５において、各補正値を比較して、ダミー応答の通知間隔を調整する（タイミングＴ５１５〜Ｔ５１７）。
【００９３】
このように、アイソクロナス出力転送によるマルチキャスト配信に適用することもできるため、本実施例の如く、１台のデータ配信元装置（クライアントＰＣ１００）からの音声データ（ストリーミングデータ）をネットワーク上に配置した複数のＵＳＢスピーカ(デバイス３００Ａ、３００Ｂ)に一斉に配信することも可能となる。
【００９４】
なお、本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において適宜変更可能である。
【００９５】
また、本発明の目的は、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給システムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出して処理を実行することによっても達成することができる。
【００９６】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードを記憶したコンピュータで読み取り可能な記憶媒体は本発明を構成することになる。
【００９７】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現されるように構成しても良い。
【００９８】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、このプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を実行し、その処理に応じて上述した実施形態が実現される場合も含んでいる。
【００９９】
なお、プログラムコードを供給するため、例えば、フロッピー（登録商標)ディスク、ハードディスク、光磁気ディスク、ＣＤやＤＶＤに代表される光ディスク、磁気テープ、不揮発性のメモリカード、ＲＯＭ等の記憶媒体を用いることができる。又は、プログラムコードは、ネットワークを介してダウンロードしてもよい。
【符号の説明】
【０１００】
１００Ａ，１００Ｂ：クライアントＰＣ
１０１：アプリケーションプログラム
１０２：常駐モジュール
１０３：デバイスドライバ
１０４：ＵＳＢクラスドライバ
１０５：ＵＳＢ仮想バスデバイス
１０６：通信制御部
２００：デバイスサーバ
２０１：情報取得部
２０２：デバイス制御部
２０３：クライアント制御部
２０４：通信制御部
３００Ａ，３００Ｂ：デバイス（ＵＳＢスピーカ）
４００：接続ケーブル
５００：ネットワーク
【図１】
0005646986.tif 000002
【図２】
0005646986.tif 000003
【図３】
0005646986.tif 000004
【図４】
0005646986.tif 000005
【図５】
0005646986.tif 000006