説明

クライアント装置、デバイス制御方法、およびデバイス制御システム

【課題】デバイスサーバを介してネットワーク上のクライアントPCとデバイス間でデータ送受信可能なシステムにおいて、アイソクロナス転送方式により、クライアントPCからデバイスに対してデータを送信する場合、ネットワーク区間で生じるデータ転送速度の低下の影響をできる限り排除してデータ転送できるようにする。
【解決手段】クライアントPCは、自装置内でデータ出力要求に対するデバイスからの応答情報を擬製して処理することで応答情報を受信したものと判断し、デバイスからの応答情報を待たずに次のデータ出力要求を実行する。一方、デバイスサーバは、デバイスからの応答情報を破棄してクライアントPCへ返送しないように制御する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークを介してデバイスを制御するための機能を備えたクライアント装置、デバイス制御方法、およびデバイス制御システムに関するものである。
【背景技術】
【0002】
ネットワークの普及により、従来、パーソナルコンピュータ(以下、クライアントPC)などに直結(ローカル接続)して利用していたデバイス(周辺機器)を、LAN(Local Area Network)などのネットワーク上のクライアントPCから利用できるように工夫したデバイスサーバが発表されている。
【0003】
例えば、クライアントPCとUSB(Universal
Serial Bus)規格のインターフェースを介して直結(ローカル接続)して使用するプリンタ、ストレージ、スキャナなどのデバイス(以下、USBデバイス)をデバイスサーバに接続することで、ネットワーク上のクライアントPCは、デバイスサーバを介してUSBデバイスにアクセスし、直結(ローカル接続)したときと同様の状態で使用できるようになる。
【0004】
先に本出願人においても、デバイスサーバが自身に接続されているデバイスを監視し、デバイスの状態変化を検知すると、この検知を示す情報(以下、トリガ通知)をネットワーク上のクライアントPCへ通知することで、クライアントPCとデバイスサーバ間でセッションを開始し、デバイスサーバを介してネットワーク上のクライアントPCとデバイス間でデータ送受信を可能とするデバイス制御システムを提案している(特許文献1参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特願2009−253395
【発明の概要】
【発明が解決しようとする課題】
【0006】
例えば、クライアントPCからデバイスに対して音声や映像などリアルタイム性を必要とするストリーミングデータを転送する場合、一定時間あたりの最低限のデータ転送量を保証するアイソクロナス方式によるデータ転送(以下、アイソクロナス転送)を行うことで、全体の転送量が高くても、最低限のデータ転送量が保証される為、途切れることなくデータを転送することができる。
【0007】
特許文献1のように、デバイスサーバを介してクライアントPCとデバイス間でデータ送受信を実行させるシステムにおいて、上述のアイソクロナス転送を実施する場合、クライアントPCとデバイスは直結(ローカル接続)ではなく、LANなどのネットワーク経由で接続されているので、ネットワークトラフィックが高くなり、ネットワーク区間のデータ転送速度が低下するため、アイソクロナス転送で保証する最低限のデータ転送量を維持する必要がある。
【0008】
そこで、本発明は、デバイスサーバを介してネットワーク上のクライアントPCとデバイス間でデータ送受信を可能とするデバイス制御システムにおいて、アイソクロナス転送により、クライアントPCからデバイスに対してデータ転送する(以下、アイソクロナス出力転送)場合、ネットワーク区間で生じるデータ転送速度低下の影響をできる限りなくして、アイソクロナス出力転送を維持できるようにすることを目的とする。
【課題を解決するための手段】
【0009】
上記の課題を解決するために、請求項1に記載のクライアント装置は、アイソクロナス転送可能なデバイスがローカル接続されているデバイス制御装置に、ネットワークを介して接続されているクライアント装置であって、前記デバイスに対するデータ出力を指示する出力要求指示手段と、前記デバイスを識別するための個体情報を取得し、当該個体情報をもとに前記デバイス制御装置に接続されているデバイスを識別する個体情報識別手段と、前記個体情報識別手段で識別した前記デバイスが直接接続されているようにシミュレートする仮想化制御手段と、前記出力要求指示手段から前記個体情報識別手段で識別した前記デバイスに対してアイソクロナス転送によるデータ出力要求が指示されると、当該デバイスの個体情報を含むアイソクロナス出力要求を生成する出力要求生成手段と、前記出力要求生成手段で生成した前記アイソクロナス出力要求に対する応答情報を前記出力要求指示手段に通知する応答情報通知手段と、前記仮想化制御手段により接続がシミュレートされている前記デバイスに対して、前記出力要求生成手段で生成したアイソクロナス出力要求をアイソクロナス転送によって送信する通信制御手段と、前記出力要求生成手段で生成されたアイソクロナス出力要求に対する前記デバイスの応答情報を擬製し、前記通信制御手段によって前記アイソクロナス出力要求が送信された後、所定時間が経過すると、当該擬製したデバイスの応答情報を前記応答情報通知手段に通知するダミー応答通知手段と、を備えることを特徴とする。
【発明の効果】
【0010】
本発明によれば、クライアントPCは、自装置内でデータ出力要求に対するデバイスからの応答情報を擬製して処理することで、応答情報を受信したものと判断して、デバイスからの応答情報を待たずに次のデータ出力要求を送出し、デバイスサーバは、デバイスからの応答情報を破棄してクライアントPCへ返送しないように制御するので、クライアントPCは、デバイスからの応答情報の遅延(受信待ち)によって、次のデータ出力要求の処理が停滞することもなくなるため、アイソクロナス出力転送で保証する最低限のデータ転送量を維持することができ、また、デバイスサーバからネットワーク上に応答情報が送出されなくなるので、ネットワークトラフィックの低減にも寄与する。
【図面の簡単な説明】
【0011】
【図1】実施例1に係るデバイス制御システムの概略構成を示す図である。
【図2】アイソクロナス出力要求パケットのデータ構成を例示する図である。
【図3】実施例1に係るデバイス制御システムにおけるアイソクロナス出力要求の過程を示すシーケンス図である。
【図4】実施例2に係るデバイス制御システムの概略構成を示す図である。
【図5】図4のデバイス制御システムにおけるアイソクロナス出力要求の過程を示すシーケンス図である。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
【実施例1】
【0013】
<1.デバイス制御システムの構成>
図1は、本発明を実現するための「デバイス制御システム」の概略構成であり、クライアントPC100(100A,100B)、デバイスサーバ200、デバイス300(300A,300B)から構成されている。
【0014】
デバイス300(300A,300B)は、USB(Universal Serial Bus)インターフェースに準拠した接続ケーブル400でデバイスサーバ200に接続(ローカル接続)されている。ただし、USBに限定されるものではなく、IEEE1394など別のインターフェースに準拠したものであってもよい。一方、クライアントPC100(100A,100B)は、デバイスサーバ200と有線又は無線のネットワーク500を介して接続されている。
【0015】
<2.クライアントPC100の構成>
クライアントPC100は、本発明の「クライアント装置」の実施形態の一例であり、一般的なパーソナルコンピュータと同様なハードウェア構成を備えており、不図示のCPU、入力部、表示部、メモリ、通信部、外部記憶部などが内部バスで接続されている。
【0016】
CPUは、クライアントPC100内の各部を制御する中央処理装置である。入力部は、キーボードやマウス等の操作装置である。表示部は、液晶モニタ等の表示装置である。メモリは、RAM、ROM等の記憶装置である。通信部は、ネットワーク500(有線又は無線ネットワーク)に接続するためのインターフェースであり、デバイスサーバ200とデータ通信を行うことで、デバイス300とデータを送受信することが可能となる。外部記憶部は、ハードディスク等の記憶装置である。
【0017】
次に、外部記憶部に格納されるソフトウェア部品などの機能について順次説明する。
【0018】
外部記憶部には、OS(不図示)、アプリケーションプログラム101、常駐モジュール102、デバイスドライバ103、USBクラスドライバ104、USB仮想バスデバイス105、通信制御部106などのソフトウェア部品及び制御に必要な各種データが格納される。これらソフトウェア部品及び各種データは、CPUの制御に従い、メモリ上に読み出されて各種制御が実行される。
【0019】
アプリケーションプログラム101は、ドライバソフトウェア部品(デバイスドライバ103、USBクラスドライバ104、USB仮想バスデバイス105)を介して、デバイス300に対してデータ入出力要求を送るソフトウェア部品である。
【0020】
常駐モジュール102は、OSが起動している間、常に待機及び動作しているソフトウェア部品である。ネットワーク500上にあるデバイスサーバ200とデータの送受信を行うことにより、デバイスサーバ200に接続されたデバイス300を認識し、当該デバイス300を識別するためのデバイス情報を受信し、受信したデバイス情報をもとに、デバイス300とのデータ送受信に必要となるデバイスドライバ103、USBクラスドライバ104、USB仮想バスデバイス105を一意に特定して、動的に生成し、当該デバイス300を仮想化制御(後述)できる状態にする。
【0021】
デバイスドライバ103は、OSやアプリケーションプログラム101、常駐モジュール102など上位層のソフトウェアプログラムからのデータ入出力要求を対象となるデバイス300に応じたデータ形式のデータ(以下、制御コマンド)に変換し、また、この制御コマンドに対する応答を上位層のソフトウェアプログラムへ通知するソフトウェア部品である。本実施例では、アイソクロナス転送によるデータ出力要求(以下、アイソクロナス出力要求)が制御コマンドに変換される。
【0022】
USBクラスドライバ104は、デバイスドライバ103で制御コマンドに変換されたデータ入出力要求をUSBのデータ形式に準拠したパケットデータ(以下、USBデータ)に変換してUSB仮想バスデバイス105に送り、USB仮想バスデバイス105から送られてくるUSBデータを制御コマンドと同様のデータ形式に変換してデバイスドライバ103へ送るソフトウェア部品である。本実施例では、デバイスドライバ103で制御コマンドに変換されたアイソクロナス出力要求がUSBデータに変換される。
【0023】
USB仮想バスデバイス105は、上位層のソフトウェアプログラムからのデータ入出力要求に対して、デバイス300がクライアントPC100に直結(ローカル接続)しているときと同様の振る舞いをシミュレートする機能(以下、仮想化制御)を備えたソフトウェア部品である。この「仮想化制御」によって、デバイス300をローカル接続したときと同じ状態でデータ送受信を行うことができる。
【0024】
また、USB仮想バスデバイス105は、アイソクロナス出力要求に対する応答情報(以下、応答情報)を擬製し、この「擬製した応答情報」(以下、ダミー応答)をUSBクラスドライバ104に対して通知する機能を備えており、USBクラスドライバ104からのアイソクロナス出力要求を受信すると、当該アイソクロナス出力要求に対するダミー応答を生成し、当該アイソクロナス出力要求を通信制御部106に転送する。そして、通信制御部106からアイソクロナス出力要求が送信された後、所定時間(以下、インターバル時間)が経過すると、生成したダミー応答をUSBクラスドライバ104に対して通知する。さらに、デバイスサーバ200から送られてくる補正値(後述)に基づいて、ダミー応答の通知間隔を調整する機能を備えている。
【0025】
なお、インターバル時間は、次の算出式で示すように、アイソクロナス出力要求に含まれる「転送インターバル」及び「フレーム数(n)」の値(図2(B)参照)を用いて算出され、データ送受信完了までの間は算出したインターバル時間が適用される。
【0026】
[算出式]
インターバル時間=転送インターバル×フレーム数×データ転送周期
【0027】
データ転送周期は、デバイス300側のUSB規格で決まるもので、HighSpeed(480Mbps)のときは0.125[ms]、FullSpeed(12Mbps)及びLowSpeed(1.5Mbps)のときは1[ms]である。
【0028】
通信制御部106は、USB仮想バスデバイス105から送られてくる「USBデータ」とネットワーク500を介してデバイスサーバ200と送受信する「ネットワークパケット」との変換処理を行い、通信部を介してデバイスサーバ200との間のデータ送受信の制御を行うソフトウェア部品である。また、上位層のソフトウェアプログラムからのデータ入出力要求を受信すると、デバイスサーバ200とセッションを開始し、データ送受信が完了すると、当該セッションを切断するセッション制御機能を備えている。
【0029】
<2−1.アイスクロナス出力要求のデータ構成>
ここで、USBクラスドライバ104で生成されるアイソクロナス出力要求のデータ構成を説明する。図2は、アイソクロナス出力要求(USBデータ)のデータ構成の一例であり、図2(A)が示すように、ヘッダ部とデータ部から構成されている。
【0030】
ヘッダ部には、本システムのプロトコルであることを識別するための「署名データ」、パケットのデータサイズを示す「電文サイズ」、制御コマンドの内容(種別)を示す「コマンドID」、デバイス300を一意に識別するためのデバイス識別情報(「ベンダーID(VID)」、「製品ID(PID)」、「シリアル番号」)、デバイス300が具備している機能を一意に識別するための機能識別情報(「機能番号」、「エンドポイント」)などが格納される。本実施例では、アイソクロナス出力要求であることを示すID情報が「コマンドID」として格納される。
【0031】
図2(B)は、図2(A)で示した「データ部」の構成の一例であり、デバイス300のスペックなどに応じて規定されているフレーム(データ転送の基本単位)に関する情報(以下、フレーム情報)と、デバイス300に出力させるデータの実体(以下、出力データ)から構成される。
【0032】
フレーム情報は、フレーム全体に関する情報と各フレーム(1〜n)の個別情報から構成される。フレーム全体に関する情報として、データ転送周期を設定するためのパラメータである「転送インターバル」、出力データの容量を示す「送信データサイズ」、データ転送を開始する際のフレーム番号を指定した場合に設定される「フレーム開始番号」、1回のアイソクロナス出力要求で使用するフレームの総数を示す「フレーム数(n)」が格納される。各フレーム(1〜n)の個別情報として、フレームの先頭位置を示す「データオフセット」、フレームが格納する出力データの容量を示す「フレーム送信サイズ」、各フレームのエラー情報を示す「ステータス」が格納される。
【0033】
<3.デバイスサーバ200の構成>
デバイスサーバ200は、本発明の「デバイス制御装置」の実施形態の一例であり、不図示のCPU、メモリ、通信部、USBインターフェース、外部記憶部などが内部バスで接続されている。USBインターフェースは、接続ケーブル400でデバイス300と直結(ローカル接続)してデータ送受信をするためのインターフェースであり、その他の構成については、クライアントPC100と同様であるため、その説明については省略する。
【0034】
外部記憶部は、OS(不図示)、情報取得部201、デバイス制御部202、クライアント制御部203、通信制御部204などのソフトウェア部品及び制御に必要な各種データが格納される。これらソフトウェア部品及び各種データは、CPUの制御に従い、メモリ上に読み出されて各種制御が実行される。
【0035】
情報取得部201は、デバイス300を一意に識別するためのデバイス識別情報と当該デバイスが具備している機能を一意に識別するための機能識別情報(以下、併せてデバイス個体情報)を、通信制御部204を介して取得するソフトウェア部品である。
【0036】
デバイス制御部202は、情報取得部201が取得したデバイス個体情報に基づいて、自装置に接続されているデバイス300とその機能を管理し、また、クライアント制御部203、通信制御部204と連携してデバイス300との間の処理や制御を行うソフトウェア部品である。具体的には、クライアント制御部203から転送されてくるデータ入出力要求(アイソクロナス出力要求など)をデバイス300へ送信し、デバイス300から受信したデータ(「応答情報」など)をクライアント制御部203へ転送する。
【0037】
クライアント制御部203は、デバイス制御部202、通信制御部204と連携して、クライアントPC100との間の処理や制御を行うソフトウェア部品である。クライアントPC100からの要求に応じて、デバイス制御部202が管理するデバイス個体情報を、通信制御部204を介してクライアントPC100に送信する。また、通信制御部204を介して受信したデータ入出力要求(アイソクロナス出力要求など)をデバイス制御部202へ転送し、デバイス制御部202から転送されてくるデバイス300のデータを、通信制御部204を介してクライアントPC100に送信する。
【0038】
また、クライアント制御部203は、デバイス制御部202から転送されてくる「応答情報」を破棄する機能を備えている。さらに、アイソクロナス出力要求の受信回数(以下、単に受信回数)、及び規定した受信回数を満たすまでに要した時間(以下、所要時間)をカウントする機能を備え、このカウント値をもとにして、クライアントPC100からデバイスサーバ200までのデータ伝送区間(以下、ネットワーク区間)の遅延を調整するための補正値を算出する機能を備えている。
【0039】
補正値は、次の算出式で示すように、カウントした受信回数、所要時間、アイソクロナス出力要求に含まれる「転送インターバル」及び「フレーム数(n)」の値(図2(B)参照)を用いて算出される。
【0040】
[算出式]
補正値
={所要時間−(受信回数×転送インターバル×データ転送周期)}÷受信回数
【0041】
データ転送周期は、デバイス300側のUSB規格で決まるもので、HighSpeed(480Mbps)のときは0.125[ms]、FullSpeed(12Mbps)及びLowSpeed(1.5Mbps)のときは1[ms]である。
【0042】
クライアント制御部203は、算出した補正値をクライアントPC100に送り、クライアントPC100のUSB仮想バスデバイス105によりダミー応答の通知間隔が調整される。
【0043】
通信制御部204は、クライアントPC100との間のセッションを制御(開始、切断)する機能を備えるとともに、デバイス300との間で送受信する「USBデータ」とネットワーク500を介してクライアントPC100と送受信する「ネットワークパケット」との変換処理を行い、クライアントPC100やデバイス300との間のデータ送受信の制御を行うソフトウェア部品である。
【0044】
<4.デバイス300の構成>
デバイス300(300A、300B)は、USBインターフェースを有し、アイソクロナス転送をサポート(対応)している汎用的な入出力機器(デバイス)である。例えば、スピーカなどの出力機器、ディスプレイなどの表示機器、プリンタやMFP(Multi Function Peripheral)などの周辺機器である。ただし、これらに限定されるものでなく、アイソクロナス転送をサポート(対応)している別のデバイスであってもよい。
【0045】
なお、上述したデバイスサーバ200、デバイス300をそれぞれ別体の装置、機器として説明したが、これに限定されるものではなく、デバイスサーバ200をデバイス300と一体構造としても良い。
【0046】
<5.デバイス制御システムの概略シーケンス>
次に、上述したデバイス制御システムのアイソクロナス転送による動作シーケンスについて説明する。図3は、クライアントPC100からデバイス300に対してアイソクロナス出力要求するときの過程を示したシーケンス図である。なお、クライアントPC100は、主要な構成のみが図示されている。
【0047】
また、クライアントPC100は、デバイスサーバ200を介して目的とするデバイス300を仮想化制御できる状態になっているものとして説明する。
【0048】
まず、クライアントPC100において、上位層のソフトウェアプログラム、例えば、アプリケーションプログラム101(以下、AP101)がデバイス300へのアイソクロナス転送によるデータ出力要求を指示すると、デバイスドライバ103によってデバイス300に応じた制御コマンドに変換され、USBクラスドライバ104によってUSBのデータ形式に準拠したパケットデータ(以下、USBデータ)に変換されて、USB仮想バスデバイス105に送られる(タイミングT301〜T302)。
【0049】
USB仮想バスデバイス105は、USBクラスドライバ104から送られてきたアイソクロナス出力要求を通信制御部106に転送するとともに、当該アイソクロナス出力要求に対するダミー応答の生成を行う。
【0050】
通信制御部106は、USB仮想バスデバイス105から転送されてきたアイソクロナス出力要求をネットワークパケットに変換して、仮想化制御しているデバイス300が接続されたデバイスサーバ200に対して送信する(タイミングT303)。
【0051】
USB仮想バスデバイス105では、通信制御部106からアイソクロナス出力要求(ネットワークパケット)が送出された後、インターバル時間が経過すると、生成したダミー応答をUSBクラスドライバ104に通知する(タイミングT304)。
【0052】
USBクラスドライバ104がダミー応答を受信すると、デバイスドライバ103を介してAP101に通知がなされる。AP101は、この通知によってデバイス300から「応答情報」を受信したと判断し、次のデータ出力要求の指示を行う(タイミングT305)。
【0053】
このように、クライアントPC100では、データ送受信が完了するまでの間、上述した一連の処理(タイミングT301〜T305)を繰り返し実行する。
【0054】
一方、デバイスサーバ200では、クライアントPC100から送られてくるアイソクロナス出力要求(ネットワークパケット)を受信すると、通信制御部204でUSBデータに変換してクライアント制御部203に送り、クライアント制御部203は、このアイソクロナス入力要求をデバイス制御部202に転送する。
【0055】
デバイス制御部202は、アイソクロナス出力要求に含まれるデバイス識別情報(図2(A)参照)とデバイス個体情報を照合して、該当するデバイス300を識別し、当該デバイス300に対してアイソクロナス出力要求を送信する(タイミングT306)。
【0056】
デバイス300は、受信したアイソクロナス出力要求に基づいてデータ出力処理を実行し、当該アイソクロナス出力要求に対する「応答情報」をデバイスサーバ200に送信(返送)する(タイミングT307)。
【0057】
デバイスサーバ200は、デバイス300から受信した「応答情報」を、デバイス制御部202を介してクライアント制御部203に転送し、クライアント制御部203は、転送されてきた「応答情報」をクライアントPC100に送信(返送)せずに、破棄する(タイミングT308)。
【0058】
このように、デバイスサーバ200では、データ送受信が完了するまでの間、上述した一連の処理(タイミングT306〜T308)を繰り返し実行する。
【0059】
<6.ダミー応答の間隔調整>
なお、デバイスサーバ200のクライアント制御部203では、規定したアイソクロナス出力要求の受信回数(例えば、100回)と、規定の受信回数を満たすまでの所要時間をカウントしている。
【0060】
規定の受信回数に達すると、このカウント値をもとにして補正値を算出して、クライアントPC100に対して送信する(タイミングT310、T311)。なお、規定の受信回数を満たすと、カウント値をリセットし、新たに受信回数、所要時間をカウントする。
【0061】
クライアントPC100は、デバイスサーバ200から受信した補正値がプラス値の場合、ネットワーク区間で遅延が発生していると判断し、USB仮想バスデバイス105によってダミー応答の通知間隔を補正値に応じた時間短く(速く)するように調整する(タイミングT312)。
【0062】
ダミー応答の通知間隔が短く(速く)なると、AP101から指示されるデータ出力要求の間隔も短く(速く)なり、最終的にクライアントPC100のアイソクロナス出力要求の送信間隔も速くなるため、ネットワーク区間の遅延による影響をクライアントPC側で吸収することができる。
【0063】
このように、クライアントPC100内では、アイソクロナス出力要求パケットを送信した後、ダミー応答を生成し、インターバル時間が経過すると、上位層のソフトウェアプログラムにダミー応答が通知され、デバイス300から「応答情報」を受信したものとみなして、次のアイソクロナス出力要求(データ)を送出される。従って、ネットワーク区間の遅延によりデバイス300からの「応答情報」が遅れて、次のデータ出力要求が指示できない状態は回避され、アイソクロナス出力転送を維持することができる。
【0064】
一方、デバイスサーバ200は、デバイス300からの「応答情報」をクライアントPC100に転送せずに破棄するため、ネットワーク500に「応答情報」が送出されず、ネットワークトラフィックへの影響も低減する。
【0065】
また、デバイスサーバ200は、アイソクロナス出力要求の受信回数と、規定した受信回数に要した所要時間によって算出した補正値により、ネットワーク区間の遅延状態を判定して、この補正値をクライアントPC100に送り、クライアントPCは、補正値に基づいてダミー応答の通知間隔を調整することにより、ネットワーク区間で発生している遅延をクライアントPC100側で吸収することができる。
【0066】
なお、USB規格のアイソクロナス転送では、エラーチェックやリトライを行わない仕様であり、転送中にエラーが発生した場合であっても、エラーが復旧するまでクライアントPCからデバイスサーバ200に対してアイソクロナス出力要求の送信が継続される。エラーが復旧できない場合は、ユーザがクライアントPC100のAP101などから所定の操作により、通信終了、再起動などを行う。
【実施例2】
【0067】
<7.マルチキャスト通信システムへの適用例>
本実施例は、マルチキャスト通信をアイソクロナス出力転送で実施する点が特徴である。図4に示すマルチキャスト通信システムは、クライアントPC100、デバイスサーバ200(200A、200B)、デバイス300(300A,300B)から構成されており、ネットワーク上の複数のUSBスピーカ(デバイス300A、300B)に対してクライアントPC100の音声データを一斉に出力(配信)することができるシステムである。
【0068】
なお、本システムの装置や機器の構成及び機能、接続形態などは、図1のデバイス制御システムのクライアントPC100、デバイスサーバ200、デバイス300で説明したものと、ほとんどが同じであるため、以下、重複する箇所の詳細な説明は省略する。
【0069】
クライアントPC100は、音声データの配信元となるデータ配信装置である。本実施例では、自装置内の音声データ又は自装置に接続したマイク等の入力機器に入力された音声を音声データに変換し、デバイスサーバ200を介して複数のUSBスピーカ(デバイス300A,300B)に一斉送信する機能を備えている。
【0070】
また、クライアントPC100は、マルチキャスト配信の設定を行うためのデータ配信設定機能を備えている。本機能は、アプリケーションプログラム101に含まれる形態であってもよく、独立したソフトウェアプログラム(ユーティリティ)であってもよい。
【0071】
データ配信設定機能では、データ転送方式を設定するための「転送モード」、USBスピーカ(デバイス300A、300B)が接続されているデバイスサーバ200の「宛先情報」(IPアドレス、MACアドレス)などを設定する。これらの設定が完了するとマルチキャスト通信で使用するマルチキャストアドレス情報(マルチキャストIP及びマルチキャストMAC)を決定し、「宛先情報」が設定されている装置に対してマルチキャストアドレス情報を通知する。
【0072】
デバイス300(300A,300B)は、音声データを変換して音声出力するUSBスピーカである。デバイスサーバ200を介してクライアントPC100から配信されてくる音声データを出力するための機器である。
【0073】
<8.マルチキャスト配信システムのシーケンス>
図5は、上述したマルチキャスト配信システムにおいて、クライアントPC100からアイソクロナス転送により複数のUSBスピーカ(デバイス300A、300B)に対して音声データを一斉配信する過程を示したシーケンス図である。なお、シーケンス図のクライアントPC100は、主な構成だけ図示してある。
【0074】
また、クライアントPC100は、デバイスサーバ200を介してUSBスピーカ(デバイス300A、300B)と接続(仮想化制御)できる状態であるものとして説明する。
【0075】
<8−1.マルチキャスト配信設定/初期化処理>
まず、クライアントPC100において、マルチキャスト配信に必要となる情報を設定する。具体的には、「データ転送モード」として「アイソクロナス転送」、USBスピーカ(デバイス300A、300B)が接続されているデバイスサーバ200A、200Bの「宛先情報」(IPアドレス/MACアドレス)を設定する(タイミングT501)。
【0076】
マルチキャスト配信の設定が完了すると、マルチキャスト通信で使用するマルチキャストアドレス(マルチキャストIPアドレス/マルチキャストMACアドレス)が決定され、このマルチキャストアドレスを「宛先情報」として設定したデバイスサーバ200A、200B宛に送信する(タイミングT502)。
【0077】
デバイスサーバ200A,200Bは、クライアントPC100から送られてくるマルチキャストアドレスをクライアント制御部203に登録(記憶)する(タイミングT503)。
【0078】
続いて、クライアントPC100は、データ配信を開始する前に、デバイスサーバ200A、200Bに対して、マルチキャスト通信を実行可能な状態とするための初期化処理の実行要求(初期化要求)を送信する。
【0079】
各USBスピーカ(デバイス300A、300B)では、それぞれ、クライアントPC100からの初期化要求に応じて、初期化処理(データ転送モードの切り替えなど)を実行し、初期化処理が完了すると、完了応答をクライアントPC100に返送し、クライアントPC100が完了応答を受信することで、マルチキャスト通信が可能な状態となる(タイミングT504〜T506)。
【0080】
このように、各装置でマルチキャストアドレスの設定・登録、初期化処理が完了すると、クライアントPC100では、マルチキャストアドレス宛のパケットデータ(以下、マルチキャストパケット)を作成して送信し、デバイスサーバ200A、200Bではマルチキャストパケットの受信が可能な状態となる。クライアントPC100は、マルチキャストアドレスを指定したデータパケットを作成すればよく、個々のデバイスサーバ200宛にデータパケットを作成する必要がなくなる。
【0081】
<8−2.アイソクロナス転送によるマルチキャスト>
まず、クライアントPC100は、自装置内の音声データ又はマイクからの音声を変換した音声データをマルチキャスト配信するため、AP101によって、当該音声データを含むアイソクロナス転送によるデータ出力要求を指示する。当該アイソクロナス出力要求は、デバイスドライバ103によってUSBスピーカ(デバイス300A、300B)に応じた制御コマンドに変換され、USBクラスドライバ104によってUSBデータに変換され、USB仮想バスデバイス105に送られる(タイミングT507〜T508)。
【0082】
USB仮想バスデバイス105は、USBクラスドライバ104から送られてくるアイソクロナス出力要求を通信制御部106に転送するとともに、当該アイソクロナス出力要求に対するダミー応答を生成する。
【0083】
通信制御部106は、USB仮想バスデバイス105から転送されてきたアイソクロナス出力要求をデータ配信設定機能によって決定されたマルチキャストアドレス宛てのネットワークパケット(以下、マルチキャストパケット)に変換して送信する(タイミングT509)。なお、このマルチキャストパケットを作成することで、個々のデバイスサーバ宛にデータパケットを作成する必要がなくなるため、処理負荷が軽減される。
【0084】
USB仮想バスデバイス105では、実施例1と同様、マルチキャストパケットに変換されたアイソクロナス出力要求が送信された後、所定のインターバル時間が経過すると、生成したダミー応答をUSBクラスドライバ104に通知する(タイミングT510)。
【0085】
ダミー応答がUSBクラスドライバ104に通知されると、さらに、デバイスドライバ103を経由してAP101に通知される。AP101は、ダミー応答の通知を受信すると、これを各USBスピーカ(デバイス300A、300B)からの「応答情報」であると判断し、次のデータ出力要求を指示する(タイミングT511)。
【0086】
このように、クライアントPC100では、AP101からのデータ送受信完了が指示されるまでの間、上述した一連のアイソクロナス出力要求処理(タイミングT507〜T511)を繰り返し実行する。
【0087】
一方、デバイスサーバ200A、200Bでは、それぞれ、クライアントPC100から送られてくるアイソクロナス出力要求(マルチキャストパケット)を受信すると、通信制御部204でUSBデータに変換して、クライアント制御部203に送り、クライアント制御部203はこのアイソクロナス入力要求をデバイス制御部202に転送する。
【0088】
デバイス制御部202は、アイソクロナス出力要求に含まれるデバイス識別情報(図2(A)参照)とデバイス個体情報を照合して、該当するデバイスを識別し、該当するUSBスピーカ(デバイス300A、300B)に対してアイソクロナス出力要求を送信する(タイミングT512)。
【0089】
USBスピーカ(デバイス300A、300B)は、それぞれ、受信したアイソクロナス出力要求に基づいてデータ出力処理を実行し、当該アイソクロナス出力要求に対する「応答情報」をデバイスサーバ200に送信(返送)する(タイミングT513)。すなわち、クライアントPC100から送られてきた音声データがそれぞれのUSBスピーカで変換され、一斉に音声出力されることになる。
【0090】
一方、デバイスサーバ200A,200Bは、それぞれ、デバイス300A、300Bから受信した「応答情報」を、デバイス制御部202を介してクライアント制御部203に転送し、クライアント制御部203は、当該「応答情報」をクライアントPC100に転送(返送)せずに、破棄する(タイミングT514)。
【0091】
このように、デバイスサーバ200A、200Bでは、データ送受信が完了するまでの間、一連のアイソクロナス出力要求処理(タイミングT512〜T514)の処理を繰り返し実行する。
【0092】
なお、実施例1と同様に、デバイスサーバ200A、200Bでは、それぞれ、補正値が算出され、クライアントPC100に対して補正値を送る。クライアントPC100では、複数のデバイスサーバ200から補正値が送られてくるため、USB仮想バスデバイス105において、各補正値を比較して、ダミー応答の通知間隔を調整する(タイミングT515〜T517)。
【0093】
このように、アイソクロナス出力転送によるマルチキャスト配信に適用することもできるため、本実施例の如く、1台のデータ配信元装置(クライアントPC100)からの音声データ(ストリーミングデータ)をネットワーク上に配置した複数のUSBスピーカ(デバイス300A、300B)に一斉に配信することも可能となる。
【0094】
なお、本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において適宜変更可能である。
【0095】
また、本発明の目的は、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給システムあるいは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出して処理を実行することによっても達成することができる。
【0096】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードを記憶したコンピュータで読み取り可能な記憶媒体は本発明を構成することになる。
【0097】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現されるように構成しても良い。
【0098】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、このプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部又は全部を実行し、その処理に応じて上述した実施形態が実現される場合も含んでいる。
【0099】
なお、プログラムコードを供給するため、例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク、CDやDVDに代表される光ディスク、磁気テープ、不揮発性のメモリカード、ROM等の記憶媒体を用いることができる。又は、プログラムコードは、ネットワークを介してダウンロードしてもよい。
【符号の説明】
【0100】
100A,100B:クライアントPC
101:アプリケーションプログラム
102:常駐モジュール
103:デバイスドライバ
104:USBクラスドライバ
105:USB仮想バスデバイス
106:通信制御部
200:デバイスサーバ
201:情報取得部
202:デバイス制御部
203:クライアント制御部
204:通信制御部
300A,300B:デバイス(USBスピーカ)
400:接続ケーブル
500:ネットワーク

【特許請求の範囲】
【請求項1】
アイソクロナス転送可能なデバイスがローカル接続されているデバイス制御装置に、ネットワークを介して接続されているクライアント装置であって、
前記デバイスに対するデータ出力を指示する出力要求指示手段と、
前記デバイスを識別するための個体情報を取得し、当該個体情報をもとに前記デバイス制御装置に接続されているデバイスを識別する個体情報識別手段と、
前記個体情報識別手段で識別した前記デバイスが直接接続されているようにシミュレートする仮想化制御手段と、
前記出力要求指示手段から前記個体情報識別手段で識別した前記デバイスに対してアイソクロナス転送によるデータ出力要求が指示されると、当該デバイスの個体情報を含むアイソクロナス出力要求を生成する出力要求生成手段と、
前記出力要求生成手段で生成した前記アイソクロナス出力要求に対する応答情報を前記出力要求指示手段に通知する応答情報通知手段と、
前記仮想化制御手段により接続がシミュレートされている前記デバイスに対して、前記出力要求生成手段で生成したアイソクロナス出力要求をアイソクロナス転送によって送信する通信制御手段と、
前記出力要求生成手段で生成されたアイソクロナス出力要求に対する前記デバイスの応答情報を擬製し、前記通信制御手段によって前記アイソクロナス出力要求が送信された後、所定時間が経過すると、当該擬製したデバイスの応答情報を前記応答情報通知手段に通知するダミー応答通知手段と、を備えること
を特徴とするクライアント装置。
【請求項2】
前記ダミー応答通知手段は、前記アイソクロナス出力要求に含まれている情報で、前記デバイスに応じて規定されているフレームの情報に基づいてインターバル時間を算出し、当該インターバル時間に従って、前記擬製したデバイスの応答情報の通知を行うこと
を特徴とする請求項1に記載のクライアント装置。
【請求項3】
前記ダミー応答通知手段は、前記デバイス制御装置から受信した、前記ネットワークにおける遅延を補正するための補正値に基づいて、前記擬製した応答情報の通知間隔を調整すること
を特徴とする請求項1又は2に記載のクライアント装置。
【請求項4】
アイソクロナス転送可能なデバイスがローカル接続されているデバイス制御装置に、ネットワークを介して接続されているクライアント装置におけるデバイス制御方法であって、
前記デバイスを識別するための個体情報を取得し、当該個体情報をもとに前記デバイス制御装置に接続されているデバイスを識別する個体情報識別ステップと、
前記個体情報識別ステップで識別した前記デバイスが直接接続されているようにシミュレートする仮想化制御ステップと、
前記個体情報識別ステップで識別した前記デバイスに対して、前記デバイスを制御するための制御プログラムからアイソクロナス転送によるデータ出力要求が指示されると、当該デバイスの個体情報を含むアイソクロナス出力要求を生成する出力要求生成ステップと、
前記出力要求生成ステップで生成した前記アイソクロナス出力要求に対する応答情報を前記制御プログラムに通知する応答情報通知ステップと、
前記仮想化制御ステップにより接続がシミュレートされている前記デバイスに対して、前記出力要求生成ステップで生成したアイソクロナス出力要求をアイソクロナス転送によって送信する通信制御ステップと、
前記出力要求生成ステップにおいて生成されたアイソクロナス出力要求に対する前記デバイスの応答情報を擬製し、前記通信制御ステップによって前記アイソクロナス出力要求が送信された後、所定時間が経過すると、当該擬製したデバイスの応答情報を前記制御プログラムに対して通知するダミー応答通知ステップと、を備えること
を特徴とするデバイス制御方法。
【請求項5】
前記ダミー応答通知ステップにおいて、前記アイソクロナス出力要求に含まれている情報で、前記デバイスに応じて規定されているフレームの情報に基づいてインターバル時間を算出し、当該インターバル時間に従って、前記擬製したデバイスの応答情報の通知を行うこと
を特徴とする請求項4に記載のデバイス制御方法。
【請求項6】
前記ダミー応答通知ステップにおいて、前記デバイス制御装置から受信した前記ネットワークにおける遅延を補正するための補正値に基づいて、前記擬製した応答情報の通知間隔を調整すること
を特徴とする請求項4又は5に記載のデバイス制御方法。
【請求項7】
請求項1乃至3のいずれか1項に記載のクライアント装置と、ネットワークを介して前記クライアントと接続されたデバイス制御装置と、前記デバイス制御装置にローカル接続され、アイソクロナス転送可能なデバイスと、から構成されるデバイス制御システムであって、
前記デバイス制御装置は、
前記クライアント装置から前記アイソクロナス出力要求を受信する出力要求受信手段と、
前記出力要求受信手段で受信した前記アイソクロナス出力要求に含まれる個体識別情報により識別したデバイスに対して、当該アイソクロナス出力要求を送信する出力要求送信手段と、
前記アイソクロナス出力要求を受信したデバイスから、当該アイソクロナス出力要求に対する応答情報を受信する応答情報受信手段と、
前記応答情報受信手段で受信した前記応答情報を破棄する応答情報破棄手段と、を備えること
を特徴とするデバイス制御システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2012−138694(P2012−138694A)
【公開日】平成24年7月19日(2012.7.19)
【国際特許分類】
【出願番号】特願2010−288707(P2010−288707)
【出願日】平成22年12月24日(2010.12.24)
【出願人】(500232640)キヤノンイメージングシステムズ株式会社 (27)
【Fターム(参考)】