(57)【要約】【課題】より確実にデータを転送することが可能なＵＳＢ中継装置、ＵＳＢ中継方法及びＵＳＢ中継プログラムを提供する。【解決手段】ＵＳＢ中継装置１００は、転送元ＵＳＢ装置１１０と転送先ＵＳＢ装置１２０間の転送モードを判定する転送モード判定部１０１と、判定した転送モードに応じて、転送先ＵＳＢ装置１２０の代理で、転送元ＵＳＢ装置１１０から転送パケットを収集するパケット代理収集部１０２と、収集した転送パケットを転送先ＵＳＢ装置１２０へ順次転送するパケット転送部１０３と、を備える。【選択図】図１
2015076731.tif 000002
【特許請求の範囲】
【請求項１】
転送元ＵＳＢ装置と転送先ＵＳＢ装置間の転送モードを判定する転送モード判定部と、
前記判定した転送モードに応じて、前記転送先ＵＳＢ装置の代理で、前記転送元ＵＳＢ装置から転送パケットを収集するパケット代理収集部と、
前記収集した転送パケットを前記転送先ＵＳＢ装置へ順次転送するパケット転送部と、
を備えるＵＳＢ中継装置。
【請求項２】
前記パケット代理収集部は、前記転送モードがバルク転送の場合、前記転送元ＵＳＢ装置から前記転送パケットを収集する、
請求項１に記載のＵＳＢ中継装置。
【請求項３】
前記パケット代理収集部は、前記転送モードがバルクイン転送の場合、前記転送元ＵＳＢ装置から前記転送パケットを収集する、
請求項２に記載のＵＳＢ中継装置。
【請求項４】
前記パケット代理収集部は、前記転送元ＵＳＢ装置から定期的に前記転送パケットを収集する、
請求項１乃至３のいずれか一項に記載のＵＳＢ中継装置。
【請求項５】
前記パケット代理収集部は、前記転送元ＵＳＢ装置における前記転送パケットの保存期間の間に前記転送パケットを収集する、
請求項４に記載のＵＳＢ中継装置。
【請求項６】
前記パケット代理収集部は、前記収集した転送パケットのデータ長が所定値よりも小さい場合、前記転送パケットの収集を終了する、
請求項４または５に記載のＵＳＢ中継装置。
【請求項７】
前記パケット代理収集部は、前記収集した転送パケットを順次保持するバッファを備える、
請求項１乃至６のいずれか一項に記載のＵＳＢ中継装置。
【請求項８】
転送元ＵＳＢ装置と転送先ＵＳＢ装置間の転送モードを判定し、
前記判定した転送モードに応じて、前記転送先ＵＳＢ装置の代理で、前記転送元ＵＳＢ装置から転送パケットを収集し、
前記収集した転送パケットを前記転送先ＵＳＢ装置へ順次転送する、
ＵＳＢ中継方法。
【請求項９】
転送元ＵＳＢ装置と転送先ＵＳＢ装置間の転送モードを判定し、
前記判定した転送モードに応じて、前記転送先ＵＳＢ装置の代理で、前記転送元ＵＳＢ装置から転送パケットを収集し、
前記収集した転送パケットを前記転送先ＵＳＢ装置へ順次転送する、
ＵＳＢ中継処理をコンピュータに実行させるためのＵＳＢ中継プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＵＳＢ中継装置、ＵＳＢ中継方法及びＵＳＢ中継プログラムに関し、特に、転送元ＵＳＢ装置と転送先ＵＳＢ装置間で転送処理を行うＵＳＢ中継装置、ＵＳＢ中継方法及びＵＳＢ中継プログラムに関する。
【背景技術】
【０００２】
近年、パソコン（パーソナルコンピュータ）などの電子機器における入出力インタフェースとしてＵＳＢ（Universal Serial Bus）が広く利用されている。ＵＳＢ規格に準拠することで、様々な周辺装置（ＵＳＢデバイス）をホスト装置（ＵＳＢホスト）に接続し利用することが可能となる。
【０００３】
ＵＳＢホストとなるパソコンにＵＳＢデバイスを接続すると、パソコンはＵＳＢデバイスのＵＳＢ記述子（Descriptor）を取得する。このＵＳＢ記述子は、そのＵＳＢ装置の「装置種別」「製造メーカ」「ＵＳＢバージョン」などを含む。パソコンはこの様なＵＳＢ記述子の情報からＵＳＢ装置や制御するデバイスドライバを特定／設定し、自動的にＵＳＢデバイスを認識／使用することができる状態になる。
【０００４】
また、ＵＳＢでは、ＵＳＢ装置間のデータ通信方式として、扱うデータの性質に応じて以下の４つのデータ転送種別（転送モード）が規定されている。
【０００５】
１．コントロール転送
・主にＵＳＢデバイスの制御を主体とした転送方式である。
・通常は、ＵＳＢデバイスに対する命令や状態取得などを行う。これらの命令などでは、主にＵＳＢデバイスの初期設定などを行う。
【０００６】
２．インターラプト転送
・主に低速度のイベントを通知するために使用される転送方式である。
・基本的に動作はマイクロコンピュータなどの割り込み処理と同様で、ＵＳＢデバイス側から割り込みが発生する。ただし、ホスト側で割り込みを検出する為には定期的にポーリングを実施する。
・キーボードやマウスなどで使用される。
【０００７】
３．バルク転送
・遅延が問題にならない大量データを扱うために使用される転送方式である。
・大量データを扱う場合に使用される。データを保証する為にエラー検出や再送信機能が提供される。
・他の転送方式に比べ優先順位が低く、他の転送の空き時間に使用される。
【０００８】
４．アイソクロナス転送
・連続的で周期的なデータを扱う場合に使用される。
・一定の転送レートが保証され、リアルタイム性の必要なデータを扱うのに使用される。データの保証や再送信機能などは提供されない。
・動画や音声などのストリーミングデータなどで使用される。
【０００９】
なお、関連する技術として、特許文献１〜５が知られている。例えば、特許文献１及び２は、バルクアウト転送に関する技術である。特許文献１には、ＵＳＢデバイス側にタイマ機能を持たせ、タイマで設定した一定期間内にデータが受信されない（ＵＳＢデバイス側の受信データが更新されない）ことを検出してバルクアウト転送の終了を判断する技術が記載されている。
【００１０】
また、特許文献２には、各ＵＳＢデバイスにカウント手段を設け、自己のＵＳＢデバイス宛てのバルクアウト転送をされたときは自己のカウントをクリアし、他のＵＳＢデバイス宛てのバルクアウト転送をされたときは自己のカウントを１上げ、最終的に予め設定した所定値にカウントが達することでバルクアウト転送の終了を判断する技術が記載されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００３−２４９９６５号公報
【特許文献２】特開２００６−１９５６０７号公報
【特許文献３】特開２０１１−１９８０４６号公報
【特許文献４】特開２００９−２０５２７１号公報
【特許文献５】特開２００２−３３５２６０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
上記のように、ＵＳＢでは、４つの転送モード（転送方式）のいずれかを選択することで、データに適した通信を行うことができる。また、パソコン（ホスト）上では、各種ＵＳＢ装置（デバイス）は同時、且つ各種転送方式で複数同時動作することができる。その為、限られた通信帯域を共有する形となるので、タイムアウトやデータ管理を正しく行なわないとデータ欠損などが発生する。
【００１３】
例えば、パソコン（ホスト）またはＵＳＢデバイスが高負荷状態の場合、装置の処理能力が低下するため、転送モードによっては、データを転送できない恐れがある。したがって、関連する技術では、装置の負荷状況などによっては、確実にデータを転送することが困難な場合があるという問題がある。
【００１４】
本発明は、このような問題に鑑み、より確実にデータを転送することが可能なＵＳＢ中継装置、ＵＳＢ中継方法及びＵＳＢ中継プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明に係るＵＳＢ中継装置は、転送元ＵＳＢ装置と転送先ＵＳＢ装置間の転送モードを判定する転送モード判定部と、前記判定した転送モードに応じて、前記転送先ＵＳＢ装置の代理で、前記転送元ＵＳＢ装置から転送パケットを収集するパケット代理収集部と、前記収集した転送パケットを前記転送先ＵＳＢ装置へ順次転送するパケット転送部と、を備えるものである。
【００１６】
本発明に係るＵＳＢ中継方法は、転送元ＵＳＢ装置と転送先ＵＳＢ装置間の転送モードを判定し、前記判定した転送モードに応じて、前記転送先ＵＳＢ装置の代理で、前記転送元ＵＳＢ装置から転送パケットを収集し、前記収集した転送パケットを前記転送先ＵＳＢ装置へ順次転送するものである。
【００１７】
本発明に係るＵＳＢ中継プログラムは、転送元ＵＳＢ装置と転送先ＵＳＢ装置間の転送モードを判定し、前記判定した転送モードに応じて、前記転送先ＵＳＢ装置の代理で、前記転送元ＵＳＢ装置から転送パケットを収集し、前記収集した転送パケットを前記転送先ＵＳＢ装置へ順次転送する、ＵＳＢ中継処理をコンピュータに実行させるためのものである。
【発明の効果】
【００１８】
本発明によれば、より確実にデータを転送することが可能なＵＳＢ中継装置、ＵＳＢ中継方法及びＵＳＢ中継プログラムを提供することを目的とする。
【図面の簡単な説明】
【００１９】
【図１】実施の形態に係るＵＳＢ中継装置の主要な構成を示すブロック図である。
【図２】実施の形態１に係るＵＳＢ中継システムの構成を示す構成図である。
【図３】実施の形態１に係るＵＳＢデータ中継装置の構成を示すブロック図である。
【図４】実施の形態１に係るＵＳＢデータ中継装置のデータの流れを説明するための説明図である。
【図５】実施の形態１に係るＵＳＢデータ中継装置のデータの流れを説明するための説明図である。
【図６】実施の形態１に係るＵＳＢデータ中継装置のデータの流れを説明するための説明図である。
【図７】実施の形態１に係るＵＳＢ中継システムの動作を示すシーケンスである。
【図８】実施の形態１に係るＵＳＢ中継システムの動作を示すシーケンスである。
【図９】実施の形態１に係るＵＳＢデータ中継装置のデータの流れを説明するための説明図である。
【図１０】実施の形態１に係るＵＳＢ中継システムの動作を示すシーケンスである。
【図１１】実施の形態１に係るＵＳＢ中継システムの動作を示すシーケンスである。
【図１２】実施の形態１に係るＵＳＢ中継システムの動作を示すシーケンスである。
【図１３】実施の形態１に係るＵＳＢデータ中継装置の動作を示すフローチャートである。
【図１４】実施の形態２に係るＵＳＢ中継システムの構成を示す構成図である。
【図１５】参考例のＵＳＢ中継システムの動作を示すシーケンスである。
【図１６】実施の形態２に係るＵＳＢ中継システムの動作を示すシーケンスである。
【図１７】参考例のＵＳＢ中継システムの動作を示すシーケンスである。
【図１８】実施の形態２に係るＵＳＢ中継システムの動作を示すシーケンスである。
【図１９】実施の形態３に係るＵＳＢデータ中継装置の構成を示すブロック図である。
【図２０】参考例のＵＳＢ中継システムの動作を示すシーケンスである。
【図２１】参考例のＵＳＢ中継システムの動作を示すシーケンスである。
【発明を実施するための形態】
【００２０】
（実施の形態の概要）
実施の形態の説明に先立って、実施の形態の主要な課題と構成について説明する。
【００２１】
例えば、スキャナ装置（イメージスキャナ）などのように、あるイベントを起点に対象データを蓄積するＵＳＢデバイスでは、リアルタイム性が必要（その後、定期的にデータ更新される）で且つその対象データを保証する必要がある。
【００２２】
この対象データをパソコンで収集する場合、一般に、対象データは「バルクイン転送」により転送される。上記のように、「バルク転送」は、主に大量データの転送を保証するために規定されている。
【００２３】
しかしながら、パソコンが高負荷状態や同時に複数のＵＳＢデバイスから対象データを収集する場合、一定時間以上掛かってしまうと対象データが保証されない（次のデータに更新される）可能性がある。これは、ＵＳＢ規格において「バルク転送」のデータ処理の優先順位が低いため、他のデータ処理が優先的に実行されることにも起因する。
【００２４】
図２０は、実施の形態適用前の参考例の動作を示し、パソコン１が低処理負荷、もしく低通信負荷時の場合における、パソコン１とＵＳＢデバイス３間のバルク転送フローの時系列シーケンスである。
【００２５】
ＵＳＢデバイス３は、生成したデータファイルを保存するための内部メモリ（デバイスメモリ）を備えている。まず、ＵＳＢデバイス３は、データファイルを生成すると、生成したデータファイルを内部メモリに保存し、データファイル保存期間経過後、新たに次のデータファイルを生成し、この新たなデータファイルで内部メモリを更新する。すなわち、ＵＳＢデバイス３では、データファイル保存期間経過後は、新たなデータファイルにより内部メモリが更新されるため、以前のデータファイルは消去される。
【００２６】
したがって、通常、パソコン（ホスト）１は、ＵＳＢデバイス３のデータファイル保存期間経過前にバルクイン転送を行うように動作する。すなわち、図２０の例のように、パソコン１が低負荷の場合には、ＵＳＢデバイス３がデータファイル保存期間の間隔で定期的にデータファイルを更新した後、パソコン１は、速やかにバルクイン転送を行い、各データファイルを確実に収集する。
【００２７】
すなわち、パソコン１は、データファイルＤ１保存期間経過前に、バルクイン転送ＩＮ１を実行して、データファイルＤ１を取得し、データファイルＤ２保存期間経過前に、バルクイン転送ＩＮ２を実行して、データファイルＤ２を取得し、データファイルＤ３保存期間経過前に、バルクイン転送ＩＮ３を実行して、データファイルＤ３を取得する。
【００２８】
なお、バルクイン転送を行う場合、パソコン１からＵＳＢデバイス３へバルクイン転送コマンド（指示）を送信した後、ＵＳＢデバイス３からパソコン１へデータが送信されるが、図２０では、バルクイン転送コマンドは省略されている（図２１も同様）。
【００２９】
図２１は、図２０と同じ参考例の動作を示し、パソコン１が高処理負荷、もしくは高通信負荷時の場合における、パソコン１とＵＳＢデバイス３間のバルク転送フローの時系列シーケンスである。
【００３０】
図２１では、パソコン１における処理が高負荷の状態のため、帯域使用の優先度が低いバルク転送については、パソコン１からＵＳＢデバイス３へのバルクイン転送の実行間隔が長くなる。このバルクイン転送の実行間隔がＵＳＢデバイス３におけるデータファイル保存時間を超えてしまうと、ＵＳＢデバイス３で保持していたデータが消失するため、パソコン１へこの消失したデータを転送することができない。
【００３１】
すなわち、パソコン１は、データファイルＤ１保存期間経過前に、バルクイン転送ＩＮ１を実行して、データファイルＤ１を取得しているが、データファイルＤ２保存期間経過後に、バルクイン転送ＩＮ２を実行しているため、データファイルＤ２は既に消去されており、データファイルＤ２の代わりにデータファイルＤ３が取得されている。
【００３２】
このように、実施の形態適用前の参考例では、装置の負荷状況などによっては、バルクイン転送を確実に行うことが困難な場合がある。そこで、実施の形態では、上記のようなデータを保証する為、パソコンの負荷状況に左右されない様に、ＵＳＢデバイスに蓄積されたデータを確実に収集することを可能とする。
【００３３】
図１は、実施の形態に係るＵＳＢ中継装置の主要な構成を示している。図１に示すように、実施の形態に係るＵＳＢ中継装置１００は、転送モード判定部１０１、パケット代理収集部１０２、パケット転送部１０３を備えている。
【００３４】
転送モード判定部１０１は、転送元ＵＳＢ装置１１０と転送先ＵＳＢ装置１２０間の転送モードを判定する。パケット代理収集部１０２は、判定した転送モードに応じて、転送先ＵＳＢ装置１２０の代理で、転送元ＵＳＢ装置１１０から転送パケットを収集する。パケット転送部１０３は、収集した転送パケットを転送先ＵＳＢ装置１２０へ順次転送する。
【００３５】
このように、実施の形態では、転送先ＵＳＢ装置（例えばパソコン）と転送元ＵＳＢ装置（例えばＵＳＢデバイス）間のＵＳＢ中継装置において、転送モードに応じて転送パケットを転送先ＵＳＢ装置の代理で収集し、収集した転送パケットを転送する。これにより、バルクイン転送などの転送モードであっても、転送先ＵＳＢ装置の負荷状況に関わらず、確実にデータを転送することができる。
【００３６】
（実施の形態１）
以下、図面を参照して実施の形態１について説明する。図２は、本実施の形態に係るＵＳＢ中継システム（ＵＳＢシステム）の全体の構成を示している。
【００３７】
図２に示すように、本実施の形態に係るＵＳＢ中継システムは、パソコン１、ＵＳＢデータ中継装置２、ＵＳＢデバイス３を備えている。ＵＳＢデータ中継装置（ＵＳＢ中継装置）２は、パソコン１とＵＳＢデバイス３との通信路間に接続されている。パソコン１とＵＳＢデータ中継装置２とは、ＵＳＢケーブル４ａを介して接続されており、ＵＳＢデータ中継装置２とＵＳＢデバイス３とは、ＵＳＢケーブル４ｂを介して接続されている。すなわち、パソコン１とＵＳＢデータ中継装置２は、ＵＳＢケーブル４ａを接続するＵＳＢポート（ＵＳＢ端子）を備えており、ＵＳＢデータ中継装置２とＵＳＢデバイス３は、ＵＳＢケーブル４ｂを接続するＵＳＢポート（ＵＳＢ端子）を備えている。
【００３８】
パソコン１は、ＵＳＢホストの一例であり、ＵＳＢデータ中継装置２を介して、ＵＳＢデバイス３と各転送モードによる通信を行う。ＵＳＢデバイス３は、イメージスキャナやデジタルカメラ等の周辺装置であり、ＵＳＢデータ中継装置２を介して、パソコン１と各転送モードによる通信を行う。例えば、パソコン１がＵＳＢデータ中継装置２を介してＵＳＢデバイス３を制御することにより、ＵＳＢデバイス３がイメージを取り込み、取り込んだ画像データを、ＵＳＢデータ中継装置２を介してパソコン１へ出力する。
【００３９】
図３は、本実施の形態に係るＵＳＢデータ中継装置２のブロック構成を示している。図３に示すように、本実施の形態に係るＵＳＢデータ中継装置２は、コマンド分析部２１及びセレクタ２６を含む調停部２４、設定格納バッファ２２、データバッファ（ＦＩＦＯ）２３、セレクタ２５を備えている。
【００４０】
ＵＳＢデータ中継装置２は、パソコン１とＵＳＢデバイス３の間に挿入（接続）され、パソコン１とＵＳＢデバイス３の間のデータの流れを監視（コマンド分析部２１／設定格納バッファ２２）し、転送データの種別によりデータの管理(データバッファ(ＦＩＦＯ)２３)と制御（調停部２４／セレクタ２５）を行なう。
【００４１】
すなわち、コマンド分析部２１は、パソコン１とＵＳＢデバイス３の間で送受信されるコマンド（データ）を分析（解析）し、分析に応じた処理を実行する。例えば、コマンド分析部２１は、パソコン１とＵＳＢデバイス３の間の転送モードを判定する転送モード判定部を含んでいる。設定格納バッファ２２は、コマンド分析部２１にて読み取ったＵＳＢ記述子やデータのＰＩＤ（パケットＩＤ）・ＡＤＤＲ（アドレス）・ＥＮＤＰ（エンドポイント）等の転送の情報を格納する。
【００４２】
データバッファ(ＦＩＦＯ)２３は、ＦＩＦＯ（First In / First Out；先入れ／先出し）方式のバッファであり、ＵＳＢデバイス３（またはパソコン１）から受信したデータ（パケット）を一時的に保持する。
【００４３】
セレクタ２５及びセレクタ２６は、パソコン１とＵＳＢデバイス３の間の通信経路を切り替える。セレクタ２５及びセレクタ２６は、パソコン１−調停部２４−ＵＳＢデバイス３の経路を、パソコン１−データバッファ２３−調停部２４−ＵＳＢデバイス３のように、データバッファ(ＦＩＦＯ)２３を経由する経路に切り替える。セレクタ２５は、パソコン１（パソコン１側のＵＳＢ端子）と、調停部２４（セレクタ２６）またはデータバッファ２３の出力端子との接続を切り替える。セレクタ２６は、ＵＳＢデバイス３（ＵＳＢデバイス３側のＵＳＢ端子）と、セレクタ２５（パソコン１）またはデータバッファ２３の入力端子との接続を切り替える。
【００４４】
調停部２４は、転送モードに応じて（例えばバルクイン転送の場合）、パソコン１の代理で、ＵＳＢデバイス３から転送パケットをデータバッファ(ＦＩＦＯ)２３に収集（バッファリング）するパケット代理収集部を含んでおり、例えば、セレクタ２６がパケット代理収集部を含んでいてもよい。調停部２４は、パケットを代理で収集することにより、パソコン１（またはＵＳＢデバイス３）から見て透過的となるように動作する。調停部２４は、転送モードに応じて（例えばバルクイン転送以外の場合）、パソコン１とＵＳＢデバイス３の間のパケットを転送するパケット転送部も含んでいる。また、セレクタ２５は、データバッファ(ＦＩＦＯ)２３に収集された転送パケットをパソコン１へ順次転送するパケット転送部を含んでいる。
【００４５】
次に、本実施の形態に係るＵＳＢデータ中継装置２の動作について、データ転送の方向別に説明する。
【００４６】
ここでは、データ転送方向をそれぞれ下記の様に定義する。なお、ダウンストリームでは、パソコン１が転送元ＵＳＢ装置であり、ＵＳＢデバイス３が転送先ＵＳＢ装置である。アップストリームでは、パソコン１が転送先ＵＳＢ装置であり、ＵＳＢデバイス３が転送元ＵＳＢ装置である。
・パソコン１からＵＳＢデバイス３へのデータ転送方向（下り方向）・・・「ダウンストリーム」
・ＵＳＢデバイス３からパソコン１へのデータ転送方向（上り方向）・・・「アップストリーム」
【００４７】
図４は、本実施の形態に係るＵＳＢデータ中継装置２における、ダウンストリームのデータの流れであり、転送モードがコントロール転送、インターラプト転送、バルク転送、アイソクロナス転送の場合のデータの流れを示している。
【００４８】
この場合、図４に示すように、セレクタ２５は、パソコン１（パソコン１側のＵＳＢ端子）と調停部２４（セレクタ２６）を接続し、セレクタ２６は、ＵＳＢデバイス３（ＵＳＢデバイス３側のＵＳＢ端子）とセレクタ２５（パソコン１）を接続しているため、パソコン１−調停部２４−ＵＳＢデバイス３の経路となる。
【００４９】
すなわち、ダウンストリームでは、全てのデータ転送形式のデータがパソコン１からセレクタ２５へ入力される。セレクタ２５は、入力されたデータを調停部２４へ転送し、調停部２４は転送されたデータをそのままＵＳＢデバイス３へ出力する。そして、出力された全てのデータ転送形式のデータがＵＳＢデバイス３に到達する。
【００５０】
図５は、本実施の形態に係るＵＳＢデータ中継装置２における、アップストリームのデータの流れであり、転送モードがコントロール転送、インターラプト転送、アイソクロナス転送の場合のデータの流れを示している。この場合、図４と同様に、セレクタ２５、セレクタ２６の接続により、パソコン１−調停部２４−ＵＳＢデバイス３の経路となる。
【００５１】
すなわち、アップストリームでは、コントロール転送、インターラプト転送、アイソクロナス転送のデータがＵＳＢデバイス３から調停部２４へ入力される。調停部２４は、入力されたデータをセレクタ２５へ転送し、セレクタ２５は転送されたデータをパソコン１へ出力する。そして、出力されたコントロール転送、インターラプト転送、アイソクロナス転送のデータがパソコン１に到達する。
【００５２】
ここで、図６を用いて、コントロール転送における設定（ＳＥＴＵＰ）パケット（コマンド）の転送時の動作を説明する。例えば、設定パケットにより、ＵＳＢデータ中継装置２は、ＵＳＢデバイス３のコンフィグレーション設定のデータ内容を保持する処理を実行する。この場合、図４及び図５と同様に、セレクタ２５、セレクタ２６の接続により、パソコン１−調停部２４−ＵＳＢデバイス３の経路となる。
【００５３】
すなわち、ダウンストリームのデータ（設定パケット）は、パソコン１からセレクタ２５を介して調停部２４へ入力される。この時、調停部２４は、入力されたデータ（設定パケット）をそのままＵＳＢデバイス３へ出力し、出力されたデータがＵＳＢデバイス３に到達する。
【００５４】
これと同時に、調停部２４では、コマンド分析部２１が入力された設定パケットを解析する。設定パケットがコンフィグレーション設定のパケットであった場合、コマンド分析部２１は、設定格納バッファ２２に設定パケットの設定値を保存する。
【００５５】
同様に、アップストリームのデータ（設定パケット）も、ＵＳＢデバイス３から調停部２４に入力され、調停部２４は、入力されたデータを、セレクタ２５を経由してパソコン１へ出力し、出力されたデータがパソコン１に到達する。これと同時に、コマンド分析部２１は、入力された設定パケットを解析し、設定パケットがコンフィグレーション設定のパケットであった場合、設定格納バッファ２２に設定パケットの設定値を保存する。
【００５６】
図７は、ダウンストリームのコントロール転送による設定パケットの転送シーケンスであり、図６のパケット毎（設定パケット毎）のデータの流れを時系列に示している。例えば、ＵＳＢデータ中継装置２は、図７のセットアップコンフィギュレーション（設定、コントロールＩＮ、コントロールＯＵＴ、ＤＡＴＡ含む）を監視し、送受信されるパラメータを管理／保持する。通常、ＵＳＢによりデータ通信を行う場合には、まず、コントロール転送によるセットアップコンフィギュレーションにより設定が行われた後、バルク転送などによりデータ通信が行われる。
【００５７】
まず、トランザクションＴ１０１では、パソコン１が設定パケットを送信すると、ＵＳＢデータ中継装置２（調停部２４）はパソコン１から受信した設定パケットを転送し（Ｓ１０１ａ）、ＵＳＢデバイス３はＵＳＢデータ中継装置２から設定パケットを受信する。同時に（Ｓ１０１ａ）、ＵＳＢデータ中継装置２の内部（コマンド分析部２１）では、この設定パケットの内容を分析し、必要な情報（例えば、データのＰＩＤ・ＡＤＤＲ・ＥＮＤＰ、最大データ長）を設定格納バッファ２２に保持する。
【００５８】
続いて、ＵＳＢデータ中継装置２（調停部２４）は、パソコン１から送信されたデータパケット（ＤＡＴＡ０）をＵＳＢデバイス３へ転送し（Ｓ１０１ｂ）、さらに、ＵＳＢデバイス３から送信されたＡＣＫパケットをパソコン１へ転送する（Ｓ１０１ｃ）。例えば、Ｓ１０１ｂ及びＳ１０１ｃにおいても、Ｓ１０１ａと同様に、ＵＳＢデータ中継装置２の内部（コマンド分析部２１）で、データパケット（ＤＡＴＡ０）、ＡＣＫパケットの内容を分析し、必要な情報を設定格納バッファ２２に保持してよい。
【００５９】
トランザクションＴ１０１に続いてトランザクションＴ１０２では、パソコン１がコントロールＩＮパケットを送信すると、ＵＳＢデータ中継装置２（調停部２４）はパソコン１から受信したコントロールＩＮパケットを転送し（Ｓ１０２ａ）、ＵＳＢデバイス３はＵＳＢデータ中継装置２からコントロールＩＮパケットを受信する。続いて、ＵＳＢデータ中継装置２（調停部２４）はＵＳＢデバイス３から送信されたデータパケット（ＤＡＴＡ０）をパソコン１へ転送し（Ｓ１０２ｂ）、さらに、パソコン１から送信されたＡＣＫパケットをＵＳＢデバイス３へ転送する（Ｓ１０２ｃ）。例えば、Ｓ１０２ａ〜Ｓ１０２ｃにおいても、Ｓ１０１ａと同様に、ＵＳＢデータ中継装置２の内部（コマンド分析部２１）で、コントロールＩＮパケット、データパケット（ＤＡＴＡ０）、ＡＣＫパケットの内容を分析し、必要な情報を設定格納バッファ２２に保持してよい。
【００６０】
トランザクションＴ１０２に続いてトランザクションＴ１０３では、パソコン１がコントロールＯＵＴパケットを送信すると、ＵＳＢデータ中継装置２（調停部２４）はパソコン１から受信したコントロールＯＵＴパケットを転送し（Ｓ１０３ａ）、ＵＳＢデバイス３はＵＳＢデータ中継装置２からコントロールＯＵＴパケットを受信する。続いて、ＵＳＢデータ中継装置２（調停部２４）はパソコン１から送信されたデータパケット（ＤＡＴＡ０）をＵＳＢデバイス３へ転送し（Ｓ１０３ｂ）、さらに、ＵＳＢデバイス３から送信されたＡＣＫパケットをパソコン１へ転送する（Ｓ１０３ｃ）。例えば、Ｓ１０３ａ〜Ｓ１０３ｃにおいても、Ｓ１０１ａと同様に、ＵＳＢデータ中継装置２の内部（コマンド分析部２１）で、コントロールＯＵＴパケット、データパケット（ＤＡＴＡ０）、ＡＣＫパケットの内容を分析し、必要な情報を設定格納バッファ２２に保持してよい。
【００６１】
図８は、アップストリームのコントロール転送による設定パケットの転送シーケンスであり、図６のパケット毎（設定パケット毎）のデータの流れを時系列に示している。例えば、図７と同様に、ＵＳＢデータ中継装置２は、図８のセットアップコンフィギュレーション（設定、コントロールＩＮ、コントロールＯＵＴ、ＤＡＴＡ含む）を監視し、送受信されるパラメータを管理／保持する。
【００６２】
まず、トランザクションＴ１１１では、ＵＳＢデバイス３が設定パケットを送信すると、ＵＳＢデータ中継装置２（調停部２４）はＵＳＢデバイス３から受信した設定パケットを転送し（Ｓ１１１ａ）、パソコン１はＵＳＢデータ中継装置２から設定パケットを受信する。同時に（Ｓ１１１ａ）、ＵＳＢデータ中継装置２の内部（コマンド分析部２１）では、この設定パケットの内容を分析し、必要な情報（例えば、データのＰＩＤ・ＡＤＤＲ・ＥＮＤＰ、最大データ長）を設定格納バッファ２２に保持する。
【００６３】
続いて、ＵＳＢデータ中継装置２（調停部２４）は、ＵＳＢデバイス３から送信されたデータパケット（ＤＡＴＡ０）をパソコン１へ転送し（Ｓ１１１ｂ）、さらに、パソコン１から送信されたＡＣＫパケットをＵＳＢデバイス３へ転送する（Ｓ１１１ｃ）。例えば、Ｓ１１１ｂ及びＳ１１１ｃにおいても、Ｓ１１１ａと同様に、ＵＳＢデータ中継装置２の内部（コマンド分析部２１）で、データパケット（ＤＡＴＡ０）、ＡＣＫパケットの内容を分析し、必要な情報を保持してよい。
【００６４】
トランザクションＴ１１１に続いてトランザクションＴ１１２では、ＵＳＢデバイス３がコントロールＩＮパケットを送信すると、ＵＳＢデータ中継装置２（調停部２４）はＵＳＢデバイス３から受信したコントロールＩＮパケットを転送し（Ｓ１１２ａ）、パソコン１はＵＳＢデータ中継装置２からコントロールＩＮパケットを受信する。続いて、ＵＳＢデータ中継装置２（調停部２４）はパソコン１から送信されたデータパケット（ＤＡＴＡ０）をＵＳＢデバイス３へ転送し（Ｓ１１２ｂ）、さらに、ＵＳＢデバイス３から送信されたＡＣＫパケットをパソコン１へ転送する（Ｓ１１２ｃ）。例えば、Ｓ１１２ａ〜Ｓ１１２ｃにおいても、Ｓ１１１ａと同様に、ＵＳＢデータ中継装置２の内部（コマンド分析部２１）で、コントロールＩＮパケット、データパケット（ＤＡＴＡ０）、ＡＣＫパケットの内容を分析し、必要な情報を保持してよい。
【００６５】
トランザクションＴ１１２に続いてトランザクションＴ１１３では、ＵＳＢデバイス３がコントロールＯＵＴパケットを送信すると、ＵＳＢデータ中継装置２（調停部２４）はＵＳＢデバイス３から受信したコントロールＯＵＴパケットを転送し（Ｓ１１３ａ）、パソコン１はＵＳＢデータ中継装置２からコントロールＯＵＴパケットを受信する。続いて、ＵＳＢデータ中継装置２（調停部２４）はＵＳＢデバイス３から送信されたデータパケット（ＤＡＴＡ０）をパソコン１へ転送し（Ｓ１１３ｂ）、さらに、パソコン１から送信されたＡＣＫパケットをＵＳＢデバイス３へ転送する（Ｓ１１３ｃ）。例えば、Ｓ１１３ａ〜Ｓ１１３ｃにおいても、Ｓ１１１ａと同様に、ＵＳＢデータ中継装置２の内部（コマンド分析部２１）で、コントロールＯＵＴパケット、データパケット（ＤＡＴＡ０）、ＡＣＫパケットの内容を分析し、必要な情報を設定格納バッファ２２に保持してよい。
【００６６】
図９は、本実施の形態に係るＵＳＢデータ中継装置２における、アップストリームのデータの流れであり、転送モードがバルク転送（バルクイン転送）の場合のデータの流れを示している。
【００６７】
バルクイン転送の場合、セレクタ２５及び２６は接続を切り替える。セレクタ２５は、データバッファの出力端子とパソコン１（パソコン１側のＵＳＢ端子）とを接続し、セレクタ２６は、データバッファの入力端子とＵＳＢデバイス３（ＵＳＢデバイス３側のＵＳＢ端子）とを接続するため、パソコン１−データバッファ（ＦＩＦＯ）２３−調停部２４−ＵＳＢデバイス３の経路となる。
【００６８】
すなわち、バルクイン転送のデータは、ＵＳＢデバイス３から調停部２４に入力される。調停部２４は、入力されたデータを、セレクタ２６を介してデータバッファ２３に転送し、データバッファ２３は、転送されたデータを一旦蓄積する。その後、データバッファ２３は、先入れ／先出し（ＦＩＦＯ）方式により、蓄積したデータをセレクタ２５を介してパソコン１へ出力する。そして、出力されたバルクイン転送のデータがパソコン１に到達する。
【００６９】
図１０は、バルクイン転送フローにおける転送シーケンスであり、図９のデータ毎の流れを時系列に示している。
【００７０】
まず、トランザクションＴ１０１では、パソコン１がバルク転送ＩＮパケット（ＩＮ０）のコマンドを送信すると、ＵＳＢデータ中継装置２（調停部２４）はパソコン１から受信したバルク転送ＩＮパケット（ＩＮ０）をスルーしてＵＳＢデバイス３へ転送し（Ｓ１２１ａ）、ＵＳＢデバイス３はＵＳＢデータ中継装置２からバルク転送ＩＮパケット（ＩＮ０）を受信する。
【００７１】
続いて、ＵＳＢデータ中継装置２（調停部２４）は、バルク転送ＩＮパケット（ＩＮ０）に対してＵＳＢデバイス３から送信されたデータパケット（ＤＡＴＡ０）を受信し、受信したデータバケット（ＤＡＴＡ０）をデータバッファ（ＦＩＦＯ）２３に保持するとともに（Ｓ１２１ｂ）、ＵＳＢデータ中継装置２（調停部２４）が自動的にＵＳＢデバイス３へＡＣＫパケット（肯定応答）を送信する（Ｓ１２１ｃ）。
【００７２】
さらに、ＵＳＢデータ中継装置２（例えばセレクタ２５）は、データバッファ（ＦＩＦＯ）２３に保持されていたデータパケット（ＤＡＴＡ０）をパソコン１に送信し（Ｓ１２１ｄ）、データパケット（ＤＡＴＡ０）を受信したパソコン１がＵＳＢデータ中継装置２にＡＣＫパケット（肯定応答）を送信し、ＵＳＢデータ中継装置２（例えばセレクタ２５）はパソコン１からＡＣＫパケットを受信する（Ｓ１２１ｅ）。
【００７３】
トランザクションＴ１０１に続いてトランザクションＴ１２２、Ｔ１２３では、同様に、ＵＳＢデータ中継装置２は、パソコン１から受信したバルク転送ＩＮパケット（ＩＮ１、ＩＮ２）をＵＳＢデバイス３へ転送し（Ｓ１２２ａ、Ｓ１２３ａ）、ＵＳＢデバイス３から受信したデータパケット（ＤＡＴＡ１、ＤＡＴＡ２）をデータバッファ（ＦＩＦＯ）２３に保持するとともに（Ｓ１２２ｂ、Ｓ１２３ｂ）、ＵＳＢデバイス３へＡＣＫパケットを送信する（Ｓ１２２ｃ、Ｓ１２３ｃ）。さらに、ＵＳＢデータ中継装置２は、保持されていたデータパケット（ＤＡＴＡ１、ＤＡＴＡ２）をパソコン１に送信し（Ｓ１２２ｄ、Ｓ１２３ｄ）、パソコン１からＡＣＫパケットを受信する（Ｓ１２２ｅ、Ｓ１２３ｅ）。
【００７４】
図１１は、バルクイン転送フローにおける転送シーケンスの高負荷時の例であり、バルク転送フローとデータバッファ２３の変移（状態）を示している。
【００７５】
パソコン１における処理が高負荷になり、パソコン１からＵＳＢデバイス３へのバルク転送ＩＮのコマンドの送信間隔が長くなっても、本実施の形態では、ＵＳＢデータ中継装置２が、パソコン１に代わって、自動的にＵＳＢデバイス３に対しバルク転送を要求してデータを収集しデータバッファ２３へ蓄積する。
【００７６】
まず、トランザクションＴ１３１では、図１０と同様に、ＵＳＢデータ中継装置２は、パソコン１から受信したバルク転送ＩＮパケット（ＩＮ０）をＵＳＢデバイス３へ転送し（Ｓ１３１ａ）、ＵＳＢデバイス３から受信したデータパケット（ＤＡＴＡ０）をデータバッファ（ＦＩＦＯ）２３に保持するとともに（Ｓ１３１ｂ）、ＵＳＢデバイス３へＡＣＫパケットを送信する（Ｓ１３１ｃ）。さらに、ＵＳＢデータ中継装置２は、データバッファ（ＦＩＦＯ）２３に保持されていたデータパケット（ＤＡＴＡ０）をパソコン１に送信し（Ｓ１３１ｄ）、パソコン１からＡＣＫパケットを受信する（Ｓ１３１ｅ）。このとき、データパケット（ＤＡＴＡ０）が転送されたため、データバッファ（ＦＩＦＯ）２３に、データパケットは保持されていない。
【００７７】
トランザクションＴ１３１に続いてトランザクションＴ１３２では、ＵＳＢデータ中継装置２（調停部２４）は、自動的にバルク転送ＩＮパケット（ＩＮ１）をＵＳＢデバイス３へ送信し（Ｓ１３２ａ）、ＵＳＢデバイス３はＵＳＢデータ中継装置２からバルク転送ＩＮパケット（ＩＮ１）を受信する。続いて、ＵＳＢデータ中継装置２（調停部２４）は、バルク転送ＩＮパケット（ＩＮ１）に対してＵＳＢデバイス３から送信されたデータパケット（ＤＡＴＡ１）を受信し、受信したデータバケット（ＤＡＴＡ１）をデータバッファ（ＦＩＦＯ）２３に保持するとともに（Ｓ１３２ｂ）、ＵＳＢデータ中継装置２（調停部２４）がＵＳＢデバイス３へＡＣＫパケット（肯定応答）を送信する（Ｓ１３２ｃ）。このとき、データパケット（ＤＡＴＡ１）が転送されていないため、データバッファ（ＦＩＦＯ）２３に、データパケット（ＤＡＴＡ１）が保持された状態となる。
【００７８】
本実施の形態では、トランザクションＴ１３１のシーケンスを定期的に繰り返し実行する。例えば、ＵＳＢデバイス３における、データ（パケット）の保存期間の間（保存期間内）にバルク転送ＩＮパケットを送信するようにする。
【００７９】
すなわち、トランザクションＴ１３２に続いてトランザクションＴ１３３では、トランザクションＴ１３２と同様に、ＵＳＢデータ中継装置２は、バルク転送ＩＮパケット（ＩＮ２）をＵＳＢデバイス３へ送信し（Ｓ１３３ａ）、ＵＳＢデバイス３から送信されたデータパケット（ＤＡＴＡ２）を受信し、受信したデータバケット（ＤＡＴＡ２）をデータバッファ（ＦＩＦＯ）２３に保持するとともに（Ｓ１３３ｂ）、ＵＳＢデバイス３へＡＣＫパケット（肯定応答）を送信する（Ｓ１３３ｃ）。このとき、データパケット（ＤＡＴＡ１、ＤＡＴＡ２）が転送されていないため、データバッファ（ＦＩＦＯ）２３に、データパケット（ＤＡＴＡ１、ＤＡＴＡ２）が保持された状態となる。
【００８０】
トランザクションＴ１３３に続いてトランザクションＴ１３４では、パソコン１がバルク転送ＩＮパケット（ＩＮ１）を送信し、ＵＳＢデータ中継装置２（例えばセレクタ２５）がバルク転送ＩＮパケット（ＩＮ１）を受信すると（Ｓ１３４ａ）、ＵＳＢデータ中継装置２（例えばセレクタ２５）は、データバッファ（ＦＩＦＯ）２３に保持されていたデータパケット（ＤＡＴＡ１）をパソコン１に送信する（Ｓ１３４ｂ）。データパケット（ＤＡＴＡ１）を受信したパソコン１がＵＳＢデータ中継装置２にＡＣＫパケット（肯定応答）を送信し、ＵＳＢデータ中継装置２（例えばセレクタ２５）はパソコン１からＡＣＫパケットを受信する（Ｓ１３４ｃ）。このとき、データパケット（ＤＡＴＡ１）が転送されたため、データバッファ（ＦＩＦＯ）２３に、データパケット（ＤＡＴＡ２）が保持された状態となる。
【００８１】
トランザクションＴ１３４に続いてトランザクションＴ１３５では、トランザクションＴ１３２と同様に、ＵＳＢデータ中継装置２は、バルク転送ＩＮパケット（ＩＮ３）をＵＳＢデバイス３へ送信し（Ｓ１３５ａ）、ＵＳＢデバイス３から送信されたデータパケット（ＤＡＴＡ３）を受信し、受信したデータバケット（ＤＡＴＡ３）をデータバッファ（ＦＩＦＯ）２３に保持するとともに（Ｓ１３５ｂ）、ＵＳＢデバイス３へＡＣＫパケット（肯定応答）を送信する（Ｓ１３５ｃ）。このとき、データパケット（ＤＡＴＡ２、ＤＡＴＡ３）が転送されていないため、データバッファ（ＦＩＦＯ）２３に、データパケット（ＤＡＴＡ２、ＤＡＴＡ３）が保持された状態となる。
【００８２】
図１２は、バルクイン転送フローにおける転送シーケンスの高負荷時の他の例であり、バルク転送フローとデータバッファ２３の変移（状態）を示している。
【００８３】
ＵＳＢデータ中継装置２は自動的にＵＳＢデバイス３からデータを収集するが、データ収集停止条件は、図６のフローで収集された設定パケット（設定パケットデータ）の「転送データサイズ（最大データ長）」と比較し、この値未満のデータサイズとなった場合を終了と判断する。継続して要求されるパソコン１からのバルク転送要求に対してはデータバッファ２３に蓄積されたデータを順次転送する。
【００８４】
すなわち、図１１と同様に、まず、トランザクションＴ１４１では、ＵＳＢデータ中継装置２は、パソコン１から受信したバルク転送ＩＮパケット（ＩＮ０）をＵＳＢデバイス３へ転送し（Ｓ１４１ａ）、ＵＳＢデバイス３から受信したデータパケット（ＤＡＴＡ０）をデータバッファ（ＦＩＦＯ）２３に保持するとともに（Ｓ１４１ｂ）、ＵＳＢデバイス３へＡＣＫパケットを送信する（Ｓ１４１ｃ）。さらに、ＵＳＢデータ中継装置２は、データバッファ（ＦＩＦＯ）２３に保持されていたデータパケット（ＤＡＴＡ０）をパソコン１に送信し（Ｓ１４１ｄ）、パソコン１からＡＣＫパケットを受信する（Ｓ１４１ｅ）。
【００８５】
トランザクションＴ１４１に続いてトランザクションＴ１４２では、ＵＳＢデータ中継装置２は、自動的にバルク転送ＩＮパケット（ＩＮ１）をＵＳＢデバイス３へ送信し（Ｓ１４２ａ）、バルク転送ＩＮパケット（ＩＮ１）に対してＵＳＢデバイス３から受信したデータバケット（ＤＡＴＡ１）をデータバッファ（ＦＩＦＯ）２３に保持するとともに（Ｓ１４２ｂ）、ＵＳＢデバイス３へＡＣＫパケットを送信する（Ｓ１４２ｃ）。
【００８６】
さらに、トランザクションＴ１４３では、ＵＳＢデータ中継装置２は、自動的にバルク転送ＩＮパケット（ＩＮ２）をＵＳＢデバイス３へ送信し（Ｓ１４３ａ）、バルク転送ＩＮパケット（ＩＮ２）に対してＵＳＢデバイス３から受信したデータバケット（ＤＡＴＡ２）をデータバッファ（ＦＩＦＯ）２３に保持するとともに（Ｓ１４３ｂ）、ＵＳＢデバイス３へＡＣＫパケットを送信する（Ｓ１４３ｃ）。
【００８７】
例えば、Ｓ１４２ｂ、Ｓ１４３ｂにおいて、ＵＳＢデータ中継装置２（例えば調停部２４）は、受信したデータパケット（ＤＡＴＡ１、ＤＡＴＡ２）のデータサイズが、最大データ長未満、もしくは０バイトの場合、データパケットの自動収集を終了する。また、データサイズが最大データ長の場合は、後続のデータがあると推定されるため、自動収集を続ける。
【００８８】
トランザクションＴ１４３に続いて（もしくは並行して）トランザクションＴ１４４では、ＵＳＢデータ中継装置２は、パソコン１からバルク転送ＩＮパケット（ＩＮ１）を受信すると（Ｓ１４４ａ）、データバッファ（ＦＩＦＯ）２３に保持されていたデータパケット（ＤＡＴＡ１）をパソコン１に送信し（Ｓ１４４ｂ）、パソコン１からＡＣＫパケットを受信する（Ｓ１４４ｃ）。このとき、データパケット（ＤＡＴＡ１）が転送されたため、データバッファ（ＦＩＦＯ）２３に、データパケット（ＤＡＴＡ２）が保持された状態となる。
【００８９】
トランザクションＴ１４４に続いてトランザクションＴ１４５では、ＵＳＢデータ中継装置２は、パソコン１からバルク転送ＩＮパケット（ＩＮ２）を受信すると（Ｓ１４５ａ）、データバッファ（ＦＩＦＯ）２３に保持されていたデータパケット（ＤＡＴＡ２）をパソコン１に送信し（Ｓ１４５ｂ）、パソコン１からＡＣＫパケットを受信する（Ｓ１４５ｃ）。このとき、データパケット（ＤＡＴＡ２）が転送されたため、データバッファ（ＦＩＦＯ）２３に、データパケット（ＤＡＴＡ２）は保持されていない。
【００９０】
図１３は、本実施の形態に係るＵＳＢデータ中継装置の動作を示すフローチャートであり、バルク転送データの自動的収集処理（図１３（ａ））とバルク転送の終了判定処理（図１３（ｂ））を示している。
【００９１】
図１３（ａ）に示すように、まず、ＵＳＢデータ中継装置２はＵＳＢデバイス３（またはパソコン１）からパケットを受信すると、調停部２４のコマンド分析部２１は、受信したパケットの転送モード（パケット転送モード）を判別し（Ｓ１）、転送モードがバルク転送か否か判定する（Ｓ２）。例えば、図１０〜図１２のようにバルク転送ＩＮパケットを受信した場合、バルク転送モードであると判定する。Ｓ２において転送モードがバルク転送以外の場合、調停部２４は、受信したパケットをそのままスルーし、パソコン１（またはＵＳＢデバイス３）へ転送する（Ｓ１０）。
【００９２】
また、Ｓ２において転送モードがバルク転送であった場合、コマンド分析部２１は、受信したパケットのデータ方向を確認し（Ｓ３）、データ方向が入力（ＩＮ）か否か判定する（Ｓ４）。例えば、図１０〜図１２のようにバルク転送ＩＮパケットを受信した場合、入力（ＩＮ）であると判定する。Ｓ４においてデータ方向が入力（ＩＮ）ではない、すなわち、出力（ＯＵＴ）であった場合、調停部２４は、受信したパケットをそのままスルーし、パソコン１（またはＵＳＢデバイス３）へ転送する（Ｓ１０）。
【００９３】
また、Ｓ４においてデータ方向が入力（ＩＮ）であった場合、調停部２４は、データバッファ２３を確認（Ｓ５）し、データバッファ２３のデータの有無を判定する（Ｓ６）。Ｓ６においてデータバッファ２３にデータが有る場合、データバッファ２３は、保持しているデータをパソコン１に送信する（Ｓ９）。
【００９４】
また、Ｓ６においてデータバッファ２３にデータが無い場合、調停部２４（またはコマンド分析部２１）は、ターゲット（ＵＳＢデバイス３）よりデータを取得し（Ｓ７）、データバッファ（ＦＩＦＯ）２３に取得したデータのバッファリングを開始する（Ｓ８）。
【００９５】
図１３（ｂ）に示すように、Ｓ８においてデータのバッファリングが開始されると、まず、調停部２４（またはコマンド分析部２１）は、ターゲット（ＵＳＢデバイス３）よりデータを取得し（Ｓ１１）、取得したデータをデータバッファ（ＦＩＦＯ）２３にバッファリングする（Ｓ１２）。
【００９６】
その後、調停部２４は、データバッファ２３のデータ量（取得したデータのデータサイズ）を確認し（Ｓ１３）、そのデータ量が最大データ長未満か否か判定する（Ｓ１４）。Ｓ１４においてデータ量が最大データ長未満の場合、データバッファ（ＦＩＦＯ）２３へのバッファリングを終了し、データバッファ（ＦＩＦＯ）２３上のデータを（例えばセレクタ２５が）パソコン１に転送する（Ｓ９）。
【００９７】
また、Ｓ１４においてデータバッファ２３上のデータ量が最大データ長未満ではない場合、すなわち、データ量が最大データ長以上の場合、再びターゲットより残りのデータを取得（Ｓ１１）する時点にまで戻り、データ量が最大データ長未満（Ｓ１４）になるまでＳ１１〜Ｓ１４の処理を定期的に繰り返す。データ量が最大データ量未満（Ｓ１４）になったとき、データバッファ（ＦＩＦＯ）２３上のデータをパソコン１に転送する（Ｓ９）。
【００９８】
以上のように、本実施の形態では、パソコンとＵＳＢデバイスの中間にＵＳＢデータ中継装置を挿入するが、データやＡＣＫの送信をＵＳＢデータ中継装置が自動的に行うことにより、パソコンとＵＳＢデバイスが直接通信している様に扱うことができる（中間で本装置が介在しているが透過的に扱われる）。
【００９９】
ＵＳＢデバイス側で保持している大量のデータを確実に収集する為、「バルクイン転送」のデータをバッファリングする。このバッファリング機能は「バルクイン転送」を検出した場合、本装置が代理で自主的にＵＳＢデバイスに保持されているデータを収集する機能が実装される（パソコンの負荷状態に依存しない）。パソコンからの「バルクイン転送」要求に応じて本装置が保持したデータを順次転送することにより実現する。
【０１００】
本実施の形態によれば、パソコンにおける計算負荷の増加や通信帯域不足の発生によりＵＳＢデバイスからパソコンへの一定期間内に確実な「バルクイン転送」が実施できない状況の場合でも、ＵＳＢデバイスからパソコンへの「バルクイン転送」をＵＳＢデータ中継装置により代理でＵＳＢデバイスからデータ集積を行うことにより、ＵＳＢデータ中継装置に蓄積されたデータをパソコンに順次送信することで、ＵＳＢデバイスからのデータ収集を保証することが可能となる。
【０１０１】
すなわち、パソコンに接続されたＵＳＢデバイスにおいて、ＵＳＢデバイスから「バルクイン転送」で出力される大量のデータを確実に収集し、かつ効率良く行うことができる。ＵＳＢデバイスが、あるイベントを起点に蓄積したデータ（例としてイメージスキャナやデジタルカメラ等）を、接続されたパソコンの負荷状態に係わらず確実に、かつ効率良くデータを取得することができる。
【０１０２】
（実施の形態２）
以下、図面を参照して実施の形態２について説明する。実施の形態１では、ＵＳＢデータ中継装置２に１つのＵＳＢデバイス３を接続する例について説明したが、図１４に示すように、複数のＵＳＢデバイス３（３１〜３３）を接続してもよい。
【０１０３】
すなわち、ＵＳＢデータ中継装置２にハブ機能（同一転送方式を持つ複数のＵＳＢデバイス３を接続できる機能）を持たせてもよいし、更にデータ転送方式が各々異なる複数のＵＳＢデバイス３を接続しても保障されたデータ転送を行えるようにしてもよい。
【０１０４】
図１５は、パソコン１にＵＳＢデバイス３１、ＵＳＢデバイス３２、ＵＳＢデバイス３３の３つのＵＳＢデバイス３を接続した参考例における、バルクイン転送フローの転送シーケンスである。
【０１０５】
複数のＵＳＢデバイス３に対してバルクイン転送を実行すると、一つのＵＳＢデバイス３とのバルクイン転送の実行間隔が長くなる。バルクイン転送の実行間隔がＵＳＢデバイス３におけるデータファイル保存時間を超えてしまうと、ＵＳＢデバイス３で保持していたデータが消失するため、パソコン１へこの消失したデータを転送することができない。
【０１０６】
すなわち、パソコン１は、データファイルＤ１１保存期間経過前に、バルクイン転送ＩＮ１１を実行して、ＵＳＢデバイス３１からデータファイルＤ１１を取得し、データファイルＤ２１保存期間経過前に、バルクイン転送ＩＮ２１を実行して、ＵＳＢデバイス３２からデータファイルＤ２１を取得している。
【０１０７】
しかし、データファイルＤ３１保存期間経過後に、バルクイン転送ＩＮ３１を実行しているため、データファイルＤ３１は既に消去されており、ＵＳＢデバイス３３からデータファイルＤ３１の代わりにデータファイルＤ３２が取得されている。また、データファイルＤ１２保存期間経過後に、バルクイン転送ＩＮ１２を実行しているため、データファイルＤ１２は既に消去されており、ＵＳＢデバイス３１からデータファイルＤ１２の代わりにデータファイルＤ１３が取得されている。さらに、データファイルＤ２２保存期間経過後に、バルクイン転送ＩＮ２２を実行しているため、データファイルＤ２２は既に消去されており、ＵＳＢデバイス３２からデータファイルＤ２２の代わりにデータファイルＤ２３が取得されている。
【０１０８】
図１６は、図１４の本実施の形態に係るＵＳＢ中継システムの構成における、バルクイン転送フローの転送シーケンスである。
【０１０９】
実施の形態１では、図１１〜図１３で説明したように、ＵＳＢデータ中継装置２が自動的にＵＳＢデバイス３からデータを収集した。図１６でも、実施の形態１と同様に、ＵＳＢデータ中継装置２は、自動的にバルク転送ＩＮをＵＳＢデバイス３１〜３３へ送信し、ＵＳＢデバイス３１〜３３から送信されたデータパケット（データファイル）を受信し、受信したデータバケット（データファイル）をデータバッファ（ＦＩＦＯ）２３に保持する。
【０１１０】
したがって、パソコン１とＵＳＢデバイス３１、ＵＳＢデバイス３２、ＵＳＢデバイス３３の通信路間にＵＳＢデータ中継装置２を挿入することで、実施の形態１と同様に転送データの保障が可能となる。
【０１１１】
すなわち、ＵＳＢデータ中継装置２は、データファイルＤ１１、Ｄ２１、Ｄ３１保存期間経過前に、バルクイン転送ＩＮを実行して、ＵＳＢデバイス３１からデータファイルＤ１１を取得し、ＵＳＢデバイス３２からデータファイルＤ２１を取得し、ＵＳＢデバイス３３からデータファイルＤ３１を取得し、データバッファ（ＦＩＦＯ）２３に保持する。
【０１１２】
同様に、ＵＳＢデータ中継装置２は、データファイルＤ１２、Ｄ２２、Ｄ３２保存期間経過前に、ＵＳＢデバイス３１からデータファイルＤ１２を取得し、ＵＳＢデバイス３２からデータファイルＤ２２を取得し、ＵＳＢデバイス３３からデータファイルＤ３２を取得し、また、データファイルＤ１３、Ｄ２３、Ｄ３３保存期間経過前に、ＵＳＢデバイス３１からデータファイルＤ１３を取得し、ＵＳＢデバイス３２からデータファイルＤ２３を取得し、ＵＳＢデバイス３３からデータファイルＤ３３を取得する。
【０１１３】
一方、パソコン１は、定期的に、バルクイン転送を実行し、ＵＳＢデータ中継装置２から、データバッファ（ＦＩＦＯ）２３に保持されているデータファイルを順次（Ｄ１１、Ｄ２１、Ｄ３１、Ｄ１２、Ｄ２２）、正常に取得する。この場合、ＵＳＢデータ中継装置２は、パソコン１から要求されるバルクイン転送のＵＳＢデバイス３に対応したデータをデータバッファ（ＦＩＦＯ）２３から検索し、データ転送元が一致するデータをパソコン１へ送信することが好ましい。
【０１１４】
図１７は、パソコン１にＵＳＢデバイス３１、ＵＳＢデバイス３２、ＵＳＢデバイス３３の３つのＵＳＢデバイス３を接続した参考例における、複数種類の転送処理フローが発生した場合の転送シーケンスである。
【０１１５】
複数の転送形式のデータ処理をパソコン１が実行すると、バルク転送のデータ処理の優先順位はその他の種別の転送形式に比べて低いため、バルクイン転送の実行間隔は長くなる。
バルクイン転送の実行間隔がＵＳＢデバイス３におけるデータファイル保存時間を超えてしまうと、ＵＳＢデバイス３で保持していたデータが消失するため、パソコン１へこの消失したデータを転送することができない。
【０１１６】
すなわち、パソコン１は、データファイルＤ１１保存期間経過前に、バルクイン転送ＩＮ１１を実行して、ＵＳＢデバイス３１からデータファイルＤ１１を取得している。しかし、その後、ＵＳＢデバイス３２に対するインターラプト転送ＩＴ２、ＵＳＢデバイス３３に対するアイソクロナス転送ＩＳ３が優先的に実行されている。このため、データファイルＤ１２保存期間経過後に、バルクイン転送ＩＮ１２を実行し、データファイルＤ１２は既に消去されており、ＵＳＢデバイス３１からデータファイルＤ１２の代わりにデータファイルＤ１３が取得されている。
【０１１７】
図１８は、図１４の本実施の形態に係るＵＳＢ中継システムの構成における、複数種類の転送フローの転送シーケンスである。
【０１１８】
図１８でも、実施の形態１と同様に、バルクイン転送フローのＵＳＢデバイス３から自動的にデータを収集する。すなわち、実施の形態１と同様に、ＵＳＢデータ中継装置２は、自動的にバルク転送ＩＮをＵＳＢデバイス３１へ送信し、ＵＳＢデバイス３１から送信されたデータパケット（データファイル）を受信し、受信したデータバケット（データファイル）をデータバッファ（ＦＩＦＯ）２３に保持する。
【０１１９】
したがって、パソコン１とＵＳＢデバイス３１、ＵＳＢデバイス３２、ＵＳＢデバイス３３の通信路間にＵＳＢデータ中継装置２を挿入することで、実施の形態１と同様に転送データの保障が可能となる。
【０１２０】
すなわち、ＵＳＢデータ中継装置２は、データファイルＤ１１保存期間経過前に、バルクイン転送ＩＮを実行して、ＵＳＢデバイス３１からデータファイルＤ１１を取得し、データバッファ（ＦＩＦＯ）２３に保持する。同様に、ＵＳＢデータ中継装置２は、データファイルＤ１２保存期間経過前に、ＵＳＢデバイス３１からデータファイルＤ１２を取得し、また、データファイルＤ１３保存期間経過前に、ＵＳＢデバイス３１からデータファイルＤ１３を取得する。
【０１２１】
一方、パソコン１は、インターラプト転送、アイソクロナス転送の空いているタイミングで、バルクイン転送を実行し、ＵＳＢデータ中継装置２から、データバッファ（ＦＩＦＯ）２３に保持されているデータファイルを順次（Ｄ１１、Ｄ１２、Ｄ１３）、正常に取得する。
【０１２２】
（実施の形態３）
以下、図面を参照して実施の形態３について説明する。実施の形態１では、アップストリームのバルク転送（バルクイン転送）のみバッファリング（自動収集）する例について説明を行ったが、その他の転送方式でも同様にバッファリングを行い、データの保障を行うようにしてもよい。例えば、バルク転送以外のコントロール転送、インターラプト転送、アイソクロナス転送についても同様にバッファリングしてもよい。
【０１２３】
また、アップストリームに限らず、ダウンストリームのデータ転送についてもバッファリングを行ってもよい。例えば、図１９に示すように、ＵＳＢデータ中継装置２が、ダウンストリーム用のコマンド分析部２１ａ、セレクタ２６ａ、調停部２４ａ、設定格納バッファ２２ａ、アップストリーム用のコマンド分析部２１ｂ、セレクタ２６ｂ、調停部２４ｂ、設定格納バッファ２２ｂを備えてもよい。これにより、アップストリームとダウンストリーム両方の全種類の転送をバッファリングすることができる。
【０１２４】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【０１２５】
上述の実施形態における各構成は、ハードウェア又はソフトウェア、もしくはその両方によって構成され、１つのハードウェア又はソフトウェアから構成してもよいし、複数のハードウェア又はソフトウェアから構成してもよい。ＵＳＢ中継装置の各機能（各処理）を、ＣＰＵやメモリ等を有するコンピュータにより実現してもよい。例えば、記憶装置に実施形態におけるＵＳＢ中継方法（ＵＳＢ中継処理）を行うためのＵＳＢ中継プログラムを格納し、各機能を、記憶装置に格納されたＵＳＢ中継プログラムをＣＰＵで実行することにより実現してもよい。
【０１２６】
これらのプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（random access memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【０１２７】
１        パソコン
２        ＵＳＢデータ中継装置
３、３１、３２、３３  ＵＳＢデバイス
４ａ、４ｂ  ケーブル
２１、２１ａ、２１ｂ  コマンド分析部
２２、２２ａ、２２ｂ  設定格納バッファ
２３      データバッファ
２４、２４ａ、２４ｂ  調停部
２５      セレクタ
２６、２６ａ、２６ｂ  セレクタ
１００    中継装置
１０１    転送モード判定部
１０２    パケット代理収集部
１０３    パケット転送部
１１０    転送元ＵＳＢ装置
１２０    転送先ＵＳＢ装置
【図１】
2015076731.tif 000003
【図２】
2015076731.tif 000004
【図３】
2015076731.tif 000005
【図４】
2015076731.tif 000006
【図５】
2015076731.tif 000007
【図６】
2015076731.tif 000008
【図７】
2015076731.tif 000009
【図８】
2015076731.tif 000010
【図９】
2015076731.tif 000011
【図１０】
2015076731.tif 000012
【図１１】
2015076731.tif 000013
【図１２】
2015076731.tif 000014
【図１３】
2015076731.tif 000015
【図１４】
2015076731.tif 000016
【図１５】
2015076731.tif 000017
【図１６】
2015076731.tif 000018
【図１７】
2015076731.tif 000019
【図１８】
2015076731.tif 000020
【図１９】
2015076731.tif 000021
【図２０】
2015076731.tif 000022
【図２１】
2015076731.tif 000023