(57)【要約】  本発明のシステムは、ネットワーク通信によりシリアル通信バスを延長した場合であっても、データを正常に入出力する情報処理システムである。この情報処理システムは、デバイスと、デバイスを制御するデバイス制御部と、デバイス制御部とのインタフェースを行なうデバイスインタフェース部と、アプリケーションとのインタフェースを行なうアプリケーションインタフェース部を有する情報処理装置と、アプリケーションインタフェース部とデバイスインタフェース部とを、通信部を介して接続し、アプリケーションとデバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立部と、チャネル確立部により確立されたチャネルを介したデータ転送におけるエラー発生を抑制するエラー抑制部と、を備える。
2016080427.tif 000002
【特許請求の範囲】
【請求項１】
デバイスと、
前記デバイスを制御するデバイス制御手段と、
前記デバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と、
アプリケーションと、前記アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段とを有する情報処理装置と、
前記アプリケーションインタフェース手段と前記デバイスインタフェース手段とを通信手段で接続した場合に、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立手段と、
前記チャネル確立手段により確立されたチャネルを介したデータ転送におけるエラー発生を抑制するエラー抑制手段と、
を備える情報処理システム。
【請求項２】
前記エラー抑制手段は、前記デバイスインタフェース手段と前記デバイス制御手段との間のデータ転送においてオーバーフローまたはアンダーフローが発生しないように配置されるバッファを含む請求項１に記載の情報処理システム。
【請求項３】
データ転送におけるエラー発生をエラー発生の抑制指示の受付手段と共に報知する報知手段を備え、
前記エラー抑制手段は、前記受付手段からの抑制指示に対応して、エラー発生の抑制を調整する請求項１または２に記載の情報処理システム。
【請求項４】
前記データチャネルを介したデータ転送をテストする通信テスト手段を備え、
前記エラー抑制手段は、前記通信テスト手段のテスト結果に応じて、エラー発生の抑制を調整する請求項１乃至３のいずれか１項に記載の情報処理システム。
【請求項５】
前記エラー抑制手段においてエラー抑制のために設定されたパラメータを蓄積する蓄積手段と、
前記チャネル確立手段によりチャネルを確立する場合に、前記蓄積手段から取得したパラメータをエラー抑制のために設定する設定手段と、
をさらに備える請求項１乃至４のいずれか１項に記載の情報処理システム。
【請求項６】
前記デバイス制御手段は、ＵＳＢ、ＨＤＭＩ（登録商標）、ＳＣＳＩ、ＳＤカードコネクタ、および近距離通信の少なくともいずれか１つを介して接続されたデバイスを制御する請求項１乃至５のいずれか１項に記載の情報処理システム。
【請求項７】
前記通信手段は、複数の階層から選択されたデバイス制御に適切な層によりデータを転送する請求項１乃至６のいずれか１項に記載の情報処理システム。
【請求項８】
通信端末において、デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段を起動する第１起動ステップと、
情報処理装置において、アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段を起動する第２起動ステップと、
前記情報処理装置の前記アプリケーションインタフェース手段と前記通信端末の前記デバイスインタフェース手段とを、通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立ステップと、
前記チャネル確立ステップにおいて確立されたチャネルを介したデータ転送におけるエラー発生を抑制するエラー抑制ステップと、
を含む情報処理方法。
【請求項９】
アプリケーションと、
前記アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段と、
前記アプリケーションインタフェース手段を、デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立手段と、
前記チャネル確立手段により確立されたチャネルを介したデータ転送におけるエラー発生を抑制するエラー抑制手段と、
を備える情報処理装置。
【請求項１０】
前記データチャネルを介したデータ転送をテストする通信テスト手段を備え、
前記エラー抑制手段は、前記通信テスト手段のテスト結果に応じて、エラー発生の抑制を調整する請求項９に記載の情報処理装置。
【請求項１１】
アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段を起動する起動ステップと、
前記アプリケーションインタフェース手段を、デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立ステップと、
前記チャネル確立ステップにおいて確立されたチャネルを介したデータ転送におけるエラー発生を抑制するエラー抑制ステップと、
をコンピュータに実行させる情報処理装置の制御プログラム。
【請求項１２】
デバイスを制御するデバイス制御手段と、
前記デバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と、
前記デバイスインタフェース手段を、情報処理装置が有しアプリケーションとのインタフェースを行なうアプリケーションインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立手段と、
前記チャネル確立手段により確立されたチャネルを介したデータ転送におけるエラー発生を抑制するエラー抑制手段と、
を備えた通信端末。
【請求項１３】
デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段を起動する起動ステップと、
前記デバイスインタフェース手段を、情報処理装置が有しアプリケーションとのインタフェースを行なうアプリケーションインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立ステップと、
前記チャネル確立ステップにおいて確立されたチャネルを介したデータ転送におけるエラー発生を抑制するエラー抑制ステップと、
をコンピュータに実行させる通信端末の制御プログラム。
【請求項１４】
情報処理装置のアプリケーションとインタフェースするアプリケーションインタフェース手段と、通信端末のデバイス制御手段とインタフェースするデバイスインタフェース手段とを、通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立した場合に、確立されたチャネルを介したデータ転送におけるエラー発生を抑制するエラー抑制手段のパラメータを取得する取得手段と、
前記取得したパラメータを蓄積するデータベースと、
新たに、情報処理装置のアプリケーションインタフェース手段と、通信端末のデバイスインタフェース手段とを、通信手段を介して接続し、アプリケーションとデバイスとの間に制御チャネルとデータチャネルとを確立する場合に、前記データベースから接続条件に応じて適正なパラメータを選定してエラー抑制手段に提供する提供手段と、
を備えるサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理方法、サーバ、情報処理装置、通信端末およびそれらの制御方法と制御プログラムに関する。
【背景技術】
【０００２】
上記技術分野において、特許文献１には、デバイスドライバを構成する機能ドライバとハブドライバとの間を、ネットワークを介した通信で接続し、ＵＳＢデバイスを制御する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−０１６１６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記文献に記載の技術では、ネットワーク通信におけるデータ転送がＵＳＢ通信におけるデータ転送に追いつかない状況が発生すると、オーバーフロー（オーバーラン）やアンダーフロー（アンダーラン）のためにデータ転送エラーとなり、データを正常に入出力することができない。【０００５】
本発明の目的は、上述の課題を解決する技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明に係る情報処理システムは、
デバイスと、
前記デバイスを制御するデバイス制御手段と、
前記デバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と、
アプリケーションと、前記アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段とを有する情報処理装置と、
前記アプリケーションインタフェース手段と前記デバイスインタフェース手段とを、通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立手段と、
前記チャネル確立手段により確立されたチャネルを介したデータ転送におけるエラー発生を抑制するエラー抑制手段と、
を備える。【０００７】
上記目的を達成するため、本発明に係る情報処理方法は、
通信端末において、デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段を起動する第１起動ステップと、
情報処理装置において、アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段を起動する第２起動ステップと、
前記情報処理装置の前記アプリケーションインタフェース手段と前記通信端末の前記デバイスインタフェース手段とを、通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立ステップと、
前記チャネル確立ステップにおいて確立されたチャネルを介したデータ転送におけるエラー発生を抑制するエラー抑制ステップと、
を含む。【０００８】
上記目的を達成するため、本発明に係る情報処理装置は、
アプリケーションと、
前記アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段と、
前記アプリケーションインタフェース手段を、デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立手段と、
前記チャネル確立手段により確立されたチャネルを介したデータ転送におけるエラー発生を抑制するエラー抑制手段と、
を備える。【０００９】
上記目的を達成するため、本発明に係る情報処理装置の制御方法は、
アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段を起動する起動ステップと、
前記アプリケーションインタフェース手段を、デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立ステップと、
前記チャネル確立ステップにおいて確立されたチャネルを介したデータ転送におけるエラー発生を抑制するエラー抑制ステップと、
を含む。【００１０】
上記目的を達成するため、本発明に係る情報処理装置の制御プログラムは、
アプリケーションとのインタフェースを行なうアプリケーションインタフェース手段を起動する起動ステップと、
前記アプリケーションインタフェース手段を、デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立ステップと、
前記チャネル確立ステップにおいて確立されたチャネルを介したデータ転送におけるエラー発生を抑制するエラー抑制ステップと、
をコンピュータに実行させる。【００１１】
上記目的を達成するため、本発明に係る通信端末は、
デバイスを制御するデバイス制御手段と、
前記デバイス制御手段とのインタフェースを行なうデバイスインタフェース手段と、
前記デバイスインタフェース手段を、情報処理装置が有しアプリケーションとのインタフェースを行なうアプリケーションインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立手段と、
前記チャネル確立手段により確立されたチャネルを介したデータ転送におけるエラー発生を抑制するエラー抑制手段と、
を備える。【００１２】
上記目的を達成するため、本発明に係る通信端末の制御方法は、
デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段を起動する起動ステップと、
前記デバイスインタフェース手段を、情報処理装置が有しアプリケーションとのインタフェースを行なうアプリケーションインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立ステップと、
前記チャネル確立ステップにおいて確立されたチャネルを介したデータ転送におけるエラー発生を抑制するエラー抑制ステップと、
を含む。【００１３】
上記目的を達成するため、本発明に係る通信端末の制御プログラムは、
デバイスを制御するデバイス制御手段とのインタフェースを行なうデバイスインタフェース手段を起動する起動ステップと、
前記デバイスインタフェース手段を、情報処理装置が有しアプリケーションとのインタフェースを行なうアプリケーションインタフェース手段と通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立するチャネル確立ステップと、
前記チャネル確立ステップにおいて確立されたチャネルを介したデータ転送におけるエラー発生を抑制するエラー抑制ステップと、
をコンピュータに実行させる。【００１４】
上記目的を達成するため、本発明に係るサーバは、
情報処理装置のアプリケーションとインタフェースするアプリケーションインタフェース手段と、通信端末のデバイス制御手段とインタフェースするデバイスインタフェース手段とを、通信手段を介して接続し、前記アプリケーションと前記デバイスとの間に制御チャネルとデータチャネルとを確立した場合に、確立されたチャネルを介したデータ転送におけるエラー発生を抑制するエラー抑制手段のパラメータを取得する取得手段と、
前記取得したパラメータを蓄積するデータベースと、
新たに、情報処理装置のアプリケーションインタフェース手段と、通信端末のデバイスインタフェース手段とを、通信手段を介して接続し、アプリケーションとデバイスとの間に制御チャネルとデータチャネルとを確立する場合に、前記データベースから接続条件に応じて適正なパラメータを選定してエラー抑制手段に提供する提供手段と、
を備える。
【発明の効果】
【００１５】
本発明によれば、ネットワーク通信によりシリアル通信バスを延長した場合であっても、データを正常に入出力することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１実施形態に係る情報処理システムの構成を示すブロック図である。
【図２Ａ】本発明の第２実施形態に係る情報処理システムの構成を示すブロック図である。
【図２Ｂ】本発明の第２実施形態に係る情報処理システムの概要を示す図である。
【図２Ｃ】本発明の第２実施形態に係る情報処理システムの機能構成を示すブロック図である。
【図２Ｄ】本発明の第２実施形態に係る情報処理システムの通信路エラー処理を示す図である。
【図２Ｅ】本発明の第２実施形態に係る通信メッセージの構成を示す図である。
【図２Ｆ】本発明の第２実施形態に係る通信データ構成を示す図である。
【図２Ｇ】本発明の第２実施形態に係る情報処理システムにおけるデータ伝送を示す図である。
【図３Ａ】前提技術に係る情報処理システムの概要を示す図である。
【図３Ｂ】前提技術に係る情報処理システムの概要を示す図である。
【図３Ｃ】前提技術に係るＵＳＢの転送方式を示す図である。
【図４】本発明の第２実施形態に係る情報処理装置の機能構成を示すブロック図である。
【図５】本発明の第２実施形態に係る通信端末の機能構成を示すブロック図である。
【図６】本発明の第２実施形態に係る情報処理システムにおける情報の流れを示す図である。
【図７Ａ】本発明の第２実施形態に係るＦＩＦＯ容量テーブルの構成を示す図である。
【図７Ｂ】本発明の第２実施形態に係るＵＳＢのフォーマットおよびプロトコルを示す図である。
【図８】本発明の第２実施形態に係る情報処理装置のハードウェア構成を示すブロック図である。
【図９Ａ】本発明の第２実施形態に係る情報処理装置の処理手順を示すフローチャートである。
【図９Ｂ】本発明の第２実施形態に係る情報処理装置の処理手順を示すフローチャートである。
【図１０】本発明の第２実施形態に係る通信端末のハードウェア構成を示すブロック図である。
【図１１Ａ】本発明の第２実施形態に係る通信端末の処理手順を示すフローチャートである。
【図１１Ｂ】本発明の第２実施形態に係る通信端末の処理手順を示すフローチャートである。
【図１２】本発明の第３実施形態に係る情報処理システムの概要を示す図である。
【図１３Ａ】本発明の第３実施形態に係る情報処理装置の機能構成を示すブロック図である。
【図１３Ｂ】本発明の第３実施形態に係る通信テスト部の機能構成を示すブロック図である。
【図１４】本発明の第３実施形態に係るＦＩＦＯ容量および通信帯域の決定テーブルの構成を示す図である。
【図１５】本発明の第３実施形態に係る情報処理装置の処理手順を示すフローチャートである。
【図１６】本実施形態をＵＳＢハブに適用した情報処理システムの機能構成を示すブロック図である。
【図１７】本実施形態をＨＤＭＩ（登録商標）に適用した情報処理システムの機能構成を示すブロック図である。
【図１８】本実施形態をＳＣＳＩに適用した情報処理システムの機能構成を示すブロック図である。
【図１９】本実施形態をＳＤカードに適用した情報処理システムの機能構成を示すブロック図である。
【図２０】本実施形態を機器共有システムに適用した情報処理システムの機能構成を示すブロック図である。
【図２１】本発明の第４実施形態に係る情報処理システムの構成を示すブロック図である。
【図２２】本発明の第４実施形態に係るクラウドサーバの機能構成を示すブロック図である。
【図２３】本発明の第４実施形態に係るシステムパラメータデータベースの構成を示す図である。
【図２４】本発明の第４実施形態に係るクラウドサーバのハードウェア構成を示すブロック図である。
【図２５】本発明の第４実施形態に係るクラウドサーバの動作手順を示すフローチャートである。
【図２６】本発明の第５実施形態に係る情報処理システムにおけるデータ伝送を示す図である。
【図２７】本発明の第５実施形態に係る情報処理システムにおける他のデータ伝送を示す図である。
【発明を実施するための形態】
【００１７】
以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素は単なる例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。
【００１８】
［第１実施形態］
本発明の第１実施形態としての情報処理システム１００について、図１を用いて説明する。情報処理システム１００は、接続されたデバイスを制御するシステムである。
【００１９】
図１に示すように、情報処理システム１００は、デバイス１１０と、デバイス制御部１２０と、デバイスインタフェース部１３０と、情報処理装置１４０と、チャネル確立部１５０と、エラー抑制部１６０と、を含む。デバイス制御部１２０は、デバイス１１０を制御する。デバイスインタフェース部１３０は、デバイス制御部１２０とのインタフェースを行なう。情報処理装置１４０は、アプリケーション１４１と、アプリケーション１４１とのインタフェースを行なうアプリケーションインタフェース部１４２とを有する。チャネル確立部１５０と、エラー抑制部１６０と、を含む。デバイス制御部１２０は、デバイス１１０を制御すは、アプリケーションインタフェース部１４２とデバイスインタフェース部１３０とを、通信部１５１を介して接続し、アプリケーション１４１とデバイス１１０との間に制御チャネルとデータチャネルとを確立する。エラー抑制部１６０は、チャネル確立部１５０により確立されたチャネルを介したデータ転送におけるエラー発生を抑制する。
【００２０】
本実施形態よれば、チャネルを介したデータ転送におけるエラー発生を抑制するので、ネットワーク通信によりシリアル通信バスを延長した場合であっても、データを正常に入出力することができる。
【００２１】
［第２実施形態］
次に、本発明の第２実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、遠隔の通信端末にＵＳＢ(Universal Serial Bus)ケーブルで接続された遠隔のＵＳＢデバイスを、情報処理装置としてのホストからネットワークを介して制御し、自装置に接続されたデバイスと同じように操作する。その場合に、ＦＩＦＯ(First-In First-Out)バッファを配置して、ネットワーク通信におけるデータ転送の遅れによるエラーが発生しないように抑制する。
【００２２】
また、データ転送におけるエラー発生を報知すると共に、エラー発生の抑制指示を受付け、受付けた抑制指示に対応して、エラー発生の抑制を調整する。なお、デバイスは、通信端末に、ＵＳＢ、ＨＤＭＩ（登録商標）、ＳＣＳＩ、ＳＤカードコネクタ、近距離通信、を介して接続される。なお、データ通信手段においては、複数の階層から選択されたデバイス制御に適切な層によりデータを転送する。
【００２３】
《情報処理システム》
本実施形態の情報処理システムを説明する前に、本実施形態の特徴を明瞭にするために前提技術に係る情報処理システムについて説明する。
【００２４】
（前提技術）
図３Ａは、前提技術に係る情報処理システム３１０の概要を示す図である。
【００２５】
情報処理システム３１０は、ホストコンピュータ上で実行されるＯＳ(Operating System)やアプリケーション２３１と、ホストコンピュータ上で実行されるシステムソフトウェアであるデバイスドライバ３０１と、ＵＳＢバスインタフェース２２６と、を有する。デバイスドライバ３０１は、例えば、デバイスの種類によって異なるプロトコルを実装するためのクラスドライバＣＤ(Class Driver)、ＵＳＢ固有のプロトコルを実装するバスドライバＢＤ(Bus Driver)、ハードウェアチップの抽象化を行なうＨＣＤ(Host Controller Driver)、を含む。また、ＵＳＢバスインタフェース２２６はホストコントローラを含むＩＣチップなどで提供される。
【００２６】
かかる構成によれば、デバイスに接続するホストコンピュータなどのデバイス制御部がデバイスに適応するデバイスドライバを有しない場合には、接続されたデバイスが動作しない。
【００２７】
図３Ｂは、前提技術に係る情報処理システム３２０の概要を示す図である。情報処理システム３２０は、本発明者が提案するネットワーク２４０を介して遠隔に接続された制御部（例えば、他のコンピュータや通信端末）が、デバイスを制御する構成である。遠隔に接続された制御部がデバイスに適応するデバイスドライバを有しない場合にあっても、ホストコントローラを含むＵＳＢバスインタフェース２２６とのインタフェースが可能であれば、ホストコンピュータのＯＳまたはアプリケーションへのインタフェースと協働することで、遠隔地のデバイス制御を可能とする。
【００２８】
情報処理システム３２０は、ホストコンピュータ上で実行されるＯＳ（アプリケーション）２３１と、デバイスドライバ３０２と、ＵＳＢバスインタフェース２２６と、を有する。デバイスドライバ３０２は、ホストコンピュータ上で実行されるＯＳまたはアプリケーションとのインタフェースソフトウェア３３２と、遠隔に接続された制御部上で実行されるホストコントローラを含むＵＳＢバスインタフェース２２６とのインタフェースソフトウェア３２５と、を有する。また、デバイスドライバ３０２は、インタフェースソフトウェア３３２と３２５とをネットワーク２４０を介して接続する通信制御部（図示せず）を含む。
【００２９】
かかる構成により、ホストコンピュータが遠隔地のデバイスを自機のバスＩ／ＦやシリアルＩ／Ｆに直接接続されたデバイスと同様に制御できる。しかしながら、ホストコンピュータと制御部とを接続する通信路の通信形式や通信速度と、遠隔に接続されるデバイスのバスＩ／ＦやシリアルＩ／Ｆの形式や速度と、にずれや遅延が発生すると、データ転送エラーとなる。ＵＳＢ接続の場合は、特に、インタラプト転送やアイソクロナス転送の場合にはデータ転送エラーが重大な結果をもたらす。
【００３０】
図３Ｃは、前提技術に係るＵＳＢの転送方式を示す図である。
【００３１】
ＵＳＢの転送方式には、基本的に、コントロール転送３１１と、バルク転送３１２と、インタラプト転送３１３と、アイソクロナス転送３１４と、を有する。コントロール転送３１１は、セットアップや設定パラメータ転送用の半二重通信であり、少ないデータ量である。バルク転送３１２は、記憶装置やスキャナなどの大容量高速データのＩＮとＯＵＴとのそれぞれ一方向の通信であるが、転送済みのデータを制御する。インタラプト転送３１３は、計測やマシン機器の小容量データの定期的転送（基本的にホストからの要求）であるが、データ転送エラーは機器の操作エラーなどにつながる。アイソクロナス転送３１４は、音声やビデオなどのリアルタイムの一定期間内のデータ量を保証すべき転送であり、また、再送処理がないので、データ転送の信頼性が重要である。
【００３２】
これらの転送方式の特徴および用途に関連して、転送速度、転送周期およびデータ量／ＵＳＢパケット３１５の動作がデータのオーバーフロー（オーバーラン）やアンダーフロー（アンダーラン）なしに実現することが求められる。
【００３３】
本実施形態の情報処理システムは、チャネルを介したデータ転送におけるエラー発生を抑制して、ネットワーク通信によりシリアル通信バスを延長した場合であっても、データを正常に入出力することができるようにする。
【００３４】
《本実施形態の情報処理システム》
図２Ａ乃至図２Ｇを参照して、本実施形態の情報処理システム２００の構成を説明する。
【００３５】
（システム構成）
図２Ａは、本実施形態に係る情報処理システム２００の構成を示すブロック図である。
【００３６】
情報処理システム２００は、情報処理装置としてのホスト２３０にネットワーク２４０を介して接続された通信端末２２１、２２２および２２３を備える。通信端末２２１、２２２および２２３には、それぞれシリアルバス２６１〜２６５によりデバイス２１２〜２１５が接続されている。なお、デバイス２１３と２１４とは、ハブを介して接続される。また、ホスト２３０には、デバイス２１１が接続されている。ここで、デバイス２１１、２１２はＤＶＤユニット、デバイス２１３は体温計、デバイス２１４は血圧計、デバイス２１５は工作機器である。
【００３７】
このように接続されたデバイスは、ホスト２３０から操作可能なデバイスを示すデバイスマネージャの表示画面上において、次のように表示されている。ホスト２３０のＵＳＢコネクタに接続されたデバイス２１１は、内部のユニバーサル＿シリアル＿バス＿コントローラの欄に“ＵＳＢ＿ＤＶＤ”２３１と表示される。ネットワーク２４０を介して外部に接続されたデバイス２１２〜２１５６は、それぞれ、リモート＿ユニバーサル＿シリアル＿バスの欄に“ＵＳＢ＿ＤＶＤ”２３２、“ＵＳＢ＿体温計”２３３、“ＵＳＢ＿血圧計”２３４、“ＵＳＢ＿工作機器”２３５と表示される。ホスト２３０からは、自装置に接続したデバイスもネットワーク２４０を介して遠隔に接続したデバイスも、同じ接続デバイスとして操作される。
【００３８】
なお、本実施形態においては、ネットワーク２４０を公衆回線や無線通信を含む遠隔通信として説明しているが、ネットワーク２４０をＬＡＮや近距離無線通信（例えば、Bluetooth(登録商標）やＷｉ−Ｆｉなど）に置き換えても、あるいは、それらを組み合わせても同様に実現でき、同じ効果を奏することができる。
【００３９】
（システム概要）
図２Ｂは、本実施形態に係る情報処理システム２００の概要を示す図である。情報処理システム２００の概要は、図３Ｂと対比させて主にソフトウェア構成を示している。
【００４０】
情報処理システム２００は、ホストコンピュータ上で実行されるＯＳ（アプリケーション）２３１と、デバイスドライバ２０１と、ＵＳＢバスインタフェース２２６と、を有する。デバイスドライバ２０１は、ホストコンピュータ上で実行されるＯＳまたはアプリケーションとのインタフェースを実行するアプリケーションインタフェース（図中、アプリケーションＩＦ）２３２を有する。また、デバイスドライバ２０１は、遠隔に接続された制御部上のＵＳＢバスインタフェース２２６とのインタフェースを実行するホストコントローラインタフェース（図中、ホストコントローラＩＦ）２２５を有する。また、デバイスドライバ２０１は、アプリケーションインタフェース２３２とホストコントローラインタフェース２２５とをネットワーク２４０を介して通信接続する通信制御部（図示せず）を含む。
【００４１】
そして、通信制御部およびアプリケーションインタフェース２３２に、通信形式や通信速度により発生するジッタなどを吸収するためのＦＩＦＯ２３２ａ、および／または、通信制御部およびホストコントローラインタフェース２２５に、通信形式や通信速度により発生するジッタの吸収やデータ流量の調整などをするためのＦＩＦＯ２２５ａ、を有する。ＦＩＦＯ２３２ａ、ＦＩＦＯ２２５ａの容量は、主に、ホストコントローラとデバイスとのデータ流量と、ネットワーク上のデータ流量とに依存する。例えば、容量決定手順２０２として、一定時間当たりの通信量を計測して、ホストコントローラとデバイスとのデータ流量を維持するために必要な一定時間当たりの通信速度制御として決定する。
【００４２】
ＦＩＦＯの容量を、設定したタイムスロット例（1ｓ/125μｓ/1mｓ)に対して、あらかじめ設定した数に対応した時間蓄積をし、設定タイムスロットに所定のＰＫＴ数を出力できるように設定する。そして、その条件として、例えば、(1) 1秒間に1000パケット、(2) 音声などの、125μsecの整数倍の時間間隔で所定の回数のＰＫＴを通信、(3) ビデオなどの、1ms当たりのフレーム数を守っての通信、を可能とするよう設定する。
【００４３】
なお、ジッタの吸収やデータ流量の調整は、ＦＩＦＯ２３２ａ、ＦＩＦＯ２２５ａに限定されない。ローテーションメモリやＴＤＭ(Time Division Multiplexing)などの他の構成要素であってもよい。
【００４４】
かかる構成により、ホストコンピュータが遠隔地のデバイスを自機のバスＩ／ＦやシリアルＩ／Ｆに直接接続されたデバイスと同様に制御でき、かつ、チャネルを介したデータ転送におけるエラー発生を抑制して、ネットワーク通信によりシリアル通信バスを延長した場合であっても、データを正常に入出力することができる。
【００４５】
（システム概念）
図２Ｃは、本実施形態に係る情報処理システム２００の概念を示す図である。なお、図２Ｃにおいては、常備のソフトウェアであるＯＳやＢＩＯＳ(Basic Input/Output System)などの図示を省略している。
【００４６】
図２Ｃの情報処理システム２００は、情報処理装置としてのホスト２３０と、遠隔にあって、ホスト２３０とネットワーク２４０を介して接続する通信端末２２０と、通信端末２２０のＵＳＢコネクタに接続されたＵＳＢデバイス２１０と、を備える。
【００４７】
ホスト２３０は、ソフトウェアとして、アプリケーションソフトウェア２３１と、デバイスドライバの一部としてのアプリケーションインタフェース２３２とを有する。アプリケーションソフトウェア２３１は、あらかじめホスト２３０が提供するサービス、あるいは、ユーザが開発したサービスを提供するためのソフトウェアである。アプリケーションインタフェース２３２は、アプリケーションソフトウェア２３１が要求した入出力ファイル操作の構造体を解釈して、入出力ファイル操作の対象デバイスやそのプロトコル、データフォーマットなどに従って、ネットワーク２４０を介して送受信する制御情報やデータを定義する構造体を生成する。本例ではＵＳＢデバイス２１０に対する入出力ファイルのアクセスなので、ＵＳＢのプロトコルに応じたコマンドやデータフォーマットに従うデータの送受信を準備する。また、アプリケーションインタフェース２３２は、通信部と共有する構成として、データ流量を調整するＦＩＦＯ２３２ａを備えている。
【００４８】
通信端末２２０は、ソフトウェアとして、デバイスドライバの一部としてのホストコントローラインタフェース２２５と、ホストコントローラおよびＳＩＥ(Serial Interface Engine)を有するＵＳＢバスインタフェース２２６とを有する。ホストコントローラインタフェース２２５は、ネットワーク２４０を介して、アプリケーションインタフェース２３２から受信したＵＳＢのプロトコルに応じたコマンドやデータなどを、ＵＳＢバスインタフェース２２６のホストコントローラに理解できる形式で渡す。また、ホストコントローラインタフェース２２５は、ネットワーク２４０を介して、ＵＳＢバスインタフェース２２６のホストコントローラから渡されたデータやデバイスステータスなどを、ネットワーク２４０を介して、アプリケーションインタフェース２３２に送信する。また、ホストコントローラインタフェース２２５は、通信部と共有する構成として、データ流量を調整するＦＩＦＯ２２５ａを備えている。
【００４９】
ＵＳＢバスインタフェース２２６のホストコントローラは、ホストコントローラインタフェース２２５とコマンドやデータなどを交換しながら、ＵＳＢケーブル２６０を介したシリアル通信をＵＳＢプロトコルに従い実行する。ＵＳＢバスインタフェース２２６のＳＩＥは、ＵＳＢケーブル２６０上の信号をＵＳＢ通信の仕様に従い制御する。
【００５０】
ＵＳＢデバイス２１０は、ソフトウェアとして、通信端末２２０のＵＳＢバスインタフェース２２６とＵＳＢケーブル２６０を介して接続して、信号をやり取りするＵＳＢデバイス２１０のＵＳＢバスインタフェース２１６を有する。また、ＵＳＢデバイス２１０は、デバイス情報や制御情報を含むディスクリプタを記憶するＦＩＦＯ０からなるエンドポイント０２１７と、入出力データを記憶するＦＩＦＯ１〜ｎからなるエンドポイント１〜ｎ２１８とを有する。
【００５１】
かかる接続により、通信端末２２０とＵＳＢデバイス２１０とは、お互いのＵＳＢバスインタフェース２２６および２１６により物理レベルの通信を実行する。また、アプリケーションインタフェース２３２、ネットワーク２４０およびホストコントローラインタフェース２２５を介したシステムレベルのコントロール転送により、デフォルトパイプ２５１を介してアプリケーションソフトウェア２３１とエンドポイント０２１７との間で、基本処理としての制御通信を実現する。また、アプリケーションレベルのデータ転送では、データパイプ群２５２を介してアプリケーションソフトウェア２３１とエンドポイント１〜ｎ２１８との間で、デバイスクラスの各メソッドとしてのデータ通信を実現する。
【００５２】
以上のように、ネットワーク２４０を介した、ホスト２３０のアプリケーションインタフェース２３２と通信端末２２０のホストコントローラインタフェース２２５とのネットワーク通信と、ＵＳＢケーブルを介した、ＵＳＢバスインタフェース２２６と２１６間のシリアル通信とから、統一された通信チャネル（パイプ）を形成することができる。
【００５３】
さらに、アプリケーションインタフェース２３２、ホストコントローラインタフェース２２５、通信部が共有するＦＩＦＯ２３２ａ、および／または、ＦＩＦＯ２２５ａにより、ジッタの吸収やデータ流量の調整を実現し、チャネルを介したデータ転送におけるエラー発生を抑制して、ネットワーク通信によりシリアル通信バスを延長した場合であっても、データを正常に入出力する。
【００５４】
（通信路エラー処理）
図２Ｄは、本実施形態に係る情報処理システム２００の通信路エラー処理を示す図である。
【００５５】
図２Ｄの上段には、ホスト２３０において、通信路におけるデータ転送エラーが発生した場合の、対処例が図示されている。通信路エラー２３６が表示され、そのエラー発生したリモートＵＳＢバス２３５が報知されている。なお、通信路エラーを音声で報知してもよい。通信路エラーへの対処操作例として、ネットワーク上の帯域拡大２３７と、ＦＩＦＯ２３２ａの容量増大２３８と、をユーザに問い合わせている。例えば、ユーザが帯域拡大２３７を指示して通信路エラーがなくなると、上段右図のように、通信路確保２３９が通知される。
【００５６】
一方、図２Ｄの下段には、スマートフォンなどの通信端末２２０において、通信路におけるデータ転送エラーが発生した場合の、対処例が図示されている。通信路エラー２２７が表示され、そのエラー発生したリモートＵＳＢバスが報知されている。なお、通信路エラーを音声で報知してもよい。通信路エラーへの対処操作例として、ネットワーク上の帯域拡大と、ＦＩＦＯ２３２ａの容量増大と、の問い合わせ２２８が表示されている。例えば、ユーザが帯域拡大を指示して通信路エラーがなくなると、下段右図のように、通信路確保２２９が通知される。
【００５７】
なお、帯域拡大は、ユーザの操作単位で行なわれても、自動的に適切な帯域に拡大されてもよい。例えば、通信経路が複数ある場合に、複数の通信経路を確保することにより帯域拡大を行なってもよい。また、ＦＩＦＯ容量増大も、ユーザの操作単位で行なわれても、自動的に適切な容量に調整されてもよい。さらに、通信状況などを考慮して、帯域拡大とＦＩＦＯ容量増大との適切な組み合わせを選定してもよい。
【００５８】
（通信メッセージ）
図２Ｅは、本実施形態に係る通信メッセージの構成を示す図である。なお、通信メッセージのフォーマットは、図２Ｅに限定されるものではない。
【００５９】
図２Ｅには、デフォルトパイプ２５１である制御チャネルで送受信される制御メッセージ２７０と、データパイプ群２５２となるデータチャネルで送受信されるデータメッセージ２８０とが図示されている。
【００６０】
制御メッセージ２７０の内、ホスト２３０から通信端末２２０に送信される制御メッセージは、ＩＰアドレス２７１と、伝送先エリア／伝送元エリア２７２と、通信データ２７３と、誤り訂正の例えばＣＲＣ２７４と、を有する。ＩＰアドレス２７１としては、送信先の通信端末アドレスと送信元のホストアドレスとがセットされる。伝送先エリア／伝送元エリア２７２としては、伝送先エリアにＵＳＢデバイス２１１（２１２）のＦＩＦＯ0が、伝送元エリアにホスト２３０のＵＳＢバッファ0が、指示される。また、通信データ２７３としては、ホスト２３０が割り当てたデバイスアドレスやＵＳＢデバイス２１１（２１２）の制御コマンドが伝送される。
【００６１】
制御メッセージ２７０の内、通信端末２２０からホスト２３０に送信される制御メッセージは、ＩＰアドレス２７５と、伝送先エリア／伝送元エリア２７６と、通信データ２７７と、誤り訂正の例えばＣＲＣ２７８と、を有する。ＩＰアドレス２７５としては、送信先のホストアドレスと送信元の通信端末アドレスとがセットされる。伝送先エリア／伝送元エリア２７６としては、伝送先エリアにホスト２３０のＵＳＢバッファ0が、伝送元エリアにＵＳＢデバイス２１１（２１２）のＦＩＦＯ0が、指示される。また、通信データ２７７としては、ＵＳＢデバイス２１１（２１２）のデバイスディスクリプタやデバイスステータスが伝送される。
【００６２】
データメッセージ２８０の内、ホスト２３０から通信端末２２０に送信されるデータメッセージは、ＩＰアドレス２８１と、伝送先エリア／伝送元エリア２８２と、通信データ２８３と、誤り訂正の例えばＣＲＣ２８４と、を有する。ＩＰアドレス２８１としては、送信先の通信端末アドレスと送信元のホストアドレスとがセットされる。伝送先エリア／伝送元エリア２８２としては、伝送先エリアにＵＳＢデバイス２１０のＦＩＦＯ1〜nが、伝送元エリアにホスト２３０のＵＳＢバッファ1〜nが、対応付けられて指示される。また、通信データ２８３としては、１つまたは複数のバルクＯＵＴデータが伝送される。
【００６３】
データメッセージ２８０の内、通信端末２２０からホスト２３０に送信されるデータメッセージは、ＩＰアドレス２８５と、伝送先エリア／伝送元エリア２８６と、通信データ２８７と、誤り訂正の例えばＣＲＣ２８８と、を有する。ＩＰアドレス２８５としては、送信先のホストアドレスと送信元の通信端末アドレスとがセットされる。伝送先エリア／伝送元エリア２８６としては、伝送先エリアにホスト２３０のＵＳＢバッファ1〜nが、伝送元エリアにＵＳＢデバイス２１０のＦＩＦＯ1〜nが、対応付けられて指示される。また、通信データ２８７としては、１つまたは複数のバルクＩＮデータが伝送される。
【００６４】
なお、コントロール転送、バルク転送の外に、インタラプト転送やアイソクロナス転送があるが、データメッセージの構成としては、“ＳＥＴＵＰ”ステージが省略されるが同様であるので、それらのメッセージの説明を省略する。
【００６５】
このように、カプセリングしたＩＰアドレスとしては、ホスト２３０と通信端末２２０との間のネットワーク通信であるが、データは、ホスト２３０にアプリケーションソフトウェア２３１が確保させたＵＳＢバッファと、ＵＳＢデバイス２１１（２１２）のエンドポイントであるＦＩＦＯとの間で伝送される。
【００６６】
（通信データ構成例）
図２Ｆは、本実施形態に係る通信データ構成を示す図である。図２Ｆにおいては、図２Ｅにおける、カブセル化のためのＩＰアドレスなどは省かれている。なお、図２Ｆには、本実施形態を実現する通信データ構成の一例を示すが、これに限定されるわけではない。例えば、デバイスドライバの上位層における通信データとして、関数のパラメータ（引数）を送受信することや、さらに、関数自体を送受信することなどもできる。
【００６７】
図２Ｆには、基本的な通信データ構成２７３／２７７と、ＵＳＢの場合の通信データ構成２７３と、他のＨＤＭＩ（登録商標）やＳＣＳＩの場合の通信データ構成２７７が示されている。
【００６８】
通信データ構成２７３／２７７は、デバイス特定情報を有する。デバイス特定情報は、デバイス種類と、接続バス種類と、デバイス識別子と、を含む。通信データ構成２７３／２７７は、接続バスにおける転送モードと、接続バスを介して転送すべき情報と、を有する。転送すべき情報には、コマンドやステータスやデータを含む。
【００６９】
ＵＳＢの場合の通信データ構成２７３は、デバイス特定情報として、デバイス種類である産業機器と、接続バスであるＵＳＢと、デバイス識別子であるＩＥ００１と、を有する。ＵＳＢの場合の通信データ構成２７３は、転送モードとしてＵＳＢコントロール転送と、転送情報としてＵＳＢリクエストやデバイスディスクリプタを含む。かかる構成によれば、従来のＵＳＢ接続による最大１２７台という制限を考慮する必要はなくなる。
【００７０】
他のＨＤＭＩ（登録商標）やＳＣＳＩの場合の通信データ構成２７７は、デバイス特定情報として、モニタ、ＨＤＭＩ（登録商標）、ＭＴ０００２や、ＣＤ、ＳＣＳＩ、ＣＤ０００５を有する。また、転送モード２としてＨＤＭＩ（登録商標）制御やＳＣＳＩ制御、転送情報としてＤＤＣ／ＣＥＤやコマンド／レスポンスを含む。
【００７１】
（データ伝送例）
図２Ｇは、本実施形態に係る情報処理システム２００におけるデータ伝送を示す図である。なお、図２Ｇは、ＵＳＢデバイスにおけるＬ２レベルの通信を示すが、通信はさらに下位レベルであっても上位レベルであってもよい。
【００７２】
図２Ｇは、ＵＳＢ接続されたＵＳＢデバイスのディスクリプタ取得手順を示すシーケンス図である。
【００７３】
デバイス２１０に設定されているディスクリプタは、ＧＥＴ＿ＤＥＳＣＲＩＰＴＯＲなどのＵＳＢリクエストにより取得される。ＵＳＢリクエストは、それぞれコントロール転送によりデバイス２１０とやり取りされる。各コントロール転送は、セット・ステージと、データ・ステージと、ステータス・ステージとからなる。各ステージは、トークン・パケットと、データ・パケットと、ハンドシェイク・パケットとからなる。ディスクリプタは、各データ・ステージのデータ・パケットで取得される。デバイス２１０から取得したディスクリプタはＩＰヘッダやＴＣＰヘッダでＩＰカプセリングして、携帯端末からなるＵＳＢハブ２２１から情報処理装置２３０に送信される。
【００７４】
ここで、情報処理装置２３０のアプリケーションインタフェースを構成するクラスドライバ２３２およびバスドライバは、アプリケーション２３１のデバイス入出力要求に応じて、まず接続デバイスを確認するためコントロール転送とＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストとを生成して、通信制御部に渡す。
【００７５】
ＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたコントロール転送とＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストとは、通信端末からなるＵＳＢハブ２２１の通信制御部で受信されてＩＰアンカプセリングされる。コントロール転送とＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストとは、ホストコントローラドライバ２２５に渡される。ホストコントローラドライバ２２５は、コントロール転送とＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストとに基づいて、デバイス２１０へのＵＳＢバスにおける各パケットを生成するようＵＳＢバスインタフェース（不図示）に指示する。
【００７６】
ホストコントローラドライバ２２５は、デバイス２１０から受信した、データ・ステージで受信したデータ・パケットをデバイスディスクリプタとして抽出し、コントロール転送とデバイスディスクリプタとして、通信制御部に渡す。ＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたコントロール転送とデバイスディスクリプタとは、通信端末２２０の通信制御部から情報処理装置２３０の通信制御部に送信される。
【００７７】
情報処理装置の通信制御部は、アンカプセリングしたコントロール転送とデバイスディスクリプタを、アプリケーションインタフェースを構成するバスドライバおよびクラスドライバ２３２に渡すと、クラスドライバ２３２はアプリケーション２３１のデバイス入出力要求に応答して、接続デバイス情報を通知する。
【００７８】
以下、他のコントロール転送や、バルク転送、インタラプト転送、アイソロナス転送においても、同様のデータ伝送が行なわれる。なお、ホストコントローラドライバ２２５とＵＳＢバスインタフェース２２６とが一体にされたソフトウェアであってもよい。
【００７９】
《情報処理装置の機能構成》
図４は、本実施形態に係る情報処理装置２３０の機能構成を示すブロック図である。なお、図４には、本実施形態の動作に関連の深い機能構成部を図示し、情報処理装置２３０が有する通常の機能構成部は図示していない。例えば、情報処理装置２３０がパーソナルコンピュータ（以下、ＰＣ）の場合の種々の処理機能については示していない。
【００８０】
情報処理装置２３０は、通信制御部４０１と、チャネル確立部４０２と、エラー抑制部４０５と、アプリケーションデータベース（図中、アプリケーションＤＢ）４１０と、を備える。通信制御部４０１は、ネットワーク２４０を介する通信端末２２０との通信を制御する。チャネル確立部４０２は、アプリケーション開始部４０３とアプリケーションインタフェース起動部４０４とを含み、情報処理装置２３０と通信端末２２０、さらに、ＵＳＢデバイス２１０へのチャネルを確立する。エラー抑制部４０５は、ＦＩＦＯ２３２ａを有し、ネットワーク２４０のデータ流量をエラー発生しないように調整する。アプリケーションデータベース４１０は、複数のアプリケーション４１１、および、デバイスドライバの一部である複数のアプリケーションインタフェース４１２を格納する。
【００８１】
アプリケーション開始部４０３は、ユーザにサービスを提供するためにアプリケーションデータベース４１０からアプリケーションを選択して開始する。アプリケーションインタフェース起動部４０４は、アプリケーション開始部４０３が開始したアプリケーションにより指示された入出力ファイル操作を実現するためのアプリケーションインタフェースを、アプリケーションデータベース４１０から検索して起動させる。
【００８２】
《通信端末の機能構成》
図５は、本実施形態に係る通信端末２２０の機能構成を示すブロック図である。なお、図５には、本実施形態の動作に関連の深い機能構成部を図示し、通信端末２２０が有する通常の機能構成部は図示していない。例えば、通信端末２２０がスマートフォンやタブレットの場合の種々の処理機能については示していない。
【００８３】
通信端末２２０は、通信制御部５０１と、チャネル確立部５０２と、エラー抑制部５０６と、を備える。通信制御部５０１は、ネットワーク２４０を介する情報処理装置２３０との通信を制御する。チャネル確立部５０２は、ホストコントローラインタフェース起動部５０３と、デバイス制御部としてのＵＳＢホストコントローラ５０４と、ＳＩＥを含むＵＳＢコネクタ５０５と、を含む。ホストコントローラインタフェース起動部５０３は、入出力ファイル操作に対応して、デバイスドライバの一部である、ＵＳＢホストコントローラ５０４とインタフェースするホストコントローラインタフェースを起動する。ＵＳＢホストコントローラ５０４は、アプリケーション開始部４０３が開始したアプリケーションにより指示された入出力ファイル操作を実現するために、ＵＳＢバスインタフェース２２６のパケット交換を制御する。ＵＳＢコネクタ５０５は、ＵＳＢデバイス２１０とのパケット交換のためにＵＳＢケーブルが接続される。
【００８４】
エラー抑制部４０５は、ＦＩＦＯ２２５ａを有し、ネットワーク２４０のデータ流量をエラー発生しないように調整する。
【００８５】
（情報の流れ）
図６は、本実施形態に係る情報処理システム２００における情報の流れを示す図である。なお、図６には、主要な記憶領域を示し、細部の構成は省略している。
【００８６】
情報処理装置２３０には、入出力ファイル構造体６３１と、ＵＳＢバッファ６３２と、通信構造体６３３と、ＦＩＦＯ２３２ａと、が確保される。入出力ファイル構造体６３１は、アプリケーションソフトウェア２３１が入出力ファイル操作を指示した時に確保され、例えば、ファイル格納先やデバイス種別、入出力プロトコルなどに対応して所定の処理を行なう関数群と、デバイス情報と、入出力バッファと、を含む。ＵＳＢバッファ６３２は、アプリケーションインタフェース２３２が入出力ファイル構造体６３１の関数群の処理に応じて、デバイス種別がＵＳＢデバイスの場合に確保される、エンドポイントにそれぞれ対応するバッファを有する。通信構造体６３３は、アプリケーションインタフェース２３２が入出力ファイル構造体６３１の関数群の処理に応じて、デバイスがネットワークを介した遠隔にある場合に確保される構造体である。通信構造体６３３は、通信に関連するプロトコルやメッセージフォーマット、通信速度などを設定するための関数群と、送信データを一時記憶する送信バッファと、受信データを一時記憶する受信バッファと、を含む。
【００８７】
例えば、通信構造体６３３の関数群として、ＵＳＢに係る情報と通信に係る情報とに対応してＦＩＦＯ容量を記憶するＦＩＦＯ容量テーブル６１０が記憶されて、ＦＩＦＯ２３２ａの適切な容量が確保される。かかるＦＩＦＯ２３２ａの確保手順は本例に限定されない。あらかじめ最大限のＦＩＦＯ容量が準備され、デバイス制御中のデータ流量を測定しながら使用する容量を調整する構成であってもよい。
【００８８】
なお、ＵＳＢバッファ６３２は必須ではない。入出力ファイル構造体６３１入出力バッファと、通信構造体６３３の送信バッファおよび受信バッファとの間で、直接、データ転送が行なわれてもよい。
【００８９】
通信端末２２０には、通信構造体６２１と、ＵＳＢバッファ６２２と、ＦＩＦＯ２２５ａと、が確保される。通信構造体６２１は、アプリケーションインタフェース２３２が確保した通信構造体６３３に対応付けられた構造体である。通信構造体６２１は、通信に関連するプロトコルやメッセージフォーマット、通信速度などを設定するための関数群と、受信データを一時記憶する受信バッファと、送信データを一時記憶する送信バッファと、を含む。ＵＳＢバッファ６２２は、デバイス種別がＵＳＢデバイスの場合に確保される、ＵＳＢデバイス２１０のエンドポイントにそれぞれ対応するバッファを有する。
【００９０】
例えば、通信構造体６２１の関数群として、ＵＳＢに係る情報と通信に係る情報とに対応してＦＩＦＯ容量を記憶する同様のＦＩＦＯ容量テーブル６１０が記憶されて、ＦＩＦＯ２２５ａの適切な容量が確保される。かかるＦＩＦＯ２２５ａの確保手順は本例に限定されない。あらかじめ最大限のＦＩＦＯ容量が準備され、デバイス制御中のデータ流量を測定しながら使用する容量を調整する構成であってもよい。
【００９１】
ＵＳＢデバイス２１０には、エンドポイント６１１として、デバイス種別に応じてＦＩＦＯ0〜ＦＩＦＯnが準備されている。
【００９２】
（ＦＩＦＯ容量テーブル）
図７Ａは、本実施形態に係るＦＩＦＯ容量テーブル６１０の構成を示す図である。なお、ＦＩＦＯ容量テーブルによるＦＩＦＯ容量の決定は、図７Ａに限定されない。また、図７Ａには、通信帯域の決定も付加されている。
【００９３】
ＦＩＦＯ容量テーブル６１０は、ＵＳＢの転送方式と転送速度を含むＵＳＢ情報７１１と、通信データのフォーマットや通信方式、通信速度を含む通信情報７１２と、ＵＳＢ情報７１１および通信情報７１２を考慮した、ホスト側と端末側のＦＩＦＯ容量７１３と、通信帯域７１４と、を記憶する。
【００９４】
なお、ホスト２３０におけるデバイス入出力処理と、通信端末２２０におけるデバイス入出力処理とを、ネットワーク通信で分割するレベルに従って、ＦＩＦＯ容量７１３や通信帯域７１４も変化する。例えば、ホスト２３０がアプリケーション２３１のデバイス入出力バッファを生成し、他のデバイス入出力処理を通信端末２２０で行なう場合、データ通信は、通信端末２２０におけるデバイス入出力を維持可能なマクロのデータ量でよい。一方、ホスト２３０がデバイス入出力データの基本フォーマットを生成し、通信端末２２０では受信データを分解してデバイス入出力を行なう場合、データ通信は、通信端末２２０におけるデバイス入出力をミクロに維持可能にしなければならない。
【００９５】
図７Ｂは、本実施形態に係るＵＳＢのフォーマットおよびプロトコルを示す図である。本実施形態における通信部のデータ転送は、以下のどのレベルであってもよいし、それらに限定されるものではない。
【００９６】
全体の構成７２１は、ＳＯＦ(Start of Frame)から始まり、通常は１ｍｓ周期で通信される１つのまとまったトランザクション群を１フレームとする複数のフレームから構成される。なお、通信データとして通信される内容は、上記１フレームあるいは複数フレームであってもよい。この場合には、ホスト２３０では各ＵＳＢデバイス２１０に対応するマクロプログラム（関数）によりまとまったトランザクション群が生成されて通信端末２２０と通信される。一方、通信端末２２０においてはフレームからトランザクション、さらにパケットへの変換とＵＳＢデバイス２１０とのデータ交換が実行される。
【００９７】
各フレーム構成７２２は、ＳＯＦから始まる複数の１まとまりのトランザクション群からなる。トランザクション構成７２３は、“ＳＥＴＵＰ”、“ＯＵＴ”、“ＩＮ”の３つの送受信の単位である。そして、各トランザクションを構成する最小の通信単位であるパケットがＵＳＢケーブル２６０を介してシリアル通信される。なお、図７Ｂにおいて、網かけしてないデータはデバイスからホストコンピュータへ伝送されるデータ、網かけしたデータはホストコンピュータからデバイスへ伝送されるデータである。なお、通信データとして通信される内容は、複数のトランザクションであっても、各トランザクション単位であってもよい。この場合には、ホスト２３０では各ＵＳＢデバイス２１０に対応するトランザクション単位のプログラム（関数）によりトランザクションが生成されて通信端末２２０と通信される。通信端末２２０においてはトランザクションからパケットへの変換とＵＳＢデバイス２１０とのデータ交換が実行される。
【００９８】
コントロール転送のプロトコル７２４は、図２Ｃの双方向のデフォルトパイプ２５１を生成するように、制御データとして制御コマンドやデバイスディスクリプタを転送するプロトコルである。コントロール転送のプロトコル７２４は、転送データを含まない“No-data Control”と、デバイスに制御コマンドを送信する “Control Write”と、デバイスからデバイスディスクリプタなどを受信する“Control Read”とを有する。
【００９９】
バルク転送のプロトコル７２５は、図２Ｃの片方向のデータパイプ群２５２を生成するように、非同期に大量のデータを転送するプロトコルである。バルク転送のプロトコル７２５は、デバイスにデータを送信する “Bulk Write”と、デバイスからデータを受信する“Bulk Read”とを有する。
【０１００】
インタラプト転送のプロトコル７２６は、図２Ｃの片方向のデータパイプ群２５２を生成するように、ホストコンピュータの周期的なポーリングに対して、デバイスが任意のタイミングで応答することによって見かけ上、デバイスからの通知が行われたかのように転送するプロトコルである。インタラプト転送では少量で、いつデータが発生するかタイミングが不定なデータの転送に用いられる。インタラプト転送のプロトコル７２６は、デバイスにデータを送信する“Interrupt Write”と、デバイスからデータを受信する“Interrupt Read”とを有する。
【０１０１】
アイソクロナス転送のプロトコル７２７は、図２Ｃの片方向のデータパイプ群２５２を生成するように、周期的にデータ転送が行われるプロトコルである。アイソクロナス転送のプロトコル７２７は、データの信頼性よりも時間が重視されており、エラーによる再送が行われない。音声やＣＣＤカメラの映像などのデータ転送に用いられる。アイソクロナス転送のプロトコル７２７は、デバイスにデータを送信する“Isochronous Write”と、デバイスからデータを受信する“Isochronous Read”とを有する。
【０１０２】
なお、フレームとして各転送プロトコルを対応付けてもよいし、複数の転送プロトコルをまとめてフレームを形成してもよい。いずれにしても、ホスト２３０側と通信端末２２０側とのフォーマットのネゴシエーションによって、デバイスドライバを構成するアプリケーションインタフェース２３２とホストコントローラインタフェース２２５との間の種々の層における通信が実現できる。
【０１０３】
《情報処理装置のハードウェア構成》
図８は、本実施形態に係る情報処理装置２３０のハードウェア構成を示すブロック図である。
【０１０４】
図８で、ＣＰＵ(Central Processing Unit)８１０は演算制御用のプロセッサであり、プログラムを実行することで図４の情報処理装置２３０の機能構成部を実現する。ＲＯＭ(Read Only Memory)８２０は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。また、通信制御部４０１は、ネットワーク２４０を介して通信端末２２０と通信する。なお、ＣＰＵ８１０は１つに限定されず、複数のＣＰＵであっても、あるいは画像処理用のＧＰＵを含んでもよい。また、通信制御部４０１は、ＣＰＵ８１０とは独立したＣＰＵを有して、ＲＡＭ(Random Access Memory)８４０の領域に送受信データを書き込みあるいは読み出しするのが望ましい。また、ＲＡＭ８４０とストレージ８５０との間でデータを転送するＤＭＡＣを設けるのが望ましい（図示なし）。さらに、入出力インタフェース８６０は、ＣＰＵ８１０とは独立したＣＰＵを有して、ＲＡＭ８４０の領域に入出力データを書き込みあるいは読み出しするのが望ましい。したがって、ＣＰＵ８１０は、ＲＡＭ８４０にデータが受信あるいは転送されたことを認識してデータを処理する。また、ＣＰＵ８１０は、処理結果をＲＡＭ８４０に準備し、後の送信あるいは転送は通信制御部４０１やＤＭＡＣ、あるいは入出力インタフェース８６０に任せる。
【０１０５】
ＲＡＭ８４０は、ＣＰＵ８１０が一時記憶のワークエリアとして使用するランダムアクセスメモリである。ＲＡＭ８４０には、本実施形態の実現に必要なデータを記憶する領域が確保されている。入出力ファイル構造体６３１は、アプリケーションソフトウェア２３１の入出力ファイル操作を受けてＯＳが生成する構造体である。入出力ファイル構造体６３１は、ファイル処理関数群と、入出力フラグと、入出力バッファとのエリアを含む。通信構造体６３３は、アプリケーションインタフェース２３２が通信制御プログラム８５８による通信制御を渡すための構造体である。通信構造体６３３は、ネットワーク処理関数群と、送信バッファと、受信バッファとのエリアを含む。なお、通信構造体６３３には、例えば、ＦＩＦＯ容量テーブル６１０やＦＩＦＯ２３２ａが含まれる。ＵＳＢバッファ６３２は、ＵＳＢデバイス２１０のＦＩＦＯ（エンドポイント）に対応付けられたバッファであり、制御データ用のバッファ0とデータ用のバッファ1〜nを、ＵＳＢデバイス２１０の種別や入出力処理に対応して含む。なお、ＵＳＢバッファ６３２は必須な構成ではなく、入出力ファイル構造体６３１と通信構造体６３３との間で、直接、データ交換が行なわれてもよい。
【０１０６】
ストレージ８５０には、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。アプリケーション格納部８５１は、情報処理装置２３０が提供するアプリケーションソフトウェアを検索可能に格納している。関数群格納部８５２は、情報処理装置２３０が使用する関数を検索可能に格納している。ドライバ格納部８５３は、デバイスドライバや、デバイスドライバの一部であるアプリケーションインタフェースなどを検索可能に格納している。
【０１０７】
ストレージ８５０には、以下のプログラムが格納される。ＯＳ８５４は、本情報処理装置２３０の全体を制御する基礎プログラムである。ＢＩＯＳ８５５は、本情報処理装置２３０の入出力操作を制御する基礎プログラムである。アプリケーションソフトウェア２３１は、現在、本情報処理装置２３０が実行中のアプリケーションプログラムである。アプリケーションインタフェース２３２は、デバイスドライバの一部としてアプリケーションソフトウェア２３１とのインタフェースを実現するプログラムである。通信制御プログラム８５８は、通信制御部４０１により通信端末２２０との通信を実行するプログラムである。
【０１０８】
入出力インタフェース８６０は、入出力機器との入出力データをインタフェースする。入出力インタフェース８６０には、表示部８６１、操作部８６２、が接続される。また、本情報処理装置２３０に、直接、デバイスをシリアルバスケーブルで接続して使用可能な場合は、ＵＳＢコントローラ（コネクタ）８６３、ＳＣＳＩコントローラ（コネクタ）８６４、ＨＤＭＩ（登録商標）コントローラ（コネクタ）８６５、などが接続されてもよい。さらに、音声出力部であるスピーカや、音声入力部であるマイク、あるいは、ＧＰＳ位置判定部が接続されてもよい。
【０１０９】
なお、図８のＲＡＭ８４０やストレージ８５０には、情報処理装置２３０が有する汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。
【０１１０】
《情報処理装置の処理手順》
図９Ａおよび図９Ｂは、本実施形態に係る情報処理装置２３０の処理手順を示すフローチャートである。このフローチャートは、図８のＣＰＵ８１０がＲＡＭ８４０を使用しながら実行して、図４の機能構成部を実現する。なお、図９Ａおよび図９Ｂにおいては、アプリケーションインタフェース２３２による処理手順を説明する。
【０１１１】
情報処理装置２３０は、ステップＳ９０１において、アプリケーションソフトウェア２３１から渡された入出力ファイル構造体を取得する。情報処理装置２３０は、ステップＳ９０３において、入出力ファイル構造体を参照して、ＵＳＢバッファを確保する。情報処理装置２３０は、ステップＳ９０５において、入出力ファイル構造体を参照して、通信構造体を生成する。情報処理装置２３０は、ステップＳ９０７において、ＵＳＢデバイス２１０のデバイスディスクリプタを要求する。そして、情報処理装置２３０は、ステップＳ９０９において、ＵＳＢデバイス２１０のデバイスディスクリプタの受信を待つ。
【０１１２】
ＵＳＢデバイス２１０のデバイスディスクリプタを受信すると、情報処理装置２３０は、ステップＳ９１１において、受信したデバイスディスクリプタを確保されたＵＳＢバッファ0に設定する。そして、情報処理装置２３０は、ステップＳ９１３において、受信したデバイスディスクリプタを入出力ファイル構造体に転送する。受信したデバイスディスクリプタの解析は、ＯＳあるいはＢＩＯＳ、アプリケーションインタフェース２３２、アプリケーションソフトウェア２３１、あるいはその協働で行なわれる。
【０１１３】
次に、情報処理装置２３０は、ステップＳ９１５において、ＵＳＢの場合、データ転送方式がバルク転送か、インタラプト転送あるいはアイソクロナス転送かを判定する。
【０１１４】
データ転送方式がバルク転送の場合、情報処理装置２３０は、ステップＳ９２１において、バルク転送を指示する。情報処理装置２３０は、ステップＳ９２３において、ＵＳＢバッファ６３２と入出力ファイル構造体６３１との間でデータ転送を行なう。そして、情報処理装置２３０は、ステップＳ９２５において、データ転送が完了したか否かを判定して、完了していなければステップＳ９２３に戻って、データ転送を繰り返す。
【０１１５】
一方、データ転送がインタラプト転送あるいはアイソクロナス転送の場合、情報処理装置２３０は、ステップＳ９３１において、インタラプト転送あるいはアイソクロナス転送を指示する。次に、情報処理装置２３０は、ステップＳ９３３において、ＵＳＢ転送方式や転送速度、通信方式や通信方法などからＦＩＦＯ容量テーブル６１０に基づいてＦＩＦＯ２３２ａを確保する。そして、情報処理装置２３０は、ステップＳ９３５において、ＵＳＢバッファ６３２と入出力ファイル構造体６３１との間でデータ転送を行なう。情報処理装置２３０は、ステップＳ９３７において、通信路データのエラー発生か否かを判定する。通信路データのエラー発生であれば、情報処理装置２３０は、ステップＳ９３９において、ＦＩＦＯ容量の変更や通信帯域の変更を行ない、ステップＳ９３５に戻って、データ転送を繰り返す。通信路データのエラー発生がなければ、情報処理装置２３０は、ステップＳ９４１において、データ転送が完了したか否かを判定して、完了していなければステップＳ９３５に戻って、データ転送を繰り返す。
【０１１６】
バルク転送の完了あるいはインタラプト転送やアイソクロナス転送の完了と判定すれば、情報処理装置２３０は、ステップＳ９５１において、入出力処理のステータスを取得する。そして、情報処理装置２３０は、ステップＳ９５３において、入出力処理のステータスを入出力ファイル構造体に渡して、アプリケーションソフトウェア２３１に通知する。
【０１１７】
《通信端末のハードウェア構成》
図１０は、本実施形態に係る通信端末２２０のハードウェア構成を示すブロック図である。
【０１１８】
図１０で、ＣＰＵ１０１０は演算制御用のプロセッサであり、プログラムを実行することで図５の通信端末２２０の機能構成部を実現する。ＲＯＭ１０２０は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。また、通信制御部５０１は、ネットワーク２４０を介して情報処理装置２３０と通信する。なお、ＣＰＵ１０１０は１つに限定されず、複数のＣＰＵであっても、あるいは画像処理用のＧＰＵを含んでもよい。また、通信制御部５０１は、ＣＰＵ１０１０とは独立したＣＰＵを有して、ＲＡＭ１０４０の領域に送受信データを書き込みあるいは読み出しするのが望ましい。また、ＲＡＭ１０４０とストレージ１０５０との間でデータを転送するＤＭＡＣを設けるのが望ましい（図示なし）。さらに、入出力インタフェース１０６０は、ＣＰＵ１０１０とは独立したＣＰＵを有して、ＲＡＭ１０４０の領域に入出力データを書き込みあるいは読み出しするのが望ましい。したがって、ＣＰＵ１０１０は、ＲＡＭ１０４０にデータが受信あるいは転送されたことを認識してデータを処理する。また、ＣＰＵ１０１０は、処理結果をＲＡＭ１０４０に準備し、後の送信あるいは転送は通信制御部５０１やＤＭＡＣ、あるいは入出力インタフェース１０６０に任せる。
【０１１９】
ＲＡＭ１０４０は、ＣＰＵ１０１０が一時記憶のワークエリアとして使用するランダムアクセスメモリである。ＲＡＭ１０４０には、本実施形態の実現に必要なデータを記憶する領域が確保されている。通信構造体６２１は、ホストコントローラインタフェース２２５が通信制御プログラム１０５７による通信制御を渡すための構造体である。通信構造体６２１は、ネットワーク処理関数群と、送信バッファと、受信バッファとのエリアを含む。なお、通信構造体６２１には、例えば、ＦＩＦＯ容量テーブル６１０やＦＩＦＯ２２５ａが含まれる。ＵＳＢバッファ６２２は、ＵＳＢデバイス２１０のＦＩＦＯ（エンドポイント）に対応付けられたバッファであり、制御データ用のバッファ0とデータ用のバッファ1〜nを、ＵＳＢデバイス２１０の種別や入出力処理に対応して含む。
【０１２０】
ストレージ１０５０には、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。関数群格納部１０５１は、通信端末２２０が使用する関数を検索可能に格納している。コアドライバ格納部１０５２は、デバイスドライバのコアドライバや、デバイスドライバの一部であるホストコントローラインタフェースなどを検索可能に格納している。
【０１２１】
ストレージ１０５０には、以下のプログラムが格納される。ＯＳ１０５３は、本通信端末２２０の全体を制御する基礎プログラムである。ＢＩＯＳ１０５４は、本通信端末２２０の入出力操作を制御する基礎プログラムである。ホストコントローラインタフェース２２５は、デバイスドライバの一部としてホストコントローラとのインタフェースを実現するプログラムである。ホストコントローラを含むコアドライバ１０５６は、ＵＳＢシリアル通信を制御するためのプログラムである。通信制御プログラム１０５７は、通信制御部５０１により情報処理装置２３０との通信を実行するプログラムである。
【０１２２】
入出力インタフェース１０６０は、入出力機器との入出力データをインタフェースする。入出力インタフェース１０６０には、表示部１０６１、操作部１０６２、ＵＳＢコントローラ（コネクタ）５０４と５０５、が接続される。また、音声出力部であるスピーカや、音声入力部であるマイク、あるいは、ＧＰＳ位置判定部が接続されてもよい。
【０１２３】
なお、図１０のＲＡＭ１０４０やストレージ１０５０には、通信端末２２０が有する汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。
【０１２４】
《通信端末の処理手順》
図１１Ａおよび図１１Ｂは、本実施形態に係る通信端末２２０の処理手順を示すフローチャートである。このフローチャートは、図１０のＣＰＵ１０１０がＲＡＭ１０４０を使用しながら実行して、図５の機能構成部を実現する。なお、図１０Ａおよび図１０Ｂにおいては、ホストコントローラインタフェース２２５による処理手順を説明する。
【０１２５】
通信端末２２０は、ステップＳ１１０１において、ＵＳＢデバイス２１０のＦＩＦＯ（エンドポイント）に対応付けて、ＵＳＢバッファを確保する。通信端末２２０は、ステップＳ１１０３において、通信構造体を生成する。通信端末２２０は、ステップＳ１１０５において、ＵＳＢデバイス２１０に対してデバイスディスクリプタを要求する。そして、通信端末２２０は、ステップＳ１１０７において、ＵＳＢデバイス２１０からのデバイスディスクリプタの取得を待つ。
【０１２６】
ＵＳＢデバイス２１０のデバイスディスクリプタを取得すると、通信端末２２０は、ステップＳ１１０９において、取得したデバイスディスクリプタを確保されたＵＳＢバッファ0に設定する。そして、通信端末２２０は、ステップＳ１１１１において、取得したデバイスディスクリプタを情報処理装置２３０に送信する。
【０１２７】
次に、通信端末２２０は、ステップＳ１１１３において、ＵＳＢの場合、データ転送方式がバルク転送か、インタラプト転送あるいはアイソクロナス転送かを判定する。
【０１２８】
データ転送方式がバルク転送の場合、通信端末２２０は、ステップＳ１１２１において、バルク転送を指示する。通信端末２２０は、ステップＳ１１２３において、ＵＳＢバッファ６２２とＵＳＢデバイス２１０との間でデータ転送を行なう。そして、通信端末２２０は、ステップＳ１１２５において、データ転送が完了したか否かを判定して、完了していなければステップＳ１１２３に戻って、データ転送を繰り返す。
【０１２９】
一方、データ転送がインタラプト転送あるいはアイソクロナス転送の場合、通信端末２２０は、ステップＳ１１３１において、インタラプト転送あるいはアイソクロナス転送を指示する。次に、通信端末２２０は、ステップＳ１１３３において、ＵＳＢ転送方式や転送速度、通信方式や通信方法などからＦＩＦＯ容量テーブル６１０に基づいてＦＩＦＯ２２５ａを確保する。そして、通信端末２２０は、ステップＳ１１３５において、ＵＳＢバッファ６２２とＵＳＢデバイス２１０との間でデータ転送を行なう。通信端末２２０は、ステップＳ１１３７において、通信路データのエラー発生か否かを判定する。通信路データのエラー発生であれば、通信端末２２０は、ステップＳ１１３９において、ＦＩＦＯ容量の変更や通信帯域の変更を行ない、ステップＳ１１３５に戻って、データ転送を繰り返す。通信路データのエラー発生がなければ、通信端末２２０は、ステップＳ１１４１において、データ転送が完了したか否かを判定して、完了していなければステップＳ１１３５に戻って、データ転送を繰り返す。
【０１３０】
バルク転送の完了あるいはインタラプト転送やアイソクロナス転送の完了と判定すれば、通信端末２２０は、ステップＳ１１５１において、デバイスステータスを取得する。そして、通信端末２２０は、ステップＳ１１５３において、デバイスステータスを情報処理装置２３０に送信する。
【０１３１】
本実施形態によれば、ＵＳＢデバイスを遠隔の通信端末に接続した時にも、情報処理装置に直接接続した場合と同じ操作ができると共に、チャネルを介したデータ転送におけるエラー発生を抑制して、データを正常に入出力することができる。
【０１３２】
［第３実施形態］
次に、本発明の第３実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２実施形態と比べると、遠隔のデバイス入出力処理の前に通信テストを行なって、デバイス入出力において通信路データエラーが発生するか否かを判定し、通信路データエラーが発生しないためのＦＩＦＯ容量や通信帯域を設定する点で異なる。すなわち、データチャネルを介したデータ転送を通信テストし、通信テストのテスト結果に応じて、エラー発生の抑制を調整する。その他の構成および動作は、第２実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１３３】
《システム概要》
図１２は、本実施形態に係る情報処理システム１２００の概要を示す図である。図１２において、図２Ｂと同様の構成要素には同じ番号を付して、説明を省略する。
【０１３４】
情報処理システム１２００は、ホストコンピュータ上で実行されるＯＳ（アプリケーション）２３１と、デバイスドライバ１２０１と、ＵＳＢバスインタフェース２２６と、を有する。デバイスドライバ１２０１は、アプリケーションインタフェース２３２からネットワーク２４０を介してホストコントローラインタフェース２２５に、テストパケット（ＴＥＳＴ＿ＰＫＴ）を送信して、通信状況をテストする通信テスト機能１２０２を有する。テストパケットとしては、タイムスタンプを有するもの、シリアル番号を有するもの、により通信時間を測定できる。
【０１３５】
通信テスト機能１２０２は、１パケット容量のテストパケットを、通信路を介して往復させ、往路の遅延やジッタ、あるいは、復路の遅延やジッタ、をテストして、テスト結果からＦＩＦＯ２３２ａやＦＩＦＯ２２５ａの各容量や通信帯域を設定することで、通信路データエラーが発生しないようにする。
【０１３６】
なお、１パケット容量のテストパケットによるループバックで通信時間を測定するのではなく、データ量を次第に増やして安定的な通信およびデバイス入出力できる通信量を把握してもよい。また、ジッタの吸収やデータ流量の調整は、ＦＩＦＯ２３２ａ、ＦＩＦＯ２２５ａに限定されない。ローテーションメモリやＴＤＭ(Time Division Multiplexing)などの他の構成要素であってもよい。
【０１３７】
かかる構成により、ホストコンピュータが遠隔地のデバイスを自機のバスＩ／ＦやシリアルＩ／Ｆに直接接続されたデバイスと同様に制御できる。かつ、あらかじめ通信テストを行なうので、チャネルを介したデータ転送におけるエラー発生なしに、ネットワーク通信によりシリアル通信バスを延長した場合であっても、データを正常に入出力することができる。
【０１３８】
《情報処理装置の機能構成》
図１３Ａは、本実施形態に係る情報処理装置１３３０の機能構成を示すブロック図である。なお、図１３Ａにおいて、図４と同様の機能構成部には同じ参照番号を付して、説明を省略する。
【０１３９】
通信テスト部１３０７は、通信制御部４０１を介して、１パケット容量のテストパケットを、通信路を介して往復させ、往路の遅延やジッタ、あるいは、復路の遅延やジッタ、をテストして、エラー抑制部４０５が有するＦＩＦＯ２３２ａ容量や通信帯域の適切な設定を行なう。
【０１４０】
（通信テスト部）
図１３Ｂは、本実施形態に係る通信テスト部１３０７の機能構成を示すブロック図である。なお、通信テスト部１３０７の機能構成は、図１３Ｂに限定されない。
【０１４１】
通信テスト部１３０７は、１パケット送信部１３１１と、送信先受信タイム取得部１３１２と、送信パケット受信タイム取得部１３１３と、を有する。また、通信テスト部１３０７は、送信遅延算出部１３１４と、ループ遅延算出部１３１５と、ＵＳＢ情報取得部１３１６と、通信情報取得部１３１７と、を有する。また、通信テスト部１３０７は、ＦＩＦＯ容量および通信帯域制御部１３１８、ＦＩＦＯ容量変更部１３２０と、通信帯域変更部１３２１と、を有する。
【０１４２】
１パケット送信部１３１１は、テスト用のタイムスタンプやシリアル番号を有するパケットを送信する。送信先受信タイム取得部１３１２は、送信先の通信端末２２０からのテストパケット受信タイムを含む返信を受信する。送信パケット受信タイム取得部１３１３は、ループバックしたパケットを受信して、タイムスタンプやシリアル番号に基づきループ時間を取得する。
【０１４３】
送信遅延算出部１３１４は、１パケット送信部１３１１と送信先受信タイム取得部１３１２との送受信タイムから、送信遅延時間を算出する。ループ遅延算出部１３１５は、１パケット送信部１３１１と送信パケット受信タイム取得部１３１３との送受信タイムから、ループ遅延時間を算出する。ＵＳＢ情報取得部１３１６は、入出力制御するデバイスの接続に関してＵＳＢ転送方式や転送速度を含むＵＳＢ情報を取得する。通信情報取得部１３１７は、ネットワークなどの通信方式や通信速度を含む通信情報を取得する。
【０１４４】
ＦＩＦＯ容量および通信帯域制御部１３１８は、制御テーブル１３１９を有し、送信遅延算出部１３１４やループ遅延算出部１３１５の算出結果と、ＵＳＢ情報取得部１３１６や通信情報取得部１３１７の取得情報と、に基づいて、ＦＩＦＯ容量および通信帯域を制御する。ＦＩＦＯ容量変更部１３２０は、テスト結果に基づいて適切なＦＩＦＯ容量に変更する。一方、通信帯域変更部１３２１は、テスト結果に基づいて適切な通信帯域に変更する。
【０１４５】
（制御テーブル）
図１４は、本実施形態に係るＦＩＦＯ容量および通信帯域の制御テーブル１３１９の構成を示す図である。制御テーブル１３１９は、ＦＩＦＯ容量および通信帯域制御部１３１８において、テストパケットのテスト通信結果に基づいて、適切なＦＩＦＯ容量および通信帯域を決定するために使用されるテーブルである。
【０１４６】
制御テーブル１３１９は、１パケットの送信タイム１４０１と、送信先受信タイム１４０２と、送信パケット受信タイム１４０３と、ＦＩＦＯ現容量１４０４と、現通信帯域１４０５と、を記憶する。また、制御テーブル１３１９は、取得したＵＳＢ情報１４０６と、通信情報１４０７と、を記憶する。制御テーブル１３１９は、上記各テスト結果と取得情報とに対応付けて、新たなＦＩＦＯ容量と通信帯域とを含む変更情報１４０８を記憶する。
【０１４７】
なお、かかる制御テーブル１３１９は、ＲＡＭ８４０に生成されて、適切なＦＩＦＯ容量と通信帯域とを設定するために使用されると共に、蓄積されて、以降の適切なＦＩＦＯ容量と通信帯域との設定に使用されてもよい。
【０１４８】
《情報処理装置の処理手順》
図１５は、本実施形態に係る情報処理装置１３３０の処理手順を示すフローチャートである。なお、図１５は、本実施形態のテストパケットのテスト送信による適切なＦＩＦＯ容量と通信帯域との設定の処理手順を示し、他の処理手順は、図９Ａおよび図９Ｂと同様である。
【０１４９】
情報処理装置１３３０は、ステップＳ１５０１において、テスト用の１パケットをデバイス接続用の通信端末に宛てて送信する。そして、情報処理装置１３３０は、ステップＳ１５０３において、送信タイムあるいはループタイムを含む通信タイムの取得を待つ。
【０１５０】
送信タイムあるいはループタイムを含む通信タイムを取得すれば、情報処理装置１３３０は、ステップＳ１５０５において、ＵＳＢ情報や通信情報を含む通信環境条件を取得する。次に、情報処理装置１３３０は、ステップＳ１５０７において、テストによる通信タイムと通信環境条件とに基づいて、適正なＦＩＦＯ容量と通信帯域とを算出する。そして、情報処理装置１３３０は、ステップＳ１５０９において、算出したＦＩＦＯ容量と通信帯域との適正値を設定する。
【０１５１】
本実施形態によれば、あらかじめ通信テストを行なのでの、チャネルを介したデータ転送におけるエラー発生なしに、ネットワーク通信によりシリアル通信バスを延長した場合であっても、データを正常に入出力することができる。
【０１５２】
《他の情報処理システムへの適用》
以下、第２実施形態あるいは第３実施形態の遠隔デバイス制御を適用した他の情報処理システムについて説明する。これらの情報処理システムにおいても、同様の効果を奏することができる。
【０１５３】
（ＵＳＢハブへの適用）
図１６は、本実施形態をＵＳＢハブに適用した情報処理システム１６００の機能構成を示すブロック図である。なお、図１７において、図２Ｃと同様の構成要素には同じ参照番号を付して、説明を省略する。
【０１５４】
情報処理システム１６００は、ＵＳＢハブ１６６０と、複数のＵＳＢデバイス１６１１〜１６１ｎとを備える。ＵＳＢハブ１６６０は、ホストコントローラインタフェース１６２５と、複数のＳＩＥに分岐するＵＳＢバスインタフェース１６２６とを有する。ホストコントローラインタフェース１６２５は、複数のＵＳＢケーブルに分岐するための機能を有する。また、複数のＳＩＥは、それぞれ、複数のＵＳＢケーブル１６６１〜１６６ｎを介して、複数のＵＳＢデバイス１６１１〜１６１ｎの各ＳＩＥと接続される。
【０１５５】
そして、情報処理装置としてのホスト２３０のアプリケーションインタフェース２３２が通信路データ量を調整するＦＩＦＯ２３２ａを有し、ＵＳＢハブ１６６０のホストコントローラインタフェース１６２５が通信路データ量を調整するＦＩＦＯ１６２５ａを有する。
【０１５６】
（ＨＤＭＩ（登録商標）への適用）
図１７は、本実施形態をＨＤＭＩ（登録商標）に適用した情報処理システム１７００の機能構成を示すブロック図である。なお、図１７において、図２Ｃと同様の構成要素には同じ参照番号を付して、説明を省略する。
【０１５７】
図１７の情報処理システム１７００は、情報処理装置としてのホスト２３０と、遠隔にあって、ホスト２３０とネットワーク２４０を介して接続する通信端末１７２０と、通信端末１７２０のＨＤＭＩ（登録商標）コネクタに接続されたＨＤＭＩ（登録商標）デバイス１７１０と、を備える。
【０１５８】
通信端末１７２０は、ソフトウェアとして、デバイスドライバの一部としてのホストコントローラインタフェース１７２５と、ホストコントローラおよび通信用ＩＣを有するＨＤＭＩ（登録商標）バスインタフェース１７２６とを有する。ホストコントローラインタフェース１７２５は、ネットワーク２４０を介して、アプリケーションインタフェース２３２から受信したＨＤＭＩ（登録商標）のプロトコルに応じたコマンドやデータなどを、ＨＤＭＩ（登録商標）バスインタフェース１７２６のホストコントローラに理解できる形式で渡す。また、ホストコントローラインタフェース１７２５は、ネットワーク２４０を介して、ＨＤＭＩ（登録商標）バスインタフェース１７２６のホストコントローラから渡されたデータやデバイスステータスなどを、ネットワーク２４０を介して、アプリケーションインタフェース２３２に送信する。ＨＤＭＩ（登録商標）バスインタフェース１７２６のホストコントローラは、ホストコントローラインタフェース１７２５とコマンドやデータなどを交換しながら、ＨＤＭＩ（登録商標）ケーブル１７６０を介したシリアル通信をＨＤＭＩ（登録商標）プロトコルに従い実行する。ＨＤＭＩ（登録商標）バスインタフェース１７２６の通信用ＩＣは、ＨＤＭＩ（登録商標）ケーブル１７６０上の信号をＨＤＭＩ（登録商標）通信の仕様に従い制御する。
【０１５９】
そして、ホスト２３０のアプリケーションインタフェース２３２が通信路データ量を調整するＦＩＦＯ２３２ａを有し、通信端末１７２０のホストコントローラインタフェース１７２５が通信路データ量を調整するＦＩＦＯ１７２５ａを有する。
【０１６０】
ＨＤＭＩ（登録商標）デバイス１７１０は、ソフトウェアとして、通信端末１７２０のＨＤＭＩ（登録商標）バスインタフェース１７２６とＨＤＭＩ（登録商標）ケーブル１７６０を介して接続して、信号をやり取りするＨＤＭＩ（登録商標）デバイス１７１０のＨＤＭＩ（登録商標）バスインタフェース１７１６を有する。また、ＨＤＭＩ（登録商標）デバイス１７１０は、デバイス情報や制御情報を含むディスクリプタを記憶する制御情報エンドポイント１７１７と、入出力データを記憶するエンドポイント１７１８とを有する。
【０１６１】
かかる接続により、通信端末１７２０とＨＤＭＩ（登録商標）デバイス１７１０とは、お互いのＨＤＭＩ（登録商標）バスインタフェース１７２６および１７１６により物理レベルの通信を実行する。また、アプリケーションインタフェース２３２、ネットワーク２４０およびホストコントローラインタフェース１７２５を介したシステムレベルのコントロール転送により、制御パイプ（ＤＤＣ／ＣＥＣ）１７５１を介してアプリケーションソフトウェア２３１と制御情報エンドポイント１７１７との間で、基本処理としての制御通信を実現する。また、アプリケーションレベルのデータ転送では、データパイプ群１７５２を介してアプリケーションソフトウェア２３１とエンドポイント１７１８との間で、デバイスクラスの各メソッドとしてのデータ通信を通信路データエラーなしに実現する。
【０１６２】
以上のように、ネットワーク２４０を介した、ホスト２３０のアプリケーションインタフェース２３２と通信端末１７２０のホストコントローラインタフェース１７２５とのネットワーク通信と、ＨＤＭＩ（登録商標）ケーブルを介した、ＨＤＭＩ（登録商標）バスインタフェース１７２６と１７１６間のシリアル通信とから、統一された通信チャネル（パイプ）を形成することができる。さらに、通信路データのエラー発生を抑制することができる。
【０１６３】
（ＳＣＳＩへの適用）
図１８は、本実施形態をＳＣＳＩに適用した情報処理システム１８００の機能構成を示すブロック図である。なお、図１８において、図２Ｃと同様の構成要素には同じ参照番号を付して、説明を省略する。
【０１６４】
図１８の情報処理システム１８００は、情報処理装置としてのホスト２３０と、遠隔にあって、ホスト２３０とネットワーク２４０を介して接続する通信端末１８２０と、通信端末１８２０のＳＣＳＩコネクタに接続されたＳＣＳＩデバイス１８１０と、を備える。
【０１６５】
通信端末１８２０は、ソフトウェアとして、デバイスドライバの一部としてのホストコントローラインタフェース１８２５と、ホストコントローラおよび通信用ＩＣを有するＳＣＳＩバスインタフェース１８２６とを有する。ホストコントローラインタフェース１８２５は、ネットワーク２４０を介して、アプリケーションインタフェース２３２から受信したＳＣＳＩのプロトコルに応じたコマンドやデータなどを、ＳＣＳＩバスインタフェース１８２６のホストコントローラに理解できる形式で渡す。また、ホストコントローラインタフェース１８２５は、ネットワーク２４０を介して、ＳＣＳＩバスインタフェース１８２６のホストコントローラから渡されたデータやデバイスステータスなどを、ネットワーク２４０を介して、アプリケーションインタフェース２３２に送信する。ＳＣＳＩバスインタフェース１８２６のホストコントローラは、ホストコントローラインタフェース１８２５とコマンドやデータなどを交換しながら、ＳＣＳＩケーブル１８６０を介したシリアル通信をＳＣＳＩプロトコルに従い実行する。ＳＣＳＩバスインタフェース１８２６の通信用ＩＣは、ＳＣＳＩケーブル１８６０上の信号をＳＣＳＩ通信の仕様に従い制御する。
【０１６６】
そして、ホスト２３０のアプリケーションインタフェース２３２が通信路データ量を調整するＦＩＦＯ２３２ａを有し、通信端末１８２０のホストコントローラインタフェース１８２５が通信路データ量を調整するＦＩＦＯ１８２５ａを有する。
【０１６７】
ＳＣＳＩデバイス１８１０は、ソフトウェアとして、通信端末１８２０のＳＣＳＩバスインタフェース１８２６とＳＣＳＩケーブル１８６０を介して接続して、信号をやり取りするＳＣＳＩデバイス１８１０のＳＣＳＩバスインタフェース１８１６を有する。また、ＳＣＳＩデバイス１８１０は、デバイス情報や制御情報を含むディスクリプタを記憶する制御情報エンドポイント１８１７と、入出力データを記憶するエンドポイント１８１８とを有する。
【０１６８】
かかる接続により、通信端末１８２０とＳＣＳＩデバイス１８１０とは、お互いのＳＣＳＩバスインタフェース１８２６および１８１６により物理レベルの通信を実行する。また、アプリケーションインタフェース２３２、ネットワーク２４０およびホストコントローラインタフェース１８２５を介したシステムレベルのコントロール転送により、制御パイプ（ＳＣＳＩコマンド／ＳＣＳＩレスポンス）１８５１を介してアプリケーションソフトウェア２３１と制御情報エンドポイント１８１７との間で、基本処理としての制御通信を実現する。また、アプリケーションレベルのデータ転送では、データパイプ群１８５２を介してアプリケーションソフトウェア２３１とエンドポイント１８１８との間で、デバイスクラスの各メソッドとしてのデータ通信を通信路データエラーなしに実現する。
【０１６９】
以上のように、ネットワーク２４０を介した、ホスト２３０のアプリケーションインタフェース２３２と通信端末１８２０のホストコントローラインタフェース１８２５とのネットワーク通信と、ＳＣＳＩケーブルを介した、ＳＣＳＩバスインタフェース１８２６と１８１６間のシリアル通信とから、統一された通信チャネル（パイプ）を形成することができる。さらに、通信路データのエラー発生を抑制することができる。
【０１７０】
（ＳＤカードへの適用）
図１９は、本実施形態をＳＤカードに適用した情報処理システム１９００の機能構成を示すブロック図である。なお、図１９において、図２Ｃと同様の構成要素には同じ参照番号を付して、説明を省略する。
【０１７１】
図１９の情報処理システム１９００は、情報処理装置としてのホスト２３０と、遠隔にあって、ホスト２３０とネットワーク２４０を介して接続する通信端末１９２０と、通信端末２６２０のコネクタに接続されたＳＤカード１９１０と、を備える。
【０１７２】
通信端末１９２０は、ソフトウェアとして、デバイスドライバの一部としてのホストコントローラインタフェース１９２５と、ホストコントローラおよびバス用アンプを有するＳＤカードバスインタフェース１９２６とを有する。ホストコントローラインタフェース１９２５は、ネットワーク２４０を介して、アプリケーションインタフェース２３２から受信したＳＤカードのプロトコルに応じたコマンドやデータなどを、ＳＤカードバスインタフェース１９２６のホストコントローラに理解できる形式で渡す。また、ホストコントローラインタフェース１９２５は、ネットワーク２４０を介して、ＳＤカードバスインタフェース１９２６のホストコントローラから渡されたデータやデバイスステータスなどを、ネットワーク２４０を介して、アプリケーションインタフェース２３２に送信する。ＳＤカードバスインタフェース１９２６のホストコントローラは、ホストコントローラインタフェース１９２５とコマンドやデータなどを交換しながら、ＳＤカードコネクタ１９６０を介したシリアル通信をＳＤカードのプロトコルに従い実行する。ＳＤカードバスインタフェース１９２６のバス用アンプは、ＳＤカードコネクタ１９６０上の信号をＳＤカード用通信の仕様に従い制御する。
【０１７３】
そして、ホスト２３０のアプリケーションインタフェース２３２が通信路データ量を調整するＦＩＦＯ２３２ａを有し、通信端末１９２０のホストコントローラインタフェース１９２５が通信路データ量を調整するＦＩＦＯ１９２５ａを有する。
【０１７４】
ＳＤカード１９１０は、ソフトウェアとして、通信端末１９２０のＳＤカードバスインタフェース１９２６とＳＤカードコネクタ１９６０を介して接続して、信号をやり取りするＳＤカード１９１０のＳＤカードバスインタフェース１９１６を有する。また、ＳＤカード１９１０は、デバイス情報や制御情報を含むディスクリプタを記憶する制御情報エンドポイント１９１７と、入出力データを記憶するエンドポイント１９１８とを有する。
【０１７５】
かかる接続により、通信端末１９２０とＳＤカード１９１０とは、お互いのＳＤカードバスインタフェース１９２６および１９１６により物理レベルの通信を実行する。また、アプリケーションインタフェース２３２、ネットワーク２４０およびホストコントローラインタフェース１９２５を介したシステムレベルのコントロール転送により、制御パイプ（ＳＤカードコマンド）１９５１を介してアプリケーションソフトウェア２３１と制御情報エンドポイント１９１７との間で、基本処理としての制御通信を実現する。また、アプリケーションレベルのデータ転送では、データパイプ群１９５２を介してアプリケーションソフトウェア２３１とエンドポイント１９１８との間で、デバイスクラスの各メソッドとしてのデータ通信を通信路データエラーなしに実現する。
【０１７６】
以上のように、ネットワーク２４０を介した、ホスト２３０のアプリケーションインタフェース２３２と通信端末１９２０のホストコントローラインタフェース１９２５とのネットワーク通信と、ＳＤカードコネクタを介した、ＳＤカードバスインタフェース１９２６と１９１６間のシリアル通信とから、統一された通信チャネル（パイプ）を形成することができる。さらに、通信路データのエラー発生を抑制することができる。
【０１７７】
（機器共有システムへの適用）
図２０は、本実施形態を機器共有システムに適用した情報処理システム２０００の機能構成を示すブロック図である。なお、図１９において、図２Ｃと同様の構成要素には同じ参照番号を付して、説明を省略する。
【０１７８】
図２０は、複数のユーザＡおよびＢが、キーボードおよびマウス（ポインティングデバイス）と、モニタとにより、仮想ＰＣ２０３０を共有すると共に、ＵＳＢハブを介してプリンタや書画カメラも共有することで、会議システムを形成している。
【０１７９】
図２０においても、仮想ＰＣ２０３０側の仮想ＨＵＢや仮想モニタ分配機などのアプリケーションインタフェース２０３２と、仮想ＵＳＢ＿ＨＵＢを含むホストコントローラインタフェース２０２５とを、ネットワーク２４０を介して通信接続することにより、仮想ＰＣ２０３０と各デバイスとの統一された通信チャネル（パイプ）を形成することができる。
【０１８０】
さらに、アプリケーションインタフェース２０３２が通信路データ量を調整するＦＩＦＯ２０３２ａを有し、ホストコントローラインタフェース２０２５が通信路データ量を調整するＦＩＦＯ２０２５ａを有することにより、通信路データのエラー発生を抑制することができる。
【０１８１】
［第４実施形態］
次に、本発明の第４実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２実施形態、第３実施形態と比べると、クラウドサーバなどがデバイスを接続した場合の設定パラメータを知識として蓄積し、適切な設定パラメータを提供する点で異なる。すなわち、エラー抑制のために設定されたパラメータを蓄積し、チャネルを確立する場合に、蓄積したパラメータから選定取得したパラメータをエラー抑制のために設定する。その他の構成および動作は、第２実施形態、第３実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１８２】
《情報処理システムの構成》
図２１は、本実施形態に係る情報処理システム２１００の構成を示すブロック図である。なお、図２１において、図２Ａと同様の構成要素には同じ参照番号を付して、説明を省略する。
【０１８３】
クラウドサーバ２１３０は、ホスト２３０、あるいは、通信端末２２１〜２２３、あるいは、自機内に形成された仮想ＰＣ２１３１から、デバイス入出力において設定するシステムパラメータを蓄積する。システムパラメータには、デバイスに種別、接続するバスのデータ転送方式や転送速度、ネットワーク２４０に通信方式や通信速度、などに対応付けて、適切な転送レベル、通信方式や通信帯域、ＦＩＦＯ容量、などが含まれる。
【０１８４】
クラウドサーバ２１３０は、自機の仮想ＰＣ２１３１で通信端末２２１〜２２３に接続されたデバイスを制御する場合に、接続条件に基づいて、適切なシステムパラメータを検索して設定する。また、ホスト２３０からのシステムパラメータ要求に応答して、接続条件に基づいて、適切なシステムパラメータを検索して通知する。
【０１８５】
《クラウドサーバの機能構成》
図２２は、本実施形態に係るクラウドサーバ２１３０の機能構成を示すブロック図である。
【０１８６】
クラウドサーバ２１３０は、通信制御部２２０１と、パラメータ受信部２２０２と、１つまたは複数の仮想ＰＣ２１３１〜２１３ｎと、接続環境、条件、設定パラメータ蓄積部２２０３と、システムパラメータデータベース２２０４と、を備える。また、クラウドサーバ２１３０は、パラメータ要求受信部２２０５と、パラメータ選定部２２０６と、パラメータ送信部２２０７と、を備える。
【０１８７】
通信制御部２２０１は、ネットワーク２４０を介して、ホスト２３０や通信端末２２１〜１１３との通信を制御する。パラメータ受信部２２０２は、ホスト２３０や通信端末２２１〜１１３からデバイス入出力時の接続環境および条件に対応付けた設定パラメータを受信する。
【０１８８】
接続環境、条件、設定パラメータ蓄積部２２０３は、外部のホスト２３０や通信端末２２１〜１１３から受信した接続環境および条件に対応付けた設定パラメータ、および、仮想ＰＣ２１３１〜２１３ｎから取得した接続環境および条件に対応付けた設定パラメータを整理して蓄積する。システムパラメータデータベース２２０４は、接続環境、条件、設定パラメータ蓄積部２２０３により蓄積されたデータを評価値も含め検索可能に格納する。
【０１８９】
パラメータ要求受信部２２０５は、外部のホスト２３０や通信端末２２１〜１１３からの設定パラメータの要求を受信する。パラメータ選定部２２０６は、パラメータ要求受信部２２０５が受信した要求の条件に応じて、適切な設定パラメータをシステムパラメータデータベース２２０４から選定して取得する。パラメータ送信部２２０７は、取得した適切な設定パラメータを、外部のホスト２３０や通信端末２２１〜１１３に送信する。なお、仮想ＰＣ２１３１〜２１３ｎからの要求であれば、適切な設定パラメータを仮想ＰＣ２１３１〜３１３ｎに設定する。
【０１９０】
（システムパラメータデータベース）
図２３は、本実施形態に係るシステムパラメータデータベース２２０４の構成を示す図である。システムパラメータデータベース２２０４は、デバイスを、遠隔にネットワークを介して接続した場合の設定パラメータをその信頼度も含めて蓄積し、以降の設定時に適切な設定パラメータを提供するために使用される。
【０１９１】
システムパラメータデータベース２２０４は、情報処理システムのシステム構成２３０１と、仮想ＰＣを含むホストコンピュータについてのホスト情報２３０２とに対応付けて、次のデータを蓄積する。システムパラメータデータベース２２０４は、各デバイス情報２３０３と、バス情報２３０４と、通信情報２３０５と、使用されたバス通信パラメータ２３０６と、通信帯域を含むネットワーク通信パラメータ２３０７と、ＦＩＦＯ容量を含むバッファパラメータ２３０８と、デバイス入出力の信頼度２３０９と、を記憶する。１つまたは複数の条件に応じて、信頼性順に検索ソートして、結果が出力される。
【０１９２】
《クラウドサーバのハードウェア構成》
図２４は、本実施形態に係るクラウドサーバ２１３０のハードウェア構成を示すブロック図である。
【０１９３】
図２４で、ＣＰＵ２４１０は演算制御用のプロセッサであり、プログラムを実行することで図２２のクラウドサーバ２１３０の機能構成部を実現する。ＲＯＭ２４２０は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。また、通信制御部２２０１は、ネットワーク２４０を介してホスト２３０や通信端末２２０と通信する。なお、ＣＰＵ２４１０は１つに限定されず、複数のＣＰＵであっても、あるいは画像処理用のＧＰＵを含んでもよい。また、通信制御部２２０１は、ＣＰＵ２４１０とは独立したＣＰＵを有して、ＲＡＭ２４４０の領域に送受信データを書き込みあるいは読み出しするのが望ましい。また、ＲＡＭ２４４０とストレージ２４５０との間でデータを転送するＤＭＡＣを設けるのが望ましい（図示なし）。したがって、ＣＰＵ２４１０は、ＲＡＭ２４４０にデータが受信あるいは転送されたことを認識してデータを処理する。また、ＣＰＵ２４１０は、処理結果をＲＡＭ２４４０に準備し、後の送信あるいは転送は通信制御部２２０１やＤＭＡＣに任せる。
【０１９４】
ＲＡＭ２４４０は、ＣＰＵ２４１０が一時記憶のワークエリアとして使用するランダムアクセスメモリである。ＲＡＭ２４４０には、本実施形態の実現に必要なデータを記憶する領域が確保されている。受信パラメータ２４４１は、外部のホスト２３０や通信端末２２１〜１１３から受信した、あるいは、仮想ＰＣ２１３１〜２１３ｎから取得したパラメータである。パラメータ要求データ２４４２は、設定パラメータを共有するデバイス入出力の条件を表わすデータである。送信パラメータ２４４３は、外部のホスト２３０や通信端末２２１〜１１３に送信する、あるいは、仮想ＰＣ２１３１〜２１３ｎに設定するパラメータである。仮想ＰＣ用送受信データ２４４４は、クラウドサーバ２１３０に形成された仮想ＰＣからの送受信データである。
【０１９５】
ストレージ２４５０には、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。システムパラメータデータベース２２０４は、図２３のような設定パラメータを検索ソート可能に蓄積する。
【０１９６】
ストレージ２４５０には、以下のプログラムが格納される。クラウドサーバ制御プログラム２４５１は、本クラウドサーバ２１３０の全体を制御するプログラムである。パラメータ蓄積モジュール２４５２は、外部のホスト２３０や通信端末２２１〜１１３からパラメータを受信し、仮想ＰＣ２１３１〜２１３ｎからパラメータを取得して、システムパラメータデータベース２２０４に蓄積するモジュールである。パラメータ提供モジュール２４５３は、システムパラメータデータベース２２０４に蓄積された適切なパラメータを検索ソートして、外部のホスト２３０や通信端末２２１〜１１３へパラメータを送信し、仮想ＰＣ２１３１〜２１３ｎへパラメータを設定するモジュールである。仮想ＰＣプログラム２４５４は、本クラウドサーバ２１３０に仮想ＰＣ２１３１〜２１３ｎを形成するためのプログラムである。
【０１９７】
なお、図２４のＲＡＭ２４４０やストレージ２４５０には、クラウドサーバ２１３０が有する汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。
【０１９８】
《クラウドサーバの動作手順》
図２５は、本実施形態に係るクラウドサーバ２１３０の動作手順を示すフローチャートである。このフローチャートは、図２４のＣＰＵ２４１０がＲＡＭ２４４０を使用して実行し、図２２の機能構成部を実現する。
【０１９９】
クラウドサーバ２１３０は、ステップＳ２５１１において、設定パラメータの受信か否かを判定する。設定パラメータの受信であれば、クラウドサーバ２１３０は、ステップＳ２５１３において、受信した設定パラメータを検索ソート可能にシステムパラメータデータベース２２０４に蓄積する。
【０２００】
設定パラメータの受信でなければ、クラウドサーバ２１３０は、ステップＳ２５２１において、設定パラメータの要求であるか否かを判定する。設定パラメータの要求であれば、クラウドサーバ２１３０は、ステップＳ２５２３において、システムパラメータデータベース２２０４からデバイス接続条件を参照して設定パラメータを検索ソートする。そして、クラウドサーバ２１３０は、ステップＳ２５２５において、取得した設定パラメータを送信する。
【０２０１】
設定パラメータの受信でも設定パラメータの要求でもなければ、クラウドサーバ２１３０は、ステップＳ２５３１において、仮想ＰＣの生成であるか否かを判定する。仮想ＰＣの生成であれば、クラウドサーバ２１３０は、ステップＳ２５３３において、仮想ＰＣの生成処理を実行する。そして、クラウドサーバ２１３０は、ステップＳ２５３５において、システムパラメータデータベース２２０４からデバイス接続条件を参照して取得した設定パラメータを設定する。
【０２０２】
本実施形態によれば、蓄積された知識から、デバイス、デバイス接続バス方式、通信方式、などの組み合わせにおいて、適切なＦＩＦＯ容量や通信帯域の設定ができる。
【０２０３】
［第５実施形態］
次に、本発明の第５実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２実施形態乃至第４実施形態と比べると、情報処理装置２３０（仮想ＰＣ）とデバイスが接続された通信端末２２０との間で異なるデータが通信される点で異なる。すなわち、本実施形態においては、情報処理装置２３０のアプリケーションＩＦと通信端末２２０のホストコントローラＩＦとが、第２実施形態と異なる部分で分離されている。例えば、ホストコントローラチップ（ＨＣ）を含めて全体のデバイスドライバをソフトウェアで実現した場合に、特に、ホストコントローラドライバとホストコントローラチップとの組を種々の階層で通信効率や通信速度を考慮して分割する。そして、分割された階層間の情報を情報処理装置２３０と通信端末２２０間でネットワーク通信するよう設計する。その他の構成および動作は、第２実施形態から第４実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０２０４】
（データ伝送例）
図２６は、本実施形態に係る情報処理システムにおけるデータ伝送を示す図である。なお、図２６は、図２Ｇと同様に、ＵＳＢ接続されたＵＳＢデバイスのディスクリプタ取得手順を示す図である。したがって、図２６において、図２Ｇと同様の構成要素には同じ参照番号を付して、説明は省略する。
【０２０５】
デバイス２１０に設定されているディスクリプタは、ＧＥＴ＿ＤＥＳＣＲＩＰＴＯＲなどのＵＳＢリクエストにより取得される。コントロール転送であるＵＳＢリクエストのＵＳＢプロトコルを含むフレームは、情報処理装置２３０とデバイス２１０間でやり取りされる。各コントロール転送は、セット・ステージと、データ・ステージと、ステータス・ステージとからなる。各ステージは、トークン・パケットと、データ・パケットと、ハンドシェイク・パケットとからなる。ディスクリプタは、各データ・ステージのデータ・パケットで取得される。デバイス２１０から取得したディスクリプタはＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたフレームに挿入されて、携帯端末２２０から情報処理装置２３０に送信される。
【０２０６】
ここで、情報処理装置２３０のアプリケーションインタフェース２６３２は、アプリケーション２３１のデバイス入出力要求に応じて、まず接続デバイスを確認するためＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストのＵＳＢプロトコルを含むフレームを生成して、通信制御部４０１に渡す。
【０２０７】
ＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストを含むフレームは、通信端末２２０の通信制御部５０１で受信されてＩＰアンカプセリングされる。ＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストは、ホストコントローラインタフェース２６２５に渡される。ホストコントローラインタフェース２６２５は、ＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストのＵＳＢプロトコルを含むフレームに基づいて、デバイス２１０へのＵＳＢバスにおける各パケットを転送するようＵＳＢバスインタフェース２２６（不図示）に指示する。
【０２０８】
ホストコントローラインタフェース２６２５は、デバイス２１０からデータ・ステージにおいて受信したデータ・パケットをデバイスディスクリプタ２６６３として含むフレームを、通信制御部５０１に渡す。ＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたデバイスディスクリプタ２６６３を含むフレームは、通信端末２２０の通信制御部５０１から情報処理装置２３０の通信制御部４０１に送信される。
【０２０９】
情報処理装置の通信制御部４０１は、アンカプセリングしたデバイスディスクリプタ２６６３を含むフレームをアプリケーションインタフェース２６３２に渡すと、アプリケーションインタフェース２６３２はアプリケーション２３１のデバイス入出力要求に応答して、接続デバイス情報を通知する。
【０２１０】
以下、他のコントロール転送や、バルク転送、インタラプト転送、アイソロナス転送においても、同様のデータ伝送が行なわれる。なお、ホストコントローラインタフェース２６２５とＵＳＢバスインタフェース２２６とが一体にされたソフトウェアであってもよい。
【０２１１】
図２７は、本実施形態に係る情報処理システムにおける他のデータ伝送を示す図である。なお、図２７は、図２Ｇおよび図２６と同様に、ＵＳＢ接続されたＵＳＢデバイスのディスクリプタ取得手順を示す図である。したがって、図２７において、図２Ｇおよび図２６と同様の構成要素には同じ参照番号を付して、説明は省略する。
【０２１２】
デバイス２１０に設定されているディスクリプタは、ＧＥＴ＿ＤＥＳＣＲＩＰＴＯＲなどのＵＳＢリクエストにより取得される。ＵＳＢリクエストのＵＳＢプロトコルを含むコントロール転送は、セット・ステージと、データ・ステージと、ステータス・ステージとからなる。各ステージは、トークン・パケットと、データ・パケットと、ハンドシェイク・パケットとからなる。コントロール転送であるＵＳＢリクエストのＵＳＢプロトコルを含むセット・ステージと、データ・ステージと、ステータス・ステージとは、それぞれ、情報処理装置２３０とデバイス２１０間でやり取りされる。ディスクリプタは、各データ・ステージのデータ・パケットで取得される。デバイス２１０から取得したディスクリプタはＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたデータ・ステージに挿入されて、携帯端末２２０から情報処理装置２３０に送信される。
【０２１３】
ここで、情報処理装置２３０のアプリケーションインタフェース２７３２は、アプリケーション２３１のデバイス入出力要求に応じて、まず接続デバイスを確認するためＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストのＵＳＢプロトコルを含むセット・ステージを生成して、通信制御部４０１に渡す。
【０２１４】
ＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストを含むセット・ステージは、通信端末２２０の通信制御部５０１で受信されてＩＰアンカプセリングされる。ＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストは、ホストコントローラインタフェース２７２５に渡される。ホストコントローラインタフェース２７２５は、ＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストのＵＳＢプロトコルを含むセット・ステージに基づいて、デバイス２１０へのＵＳＢバスにおける各パケットを転送するようＵＳＢバスインタフェース２２６（不図示）に指示する。
【０２１５】
ホストコントローラインタフェース２７２５は、デバイス２１０からデータ・ステージにおいて受信したデータ・パケットをデバイスディスクリプタ２７６３として含むデータ・ステージを、通信制御部５０１に渡す。ＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたデバイスディスクリプタ２７６３を含むデータ・ステージは、通信端末２２０の通信制御部５０１から情報処理装置２３０の通信制御部４０１に送信される。
【０２１６】
情報処理装置の通信制御部４０１は、アンカプセリングしたデバイスディスクリプタ２７６３を含むデータ・ステージをアプリケーションインタフェース２７３２に渡すと、アプリケーションインタフェース２７３２はアプリケーション２３１のデバイス入出力要求に応答して、接続デバイス情報を通知する。
【０２１７】
また、ホストコントローラインタフェース２７２５は、デバイス２１０からステータス・ステージで受信したデータ・パケットをステータスデータ２７６４として含むステータス・ステージを、通信制御部５０１に渡す。ＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたステータスデータ２７６４を含むステータス・ステージは、通信端末２２０の通信制御部５０１から情報処理装置２３０の通信制御部４０１に送信される。
【０２１８】
情報処理装置の通信制御部４０１は、アンカプセリングしたステータスデータ２７６４を含むステータス・ステージをアプリケーションインタフェース２７３２に渡すと、アプリケーションインタフェース２７３２はアプリケーション２３１のデバイス入出力要求に応答して、接続デバイス情報を通知する。
【０２１９】
なお、上記説明では、アプリケーションインタフェース２７３２においては、ハンドシェイク・パケットについて判定していないが、アプリケーションインタフェース２７３２が各ステージにおけるハンドシェイク・パケットを確認する構成であってもよい。
【０２２０】
以下、他のコントロール転送や、バルク転送、インタラプト転送、アイソロナス転送においても、同様のデータ伝送が行なわれる。なお、ホストコントローラインタフェース２７２５とＵＳＢバスインタフェース２２６とが一体にされたソフトウェアであってもよい。
【０２２１】
本実施形態によれば、情報処理装置（仮想ＰＣ）と通信端末間の通信が互いのドライバを分割したフレーム単位の通信であってもステージ単位の通信であっても、ＵＳＢデバイスを遠隔の通信端末に接続した時にも、情報処理装置に直接接続した場合と同じ操作ができる。
【０２２２】
［他の実施形態］
なお、上記実施形態においては、ＵＳＢ、ＨＤＭＩ（登録商標）によるデバイスの接続例を示したが、ＳＣＳＩなどの他の接続であっても同様の効果を奏する。さらに、デバイスを近距離無線、例えば、赤外線通信、ＷｉＦｉ、Ｂｌｕｅｔｏｏｔｈ（登録商標）などで接続する場合にも適用でき、同様の効果を奏する。
【０２２３】
また、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステムまたは装置も、本発明の範疇に含まれる。
【０２２４】
また、本発明は、複数の機器から構成されるシステムに適用されてもよいし、単体の装置に適用されてもよい。さらに、本発明は、実施形態の機能を実現する情報処理プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされるプログラム、あるいはそのプログラムを格納した媒体、そのプログラムをダウンロードさせるＷＷＷ(World Wide Web)サーバも、本発明の範疇に含まれる。特に、少なくとも、上述した実施形態に含まれる処理ステップをコンピュータに実行させるプログラムを格納した非一時的コンピュータ可読媒体（non-transitory computer readable medium）は本発明の範疇に含まれる。
【０２２５】
なお、この出願は、同日出願された日本国特許出願（特願２０１４−２３５１０８，特願２０１４−２３５１１０、特願２０１４−２３５１１１）と関連し、その開示の全てをここに取り込む。
【０２２６】
この出願は、２０１４年１１月１９日に出願された日本国特許出願  特願２０１４−２３５１０９号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2016080427.tif 000003
【図２Ａ】
2016080427.tif 000004
【図２Ｂ】
2016080427.tif 000005
【図２Ｃ】
2016080427.tif 000006
【図２Ｄ】
2016080427.tif 000007
【図２Ｅ】
2016080427.tif 000008
【図２Ｆ】
2016080427.tif 000009
【図２Ｇ】
2016080427.tif 000010
【図３Ａ】
2016080427.tif 000011
【図３Ｂ】
2016080427.tif 000012
【図３Ｃ】
2016080427.tif 000013
【図４】
2016080427.tif 000014
【図５】
2016080427.tif 000015
【図６】
2016080427.tif 000016
【図７Ａ】
2016080427.tif 000017
【図７Ｂ】
2016080427.tif 000018
【図８】
2016080427.tif 000019
【図９Ａ】
2016080427.tif 000020
【図９Ｂ】
2016080427.tif 000021
【図１０】
2016080427.tif 000022
【図１１Ａ】
2016080427.tif 000023
【図１１Ｂ】
2016080427.tif 000024
【図１２】
2016080427.tif 000025
【図１３Ａ】
2016080427.tif 000026
【図１３Ｂ】
2016080427.tif 000027
【図１４】
2016080427.tif 000028
【図１５】
2016080427.tif 000029
【図１６】
2016080427.tif 000030
【図１７】
2016080427.tif 000031
【図１８】
2016080427.tif 000032
【図１９】
2016080427.tif 000033
【図２０】
2016080427.tif 000034
【図２１】
2016080427.tif 000035
【図２２】
2016080427.tif 000036
【図２３】
2016080427.tif 000037
【図２４】
2016080427.tif 000038
【図２５】
2016080427.tif 000039
【図２６】
2016080427.tif 000040
【図２７】
2016080427.tif 000041
【手続補正書】
【提出日】平成29年5月11日(2017.5.11)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
【図１】本発明の第１実施形態に係る情報処理システムの構成を示すブロック図である。
【図２Ａ】本発明の第２実施形態に係る情報処理システムの構成を示すブロック図である。
【図２Ｂ】本発明の第２実施形態に係る情報処理システムの概要を示す図である。
【図２Ｃ】本発明の第２実施形態に係る情報処理システムの機能構成を示すブロック図である。
【図２Ｄ】本発明の第２実施形態に係る情報処理システムの通信路エラー処理を示す図である。
【図２Ｅ】本発明の第２実施形態に係る通信メッセージの構成を示す図である。
【図２Ｆ】本発明の第２実施形態に係る通信データ構成を示す図である。
【図２Ｇ】本発明の第２実施形態に係る情報処理システムにおけるデータ伝送を示す図である。
【図３Ａ】前提技術に係る情報処理システムの概要を示す図である。
【図３Ｂ】前提技術に係る情報処理システムの概要を示す図である。
【図３Ｃ】前提技術に係るＵＳＢの転送方式を示す図である。
【図４】本発明の第２実施形態に係る情報処理装置の機能構成を示すブロック図である。
【図５】本発明の第２実施形態に係る通信端末の機能構成を示すブロック図である。
【図６】本発明の第２実施形態に係る情報処理システムにおける情報の流れを示す図である。
【図７Ａ】本発明の第２実施形態に係るＦＩＦＯ容量テーブルの構成を示す図である。
【図７Ｂ】本発明の第２実施形態に係るＵＳＢのフォーマットおよびプロトコルを示す図である。
【図８】本発明の第２実施形態に係る情報処理装置のハードウェア構成を示すブロック図である。
【図９Ａ】本発明の第２実施形態に係る情報処理装置の処理手順を示すフローチャートである。
【図９Ｂ】本発明の第２実施形態に係る情報処理装置の処理手順を示すフローチャートである。
【図１０】本発明の第２実施形態に係る通信端末のハードウェア構成を示すブロック図である。
【図１１Ａ】本発明の第２実施形態に係る通信端末の処理手順を示すフローチャートである。
【図１１Ｂ】本発明の第２実施形態に係る通信端末の処理手順を示すフローチャートである。
【図１２】本発明の第３実施形態に係る情報処理システムの概要を示す図である。
【図１３Ａ】本発明の第３実施形態に係る情報処理装置の機能構成を示すブロック図である。
【図１３Ｂ】本発明の第３実施形態に係る通信テスト部の機能構成を示すブロック図である。
【図１４】本発明の第３実施形態に係るＦＩＦＯ容量および通信帯域の制御テーブルの構成を示す図である。
【図１５】本発明の第３実施形態に係る情報処理装置の処理手順を示すフローチャートである。
【図１６】本実施形態をＵＳＢハブに適用した情報処理システムの機能構成を示すブロック図である。
【図１７】本実施形態をＨＤＭＩ（登録商標）に適用した情報処理システムの機能構成を示すブロック図である。
【図１８】本実施形態をＳＣＳＩに適用した情報処理システムの機能構成を示すブロック図である。
【図１９】本実施形態をＳＤカードに適用した情報処理システムの機能構成を示すブロック図である。
【図２０】本実施形態を機器共有システムに適用した情報処理システムの機能構成を示すブロック図である。
【図２１】本発明の第４実施形態に係る情報処理システムの構成を示すブロック図である。
【図２２】本発明の第４実施形態に係るクラウドサーバの機能構成を示すブロック図である。
【図２３】本発明の第４実施形態に係るシステムパラメータデータベースの構成を示す図である。
【図２４】本発明の第４実施形態に係るクラウドサーバのハードウェア構成を示すブロック図である。
【図２５】本発明の第４実施形態に係るクラウドサーバの動作手順を示すフローチャートである。
【図２６】本発明の第５実施形態に係る情報処理システムにおけるデータ伝送を示す図である。
【図２７】本発明の第５実施形態に係る情報処理システムにおける他のデータ伝送を示す図である。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１９
【補正方法】変更
【補正の内容】
【００１９】
図１に示すように、情報処理システム１００は、デバイス１１０と、デバイス制御部１２０と、デバイスインタフェース部１３０と、情報処理装置１４０と、チャネル確立部１５０と、エラー抑制部１６０と、を含む。デバイス制御部１２０は、デバイス１１０を制御する。デバイスインタフェース部１３０は、デバイス制御部１２０とのインタフェースを行なう。情報処理装置１４０は、アプリケーション１４１と、アプリケーション１４１とのインタフェースを行なうアプリケーションインタフェース部１４２とを有する。チャネル確立部１５０は、アプリケーションインタフェース部１４２とデバイスインタフェース部１３０とを、通信部１５１を介して接続し、アプリケーション１４１とデバイス１１０との間に制御チャネルとデータチャネルとを確立する。エラー抑制部１６０は、チャネル確立部１５０により確立されたチャネルを介したデータ転送におけるエラー発生を抑制する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３７
【補正方法】変更
【補正の内容】
【００３７】
このように接続されたデバイスは、ホスト２３０から操作可能なデバイスを示すデバイスマネージャの表示画面上において、次のように表示されている。ホスト２３０のＵＳＢコネクタに接続されたデバイス２１１は、内部のユニバーサル＿シリアル＿バス＿コントローラの欄に“ＵＳＢ＿ＤＶＤ”２３１と表示される。ネットワーク２４０を介して外部に接続されたデバイス２１２〜２１５は、それぞれ、リモート＿ユニバーサル＿シリアル＿バスの欄に“ＵＳＢ＿ＤＶＤ”２３２、“ＵＳＢ＿体温計”２３３、“ＵＳＢ＿血圧計”２３４、“ＵＳＢ＿工作機器”２３５と表示される。ホスト２３０からは、自装置に接続したデバイスもネットワーク２４０を介して遠隔に接続したデバイスも、同じ接続デバイスとして操作される。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００６２
【補正方法】変更
【補正の内容】
【００６２】
データメッセージ２８０の内、ホスト２３０から通信端末２２０に送信されるデータメッセージは、ＩＰアドレス２８１と、伝送先エリア／伝送元エリア２８２と、通信データ２８３と、誤り訂正の例えばＣＲＣ２８４と、を有する。ＩＰアドレス２８１としては、送信先の通信端末アドレスと送信元のホストアドレスとがセットされる。伝送先エリア／伝送元エリア２８２としては、伝送先エリアにＵＳＢデバイス２１１（２１２）のＦＩＦＯ1〜nが、伝送元エリアにホスト２３０のＵＳＢバッファ1〜nが、対応付けられて指示される。また、通信データ２８３としては、１つまたは複数のバルクＯＵＴデータが伝送される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００６３
【補正方法】変更
【補正の内容】
【００６３】
データメッセージ２８０の内、通信端末２２０からホスト２３０に送信されるデータメッセージは、ＩＰアドレス２８５と、伝送先エリア／伝送元エリア２８６と、通信データ２８７と、誤り訂正の例えばＣＲＣ２８８と、を有する。ＩＰアドレス２８５としては、送信先のホストアドレスと送信元の通信端末アドレスとがセットされる。伝送先エリア／伝送元エリア２８６としては、伝送先エリアにホスト２３０のＵＳＢバッファ1〜nが、伝送元エリアにＵＳＢデバイス２１１（２１２）のＦＩＦＯ1〜nが、対応付けられて指示される。また、通信データ２８７としては、１つまたは複数のバルクＩＮデータが伝送される。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００６６
【補正方法】変更
【補正の内容】
【００６６】
（通信データ構成例）
図２Ｆは、本実施形態に係る通信データ構成を示す図である。図２Ｆにおいては、図２Ｅにおける、カプセル化のためのＩＰアドレスなどは省かれている。なお、図２Ｆには、本実施形態を実現する通信データ構成の一例を示すが、これに限定されるわけではない。例えば、デバイスドライバの上位層における通信データとして、関数のパラメータ（引数）を送受信することや、さらに、関数自体を送受信することなどもできる。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００７０
【補正方法】変更
【補正の内容】
【００７０】
他のＨＤＭＩ（登録商標）やＳＣＳＩの場合の通信データ構成２７７は、デバイス特定情報として、モニタ、ＨＤＭＩ（登録商標）、ＭＴ０００２や、ＣＤ、ＳＣＳＩ、ＣＤ０００５を有する。また、転送モードとしてＨＤＭＩ（登録商標）制御やＳＣＳＩ制御、転送情報としてＤＤＣ／ＣＥＤやコマンド／レスポンスを含む。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００７３
【補正方法】変更
【補正の内容】
【００７３】
デバイス２１０に設定されているディスクリプタは、ＧＥＴ＿ＤＥＳＣＲＩＰＴＯＲなどのＵＳＢリクエストにより取得される。ＵＳＢリクエストは、それぞれコントロール転送によりデバイス２１０とやり取りされる。各コントロール転送は、セット・ステージと、データ・ステージと、ステータス・ステージとからなる。各ステージは、トークン・パケットと、データ・パケットと、ハンドシェイク・パケットとからなる。ディスクリプタは、各データ・ステージのデータ・パケットで取得される。デバイス２１０から取得したディスクリプタはＩＰヘッダやＴＣＰヘッダでＩＰカプセリングして、携帯端末からなるＵＳＢハブ２２０から情報処理装置２３０に送信される。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００７４
【補正方法】変更
【補正の内容】
【００７４】
ここで、情報処理装置２３０のアプリケーションインタフェース２３２を構成するクラスドライバおよびバスドライバは、アプリケーション２３１のデバイス入出力要求に応じて、まず接続デバイスを確認するためコントロール転送とＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストとを生成して、通信制御部に渡す。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００７５
【補正方法】変更
【補正の内容】
【００７５】
ＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたコントロール転送とＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストとは、通信端末からなるＵＳＢハブ２２０の通信制御部で受信されてＩＰアンカプセリングされる。コントロール転送とＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストとは、ホストコントローラインタフェース２２５に渡される。ホストコントローラインタフェース２２５は、コントロール転送とＧＥＴ  ＤＥＳＣＲＩＰＴＯＲのＵＳＢリクエストとに基づいて、デバイス２１０へのＵＳＢバスにおける各パケットを生成するようＵＳＢバスインタフェース（不図示）に指示する。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００７６
【補正方法】変更
【補正の内容】
【００７６】
ホストコントローラインタフェース２２５は、デバイス２１０から受信した、データ・ステージで受信したデータ・パケットをデバイスディスクリプタとして抽出し、コントロール転送とデバイスディスクリプタとして、通信制御部に渡す。ＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたコントロール転送とデバイスディスクリプタとは、通信端末２２０の通信制御部から情報処理装置２３０の通信制御部に送信される。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００７７
【補正方法】変更
【補正の内容】
【００７７】
情報処理装置の通信制御部は、アンカプセリングしたコントロール転送とデバイスディスクリプタを、アプリケーションインタフェース２３２を構成するバスドライバおよびクラスドライバに渡すと、クラスドライバはアプリケーション２３１のデバイス入出力要求に応答して、接続デバイス情報を通知する。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】００７８
【補正方法】変更
【補正の内容】
【００７８】
以下、他のコントロール転送や、バルク転送、インタラプト転送、アイソロナス転送においても、同様のデータ伝送が行なわれる。なお、ホストコントローラインタフェース２２５とＵＳＢバスインタフェース２２６とが一体にされたソフトウェアであってもよい。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】００８４
【補正方法】変更
【補正の内容】
【００８４】
エラー抑制部５０６は、ＦＩＦＯ２２５ａを有し、ネットワーク２４０のデータ流量をエラー発生しないように調整する。
【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】０１２４
【補正方法】変更
【補正の内容】
【０１２４】
《通信端末の処理手順》
図１１Ａおよび図１１Ｂは、本実施形態に係る通信端末２２０の処理手順を示すフローチャートである。このフローチャートは、図１０のＣＰＵ１０１０がＲＡＭ１０４０を使用しながら実行して、図５の機能構成部を実現する。なお、図１１Ａおよび図１１Ｂにおいては、ホストコントローラインタフェース２２５による処理手順を説明する。
【手続補正１６】
【補正対象書類名】明細書
【補正対象項目名】０１５３
【補正方法】変更
【補正の内容】
【０１５３】
（ＵＳＢハブへの適用）
図１６は、本実施形態をＵＳＢハブに適用した情報処理システム１６００の機能構成を示すブロック図である。なお、図１６において、図２Ｃと同様の構成要素には同じ参照番号を付して、説明を省略する。
【手続補正１７】
【補正対象書類名】明細書
【補正対象項目名】０１７１
【補正方法】変更
【補正の内容】
【０１７１】
図１９の情報処理システム１９００は、情報処理装置としてのホスト２３０と、遠隔にあって、ホスト２３０とネットワーク２４０を介して接続する通信端末１９２０と、通信端末１９２０のコネクタに接続されたＳＤカード１９１０と、を備える。
【手続補正１８】
【補正対象書類名】明細書
【補正対象項目名】０１７７
【補正方法】変更
【補正の内容】
【０１７７】
（機器共有システムへの適用）
図２０は、本実施形態を機器共有システムに適用した情報処理システム２０００の機能構成を示すブロック図である。なお、図２０において、図２Ｂと同様の構成要素には同じ参照番号を付して、説明を省略する。
【手続補正１９】
【補正対象書類名】明細書
【補正対象項目名】０１８３
【補正方法】変更
【補正の内容】
【０１８３】
クラウドサーバ２１３０は、ホスト２３０、あるいは、通信端末２２１〜２２３、あるいは、自機内に形成された仮想ＰＣ２１３１から、デバイス入出力において設定するシステムパラメータを蓄積する。システムパラメータには、デバイス種別、接続するバスのデータ転送方式や転送速度、ネットワーク２４０に通信方式や通信速度、などに対応付けて、適切な転送レベル、通信方式や通信帯域、ＦＩＦＯ容量、などが含まれる。
【手続補正２０】
【補正対象書類名】明細書
【補正対象項目名】０１８７
【補正方法】変更
【補正の内容】
【０１８７】
通信制御部２２０１は、ネットワーク２４０を介して、ホスト２３０や通信端末２２１〜２２３との通信を制御する。パラメータ受信部２２０２は、ホスト２３０や通信端末２２１〜２２３からデバイス入出力時の接続環境および条件に対応付けた設定パラメータを受信する。
【手続補正２１】
【補正対象書類名】明細書
【補正対象項目名】０１８８
【補正方法】変更
【補正の内容】
【０１８８】
接続環境、条件、設定パラメータ蓄積部２２０３は、外部のホスト２３０や通信端末２２１〜２２３から受信した接続環境および条件に対応付けた設定パラメータ、および、仮想ＰＣ２１３１〜２１３ｎから取得した接続環境および条件に対応付けた設定パラメータを整理して蓄積する。システムパラメータデータベース２２０４は、接続環境、条件、設定パラメータ蓄積部２２０３により蓄積されたデータを評価値も含め検索可能に格納する。
【手続補正２２】
【補正対象書類名】明細書
【補正対象項目名】０１８９
【補正方法】変更
【補正の内容】
【０１８９】
パラメータ要求受信部２２０５は、外部のホスト２３０や通信端末２２１〜２２３からの設定パラメータの要求を受信する。パラメータ選定部２２０６は、パラメータ要求受信部２２０５が受信した要求の条件に応じて、適切な設定パラメータをシステムパラメータデータベース２２０４から選定して取得する。パラメータ送信部２２０７は、取得した適切な設定パラメータを、外部のホスト２３０や通信端末２２１〜２２３に送信する。なお、仮想ＰＣ２１３１〜２１３ｎからの要求であれば、適切な設定パラメータを仮想ＰＣ２１３１〜３１３ｎに設定する。
【手続補正２３】
【補正対象書類名】明細書
【補正対象項目名】０１９４
【補正方法】変更
【補正の内容】
【０１９４】
ＲＡＭ２４４０は、ＣＰＵ２４１０が一時記憶のワークエリアとして使用するランダムアクセスメモリである。ＲＡＭ２４４０には、本実施形態の実現に必要なデータを記憶する領域が確保されている。受信パラメータ２４４１は、外部のホスト２３０や通信端末２２１〜２２３から受信した、あるいは、仮想ＰＣ２１３１〜２１３ｎから取得したパラメータである。パラメータ要求データ２４４２は、設定パラメータを共有するデバイス入出力の条件を表わすデータである。送信パラメータ２４４３は、外部のホスト２３０や通信端末２２１〜２２３に送信する、あるいは、仮想ＰＣ２１３１〜２１３ｎに設定するパラメータである。仮想ＰＣ用送受信データ２４４４は、クラウドサーバ２１３０に形成された仮想ＰＣからの送受信データである。
【手続補正２４】
【補正対象書類名】明細書
【補正対象項目名】０１９６
【補正方法】変更
【補正の内容】
【０１９６】
ストレージ２４５０には、以下のプログラムが格納される。クラウドサーバ制御プログラム２４５１は、本クラウドサーバ２１３０の全体を制御するプログラムである。パラメータ蓄積モジュール２４５２は、外部のホスト２３０や通信端末２２１〜２２３からパラメータを受信し、仮想ＰＣ２１３１〜２１３ｎからパラメータを取得して、システムパラメータデータベース２２０４に蓄積するモジュールである。パラメータ提供モジュール２４５３は、システムパラメータデータベース２２０４に蓄積された適切なパラメータを検索ソートして、外部のホスト２３０や通信端末２２１〜１１３へパラメータを送信し、仮想ＰＣ２１３１〜２１３ｎへパラメータを設定するモジュールである。仮想ＰＣプログラム２４５４は、本クラウドサーバ２１３０に仮想ＰＣ２１３１〜２１３ｎを形成するためのプログラムである。
【手続補正２５】
【補正対象書類名】明細書
【補正対象項目名】０２０５
【補正方法】変更
【補正の内容】
【０２０５】
デバイス２１０に設定されているディスクリプタは、ＧＥＴ＿ＤＥＳＣＲＩＰＴＯＲなどのＵＳＢリクエストにより取得される。コントロール転送であるＵＳＢリクエストのＵＳＢプロトコルを含むフレームは、情報処理装置２３０とデバイス２１０間でやり取りされる。各コントロール転送は、セット・ステージと、データ・ステージと、ステータス・ステージとからなる。各ステージは、トークン・パケットと、データ・パケットと、ハンドシェイク・パケットとからなる。ディスクリプタは、各データ・ステージのデータ・パケットで取得される。デバイス２１０から取得したディスクリプタはＩＰヘッダやＴＣＰヘッダでＩＰカプセリングされたフレームに挿入されて、通信端末２２０から情報処理装置２３０に送信される。
【手続補正２６】
【補正対象書類名】図面
【補正対象項目名】図２Ｇ
【補正方法】変更
【補正の内容】
【図２Ｇ】
2016080427.tif 000042
【国際調査報告】
2016080427.tif 000043
2016080427.tif 000044