(57)【要約】【課題】ＵＳＢの占有時間を短くすることが可能なＵＳＢ周辺機器を提供する。【解決手段】ＵＳＢデバイス２０が、コマンド記憶部ＲＡＭ４１とコマンド記憶部ＲＡＭ４１に記憶された複数のコマンドを実行する実行ソフトウエア４２とを有し、複数のコマンドの各々はＵＳＢデバイスを有する機器を制御するためのコマンドでありＵＳＢホスト機器１０によりＵＳＢを介してコマンド記憶部ＲＡＭ４１に格納され、実行ソフトウエア４２は、所定の時間間隔が経過する毎に複数のコマンドの少なくともひとつを実行する。【選択図】図１
2011070361.tif 000002
【特許請求の範囲】
【請求項１】
ホスト機器にＵＳＢを介して接続されるＵＳＢデバイスであって、
コマンド記憶部と、
前記コマンド記憶部に記憶された複数のコマンドを実行するコマンド実行部と、
を有し、
前記複数のコマンドの各々は、前記ＵＳＢデバイスを有する機器を制御するためのコマンドであり、前記ホスト機器により前記ＵＳＢを介して前記コマンド記憶部に格納され、
前記コマンド実行部は、所定の時間間隔が経過する毎に前記複数のコマンドの少なくともひとつを実行することを特徴とするＵＳＢデバイス。
【請求項２】
前記所定の時間間隔は、前記ＵＳＢを介して前記ホスト機器により設定されることを特徴とする請求項１に記載のＵＳＢデバイス。
【請求項３】
前記複数のコマンドの実行結果は、前記ＵＳＢを介して前記ホスト機器に送信されることを特徴とする請求項１又は２に記載のＵＳＢデバイス。
【請求項４】
前記ホスト機器の入力装置の制御を行うことを特徴とする請求項１乃至３のいずれか一項に記載のＵＳＢデバイス。
【請求項５】
ホスト機器と、ＵＳＢデバイスを有する周辺機器と、を含み、
前記ＵＳＢデバイスは、コマンド記憶部と、前記コマンド記憶部に格納された複数のコマンドを実行するコマンド実行部と、を有し、
前記複数のコマンドの各々は、前記ＵＳＢデバイスを有する機器を制御するためのコマンドであり、前記ホスト機器によりＵＳＢを介して前記コマンド記憶部に格納され、
前記コマンド実行部は、所定の時間間隔が経過する毎に前記複数のコマンドの少なくともひとつを実行することを特徴とするＵＳＢデバイスを有するシステム。
【請求項６】
前記複数のコマンドの転送及び前記所定の時間間隔の設定は、前記ホスト機器から前記周辺機器へのコントロール転送におけるデータ・ステージで行われることを特徴とする請求項５に記載のＵＳＢデバイスを有するシステム。
【請求項７】
前記複数のコマンドの実行結果は、前記周辺機器からのインタラプト転送で前記ホスト機器に送信されることを特徴とする請求項５又は６に記載のＵＳＢデバイスを有するシステム。
【請求項８】
前記複数のコマンドの実行結果は、前記周辺機器からのアシンクロナス転送で前記ホスト機器に送信されることを特徴とする請求項５又は６に記載のＵＳＢデバイスを有するシステム。
【請求項９】
前記周辺機器は入力装置であることを特徴とする請求項５乃至８のいずれか一項に記載のＵＳＢデバイスを有するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＵＳＢデバイス及びこのＵＳＢデバイスを使用したシステムに関するものである。
【背景技術】
【０００２】
従来、パーソナルコンピューターなどのホスト機器とホスト機器に接続する周辺機器のインターフェイス規格のひとつとしてＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）が存在する。ホスト機器と周辺機器とを接続する規格には、他にＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）、Ｕｌｔｒａ  ＳＣＳＩ及びＩＥＥＥ１３９４などがあるが、ＵＳＢは周辺機器側の制御が簡易な規格であり、コスト負担も少ないことから、様々な周辺機器に使用されている。
【０００３】
ＵＳＢが周辺機器側の負担を少なくできるのは、ホスト機器側において周辺機器に対して必要な制御の多くを行うからである。通常はホスト機器側に標準の制御プログラムが用意されている。この標準の制御プログラムは、一般的にＵＳＢホスト・ドライバー・スタックと呼ばれる。ＵＳＢホスト・ドライバー・スタックは論理的階層構造を有しており、周辺機器固有の制御プログラム（以降はアプリケーション・プログラムと呼ぶ）に近いほうの階層からクラス・ドライバー、バス・ドライバー及びホストコントローラー・ドライバーの階層に分割して呼ばれることがある。従って、ＵＳＢの接続する周辺機器の開発において作成される周辺機器固有のアプリケーション・プログラムは、クラス・ドライバーのＡＰＩ（ＡＰｌｉｃａｔｉｏｎ  Ｉｎｔｅｒｆａｃｅ）を用いて作成すればよいので作成者側のプログラム作成の負担も軽い。クラス・ドライバーは、Ａｕｄｉｏ、Ｃｏｍｍｕｎｉｃａｔｉｏｎ、ＨｕｍａｎＩｎｔｅｒｆａｃｅＤｅｖｉｃｅ、Ｍｏｎｉｔｅｒ、ＰｈｉｓｉｃａｌＩｎｔｅｒｆａｃｅ、Ｐｏｗｅｒ、Ｐｒｉｎｔｅｒ、Ｓｔｏｒａｇｅ及びＨｕｂなどのクラスが用意されており、いずれのクラス・ドライバーを使用するかは、ＵＳＢに接続する周辺機器の持つディスクリプターにクラス・コードとして記載されている。クラス・ドライバーは、予め用意されているものを使用しても、新たに作成したものを使用してもかまわない。
【０００４】
ＵＳＢは上記した製作者側の理由に加えて、利用者側にとってもケーブルで接続するだけでよいことから多くの機器に採用されており、例えば、キーボード、マウス及びハードディスクなど様々なＵＳＢ対応の周辺機器が製造・販売されている。従って、１台のホスト機器にＵＳＢのインターフェイスを用いた周辺機器が複数接続されることは珍しくなく、ホスト機器のひとつのＵＳＢ端子にＵＳＢハブを接続し、ＵＳＢハブに複数のＵＳＢ対応の周辺機器を接続することも行われている。
【０００５】
例えば、特許文献１には、ＵＳＢハブのケース内にＵＳＢハブを増設するプラグを設け、ＵＳＢハブと増設するＵＳＢハブを直接接続し、ＵＳＢハブと増設するＵＳＢハブを接続するケーブルをなくしてＵＳＢ対応の周辺機器の接続数を増やすことが提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００１−３０６１８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記したように、ＵＳＢではホスト機器が周辺機器に必要な制御を行う。言い換えると、ＵＳＢに接続される周辺機器は、基本的にはホスト機器から送られてくる指示に対して応答するだけである。また、接続されたすべての周辺機器と通信ができるようにひとつの周辺機器に対しての一回の通信時間を制限するタイム・シェアリングを行っている。このため、ひとつのＵＳＢに複数の周辺機器を接続した場合、ひとつの周辺機器を制御するためのＵＳＢの占有時間の割合は相対的に小さくなる。特にＵＳＢハブを用いて複数の周辺機器を接続した場合は、ホスト機器とＵＳＢハブとの間の帯域幅がボトルネックとなって、複数の周辺機器の各々に対して、単位時間におけるデータ転送量の低下を招くことになる。
【課題を解決するための手段】
【０００８】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の実施形態または適用例として実現することが可能である。
【０００９】
［適用例１］
本適用例に係るひとつのＵＳＢデバイスは、ホスト機器にＵＳＢを介して接続されるＵＳＢデバイスであって、コマンド記憶部と、前記コマンド記憶部に記憶された複数のコマンドを実行するコマンド実行部と、を有し、前記複数のコマンドの各々は、前記ＵＳＢデバイスを有する機器を制御するためのコマンドであり、前記ホスト機器により前記ＵＳＢを介して前記コマンド記憶部に格納され、前記コマンド実行部は、所定の時間間隔が経過する毎に前記複数のコマンドの少なくともひとつを実行することを特徴とする。
【００１０】
この構成によれば、ＵＳＢデバイス内のコマンド記憶部にＵＳＢデバイスを有する機器の制御のためのコマンドを予め記憶しておくことでＵＳＢを介してのホスト機器からの制御を少なくすることができ、ホスト機器とＵＳＢデバイスとの間の単位時間における通信に占める時間の割合を少なくすることができる。上記したように、ＵＳＢはホスト機器が周辺機器に対して指示を行い、周辺機器はこの指示に対して応答するタイプのバスである。予めＵＳＢデバイス内のコマンド記憶部に記憶しておく複数のコマンドはホスト機器が周辺機器に対して行う指示に相当するものであり、ＵＳＢデバイスがコマンド記憶部に記憶された複数のコマンドを実行することにより、ホスト機器が周辺機器に対して行っていた指示の回数が減ることになる。従って、ホスト機器と周辺機器との間で使用されていたＵＳＢの使用時間を減らすことが可能となる。また、ＵＳＢには割込みを伝達する信号線がないことから、ホスト機器が周辺機器の状態を継続的に監視するのに、いわゆるポーリングの手法が使われるのが一般的である。このため、周辺機器においても常時コマンド記憶部に記憶された複数のコマンドを実行する必要がない。周辺機器のコマンドの実行は、基本的には周辺機器固有で決められる所定の時間間隔で行えばよいことになる。このことは、周辺機器がホスト機器に対して行う処理結果通知のための通信回数を適切に設定することができることを意味する。以上から、上記した本適用例に係るＵＳＢデバイスを用いることで、ホスト機器と周辺機器との間の通信のボトルネックを緩和することが可能となり、接続する周辺機器を増やしたときのＵＳＢの帯域幅への影響を少なくすることができる。
【００１１】
［適用例２］
上記の適用例に係るＵＳＢデバイスにおいて、前記所定の時間間隔は、前記ＵＳＢを介して前記ホスト機器により設定されることが好ましい。
【００１２】
この構成によれば、ＵＳＢデバイスの記憶部に記憶された複数のコマンドを実行する時間間隔をホスト機器で決定することができる。このため、ホスト機器の処理能力やＵＳＢに接続される周辺機器の数などのシステム構成に対応して適した設定を行うことができる。また、複数のコマンドを実行する時間間隔を変更できることは、ＵＳＢデバイスに汎用性を持たせることになり、ＵＳＢデバイスを様々な種類の周辺機器に用いることが可能となる。所定の時間間隔は、一定の時間間隔とは限らない。例えば、所定の時間間隔として周辺機器内の割込み発生を指定してもよい。割込みは特定の割込み条件を想定しても、すべての割込みを想定してもかまわない。
【００１３】
［適用例３］
上記の適用例に係るＵＳＢデバイスにおいて、前記複数のコマンドの実行結果は、前記ＵＳＢを介して前記ホスト機器に送信されることが好ましい。
【００１４】
この構成によれば、複数のコマンドの実行結果がホスト機器に送信されてくることによって、ホスト機器が必要な処理が行われたかどうかを認識することが可能となる。実行結果の送信は、複数のコマンドの実行後にまとめて送信することでもよく、複数のコマンドの実行の過程で複数に分割して送信されてもよい。
【００１５】
［適用例４］
上記の適用例に係るＵＳＢデバイスは、前記ホスト機器の入力装置の制御を行うことが好ましい。
【００１６】
この構成によれば、上記の適用例に係るＵＳＢデバイスをホスト機器の入力装置の制御に使用することができる。上記したようにＵＳＢは割込み信号線を有しない。すなわち、ＵＳＢに接続した入力装置が何らかの入力を検出したときに割込みで知らせる機能を有していたとしても、この割込みを利用してホスト機器は入力装置が入力を検出したことを認識することができない。従って、ホスト機器は所定の時間間隔で入力装置の状態を監視し、入力された情報を取得する必要がある。このことは、入力装置をＵＳＢに接続した場合、単位時間における所定の割合が、入力装置の監視のために必ず使用されることを意味する。上記の適用例に係るＵＳＢデバイスは、予め複数のコマンドをコマンド記憶部に記憶し所定の時間間隔で実行することから、ホスト機器が入力装置の監視のためにコマンドを送信する必要がなく、上記の単位時間における所定の割合を減らすことができる。
【００１７】
［適用例５］
本適用例に係るひとつのＵＳＢデバイスを有するシステムは、ホスト機器と、ＵＳＢデバイスを有する周辺機器と、を含み、前記ＵＳＢデバイスは、コマンド記憶部と、前記コマンド記憶部に格納された複数のコマンドを実行するコマンド実行部と、を有し、前記複数のコマンドの各々は、前記ＵＳＢデバイスを有する機器を制御するためのコマンドであり、前記ホスト機器によりＵＳＢを介して前記コマンド記憶部に格納され、前記コマンド実行部は、所定の時間間隔が経過する毎に前記複数のコマンドの少なくともひとつを実行することを特徴とする。
【００１８】
この構成によれば、システムのホスト機器にＵＳＢで接続される周辺機器のＵＳＢデバイス内のコマンド記憶部に、ＵＳＢデバイスを有する機器の制御のためのコマンドを予め記憶しておくことで、ホスト機器とＵＳＢデバイスとの間の通信に占める単位時間における割合を少なくすることができる。上記したように、ＵＳＢはホスト機器が周辺機器に対して指示を行い、周辺機器はこの指示に対して応答するタイプのバスである。予めＵＳＢデバイス内のコマンド記憶部に記憶しておく複数のコマンドはホスト機器が周辺機器に対して行う指示に相当するものであり、ＵＳＢデバイスがコマンド記憶部に記憶された複数のコマンドを実行することにより、ホスト機器と周辺機器との間で使用されていたＵＳＢの使用時間を減らすことができる。また、ＵＳＢには割込みを伝達する信号線がないことから、ホスト機器が周辺機器の状態を監視するのに、いわゆるポーリングの手法が使われるのが一般的である。このため、周辺機器においても常時コマンド記憶部に記憶された複数のコマンドを実行する必要はない。周辺機器のコマンドの実行は、基本的には周辺機器固有で決められる所定の時間間隔で行えばよいことになる。このことは、周辺機器がホスト機器に対して行う処理結果通知のための通信回数を適切に設定することができることを意味する。以上から、上記した本適用例に係るＵＳＢデバイスを有するシステムを構築することで、ホスト機器と周辺機器との間の通信のボトルネックを緩和したシステムを形成することが可能となる。
【００１９】
［適用例６］
上記の適用例に係るＵＳＢデバイスを有するシステムにおいて、前記複数のコマンドの転送及び前記所定の時間間隔の設定は、前記ホスト機器から前記周辺機器へのコントロール転送におけるデータ・ステージで行われることが好ましい。
【００２０】
この構成によれば、ホスト機器から周辺機器への複数のコマンドの送信及びコマンドを実行する所定の時間間隔の設定がコントロール転送で行われることで、システムの初期設定の処理の中で複数のコマンドのコマンド記憶部への記憶及び所定の時間間隔の設定を行うことができる。所定の時間間隔は、一定の時間間隔とは限らない。例えば、所定の時間間隔として周辺機器内の割込み発生を指定してもよい。割込みは特定の割込み条件を想定しても、すべての割込みを想定してもかまわない。
【００２１】
［適用例７］
上記の適用例に係るＵＳＢデバイスを有するシステムにおいて、前記複数のコマンドの実行結果は、前記周辺機器からのインタラプト転送で前記ホスト機器に送信されることが好ましい。
【００２２】
この構成によれば、所定の時間間隔で実行されるコマンドの処理結果が、所定の時間間隔で実行されるインタラプト転送で周辺機器からホスト機器に送信されることで、適切なタイミングでホスト機器がコマンドの処理結果を認識できるようにシステムを設定することが可能となる。
【００２３】
［適用例８］
上記の適用例に係るＵＳＢデバイスを有するシステムにおいて、前記複数のコマンドの実行結果は、前記周辺機器からのアシンクロナス転送で前記ホスト機器に送信されることが好ましい。
【００２４】
この構成によれば、周辺機器は、必要なときに優先度の高い通信で処理結果をホスト機器に送信することができる。
【００２５】
［適用例９］
上記の適用例に係るＵＳＢデバイスを有するシステムにおいて、前記周辺機器は入力装置であることが好ましい。
【００２６】
この構成によれば、入力装置の制御のためにホスト機器が周辺機器に対して送信する指示に使用されるＵＳＢの占有時間を減らしたシステムの構築が可能となる。入力装置に入力があったことを監視するために、ホスト機器はＵＳＢを単位時間において所定の割合を使用する必要があった。しかしながら、本適用例で用いるＵＳＢデバイスは、予め複数のコマンドをコマンド記憶部に記憶し所定の時間間隔で実行することから、ホスト機器が入力装置の監視のためにコマンドを送信する必要がなく、上記所定の割合を減らすことができる。このため、上記の適用例にかかるＵＳＢデバイスをＵＳＢに接続する入力装置に使用することで、入力装置以外のＵＳＢに対応した周辺機器のＵＳＢの使用効率を高めたシステムの構築が可能となる。
【図面の簡単な説明】
【００２７】
【図１】実施形態の概念を示すシステムのブロック図。
【図２】実施形態におけるシステムのブロック図。
【図３】従来技術における処理フロー。
【図４】実施例１におけるコマンド記憶部の記憶内容と処理フロー。
【図５】実施例２におけるコマンド記憶部の記憶内容と処理フロー。
【図６】実施形態におけるシステムにおけるフローチャート。
【図７】実施例３及び４における処理フロー。
【発明を実施するための形態】
【００２８】
以下、本発明の実施形態の例について、図を用いて説明する。
【００２９】
（第１実施形態）
図１に本実施形態の概念を説明するための簡単なシステム１のブロック図を示す。図１に示したのは、ＵＳＢホスト機器１０、ＵＳＢターゲット機器１１、ＵＳＢターゲット機器１１内に組み込まれたＵＳＢデバイス２０及びＵＳＢターゲット機器１１の制御回路３０である。概念の説明であるので、ＵＳＢターゲット機器１１の機能は特に限定していない。このため、制御回路３０の機能説明は特に行わないが、ＵＳＢデバイス２０の接続先として制御回路３０を図示している。また、実行手順４０、コマンド記憶部ＲＡＭ４１及び実行ソフトウエア４２は、本実施形態の説明に必要な構成要素を示すものとして図１に記載した。
【００３０】
ＵＳＢホスト機器１０にはＵＳＢターゲット機器１１のアプリケーション・プログラムが組み込まれている。ＵＳＢホスト機器１０内に示した実行手順４０はＵＳＢターゲット機器１１のアプリケーション・プログラムがＵＳＢターゲット機器１１に対して行う処理に必要な複数のコマンド及び複数のコマンドの各々の実行順序の規定などを表したものである。複数のコマンド及びその実行順序の規定などの表し方はアプリケーション・プログラムの書かれ方によって適宜異なってくるものであることから、本実施形態の説明においては特に規定は行わないが、例えば、実行順にコマンドを羅列した形のものでもよいし、各コマンドに番号付けを行ったコマンド一覧表とコマンドの実行順番を各コマンドの番号で記載した手順表のようなものであってもよい。いずれにしても、実行手順４０がＵＳＢデバイス２０の実行ソフトウエア４２が認識できる形としてコマンド記憶部ＲＡＭ４１に記憶される。コマンド記憶部ＲＡＭ４１に記憶されたコマンドはＵＳＢデバイス２０内の実行ソフトウエア４２により読み出され制御回路３０の制御に使用される。
【００３１】
コマンドの実行結果は、実行ソフトウエア４２によりＵＳＢホスト機器１０に通知される。コマンドの実行結果の通知は、実行ソフトウエア４２が行うコマンドの実行を、あたかもＵＳＢホスト機器１０からＵＳＢを介した通信による指示とみなし、これに対して応答する形とするものでもよい。この場合は、ＵＳＢホスト機器１０内のＵＳＢホスト・ドライバー・スタックを新たに作成する必要があるかもしれない。あるいは、ＵＳＢデバイス２０にＯｎ−Ｔｈｅ−Ｇｏの機能を持たせ、ＵＳＢターゲット機器１１がＵＳＢホストとなってデータを転送する形とする通知の仕方でもよい。この場合は、ＵＳＢホスト機器１０内のＵＳＢホスト・ドライバー・スタックは標準のものでもかまわない。いずれにしても、ＵＳＢターゲット機器１１からＵＳＢホスト機器１０へのコマンドの実行結果の通知の仕方は、ＵＳＢターゲット機器１１の機能、ＵＳＢホスト機器１０に実装するアプリケーション・プログラム及びＵＳＢホスト・ドライバー・スタックの機能、及びＵＳＢデバイス２０の機能をどのような仕様にするかにより適宜決定されるものである。
【００３２】
図６に本実施形態における処理のフローチャートの例を示す。図６（Ａ）がメインフローチャート、図６（Ｂ）が図６（Ａ）・処理Ｓ１０２の詳細を示すフローチャート、及び図６（Ｃ）が図６（Ｂ）・処理Ｓ２０４の詳細を示すフローチャートである。電源投入後に図６・（Ａ）のメインフローチャートで示した処理がスタートとする。まず、ＵＳＢホスト機器１０にパワーオンリセットがかかる（図６（Ａ）・処理Ｓ１０１）。一定時間後にパワーオンリセットが解除され、ＵＳＢホスト機器１０内の制御プログラムが作動し、ＵＳＢホスト機器１０の初期設定を行う（図６（Ａ）・処理Ｓ１０２）。処理Ｓ１０２の詳細は図６（Ｂ）に示しているが、本実施形態では便宜上サブルーチンの形態をとっている。しかしながら、特にサブルーチンの形態である必要はない。
【００３３】
初期設定（図６（Ａ）・処理Ｓ１０２）は、まず、ＵＳＢホスト機器１０自体の動作モードなどの設定が行われる（図６（Ｂ）・処理Ｓ２０１）。動作モードがいかなるものであるかはＵＳＢホスト機器１０の構成・機能などにより適宜決まるものである。次にＵＳＢホスト機器１０は、ＵＳＢリセットを行い、その後にＵＳＢのＤ＋及びＤ−の信号線（ＵＳＢの信号線に関しては仕様が定義・公開されていることから特に図示はしない）のレベルからＵＳＢターゲット機器１１の接続及び転送レートを識別する。その後、ＵＳＢターゲット機器１１のディスクリプターを取得し、ＵＳＢアドレスなどの設定を行うなどのＵＳＢターゲット機器１１を認識可能とするための処理を行う（図６（Ｂ）・処理Ｓ２０２）。
【００３４】
次にＵＳＢホスト機器１０に組み込まれたアプリケーション・プログラムが起動し（図６（Ｂ）・処理Ｓ２０３）、ＵＳＢターゲット機器１１の初期設定を行う（図６（Ｂ）・処理Ｓ２０４）。上記したが、ＵＳＢターゲット機器１１の初期設定の処理が図６・（Ｃ）のフローチャートである。
【００３５】
アプリケーション・プログラムは、ＵＳＢターゲット機器１１に必要な動作モードなどの設定を行い（図６（Ｃ）・処理Ｓ３０１）、実行手順４０の内容をコマンド記憶部ＲＡＭ４１に転送するコマンド転送の処理を行う（図６（Ｃ）・処理Ｓ３０２）。次に処理Ｓ３０２で転送したコマンドの実行間隔を規定するウエイト手段の転送を行う（図６（Ｃ）・処理Ｓ３０３）。その後、処理Ｓ３０３において転送されたウエイト手段で規定される時間間隔で処理Ｓ３０２において転送されたコマンドを実行する実行ソフトウエア４２の転送を行い（図６（Ｃ）・処理Ｓ３０４）ＵＳＢターゲット機器１１の初期化を終了する。尚、処理Ｓ３０２、処理Ｓ３０３及び処理Ｓ３０４の転送順番は図６（Ｃ）に示した順番でなくともかまわない。また、実行ソフトウエア４２を予めＵＳＢデバイスに用意しておけば処理Ｓ３０４は省いてよい。図６（Ｂ）及び図６（Ｃ）で示したフローチャートの処理が終了することで、図６（Ａ）・処理Ｓ１０２の処理が終了となる。
【００３６】
初期設定（図６（Ａ）・処理Ｓ１０２）の終了後、アプリケーション・プログラムはＵＳＢターゲット機器１１の起動を指示する（図６（Ａ）・処理Ｓ１０３）。これにより実行ソフトウエア４２が起動し、ウエイト手段で規定される実行時間間隔でコマンド記憶部ＲＡＭ４１に記憶されたコマンドを読み出して実行し、処理結果をＵＳＢホスト機器１０に通知する。
【００３７】
図６（Ａ）・処理Ｓ１０４は、ＵＳＢホスト機器１０における処理及び上記したＵＳＢターゲット機器１１における処理を含んだシステム１全体の処理を示すものである。よって、処理Ｓ１０４における処理内容は、システム１の処理目的に合わせて適宜行われる処理であることから、処理Ｓ１０４の詳細なフローチャートは特に図示しない。図６（Ａ）・処理Ｓ１０５の終了の判断は、本来処理Ｓ１０４の処理の中で行われるものである。しかしながら、本実施形態において処理Ｓ１０４の詳細なフローチャートを明示しないことから、図６（Ａ）のフローチャートの形を整えることを理由に形式的に記載したものである。また、図６（Ａ）・処理Ｓ１０６の終了処理についてもシステム１の設計内容に合わせて適宜行われることであるので、詳細なフローチャートは特に図示しない。
【実施例１】
【００３８】
本実施例は、上記の実施形態におけるＵＳＢターゲット機器１１にタッチスクリーン装置を用いた例である。デバイスクラスは、Ｖｅｎｄｏｒ  Ｓｐｅｃｉｆｉｃとなる。本実施例におけるシステム１００の簡単なブロック図を図２に示す。図２には、ＵＳＢホスト１１０、タッチスクリーン装置１４０、タッチスクリーン装置１４０内のＵＳＢデバイス１２０及びタッチスクリーンコントローラー１３０を示す。ＵＳＢデバイス１２０とタッチスクリーンコントローラー１３０とはＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）で接続した。
【００３９】
図３は、本実施例と比較するために、従来のＵＳＢにおける通信を含む、タッチスクリーンコントローラーの制御フローの一部を模式図として示したものである。便宜上、図３の説明においても図２のブロック図を使用する。上記したようにＵＳＢには割込み信号がない。従って、ＵＳＢホスト１１０は、一定の時間間隔でタッチスクリーン装置１４０に対してポーリングを行い、タッチスクリーン装置１４０への入力を検出していた。図３で示したのは、一回のポーリングにおけるＵＳＢホスト１１０、ＵＳＢデバイス１２０及びタッチスクリーンコントローラー１３０の間における指示内容と応答内容である。
【００４０】
まず、ＵＳＢホスト１１０は、Ｘ座標取得要求を示すコマンドをタッチスクリーン装置１４０に出力する。出力されたＸ座標取得要求を示すコマンドは、タッチスクリーン装置１４０内のＵＳＢデバイス１２０が受信し、タッチスクリーンコントローラーに出力する。続けてＵＳＢホスト１１０は、Ｘ座標読み込みを示すコマンドをタッチスクリーン装置１４０に出力する。Ｘ座標読み込みを示すコマンドを受信したＵＳＢデバイス１２０は、タッチスクリーンコントローラー１３０からのＸ座標取得要求を示すコマンドに対しての応答を待ち、タッチスクリーンコントローラー１３０からＸ座標を示すデータが送られてくるとＵＳＢホスト１１０にＸ座標を示すデータを送信する。上記のＸ座標取得に対しての処理と同じ処理をＹ座標及びＺ座標について行い、ＵＳＢホスト１１０は、Ｘ座標を示すデータ、Ｙ座標を示すデータ及びＺ座標を示すデータを得て、これらのデータからタッチスクリーン装置１４０のどこに入力があったかを算出していた。ＵＳＢホスト１１０からのすべてのコマンド送信に対してＵＳＢデバイス１２０は応答を行うことから、図３に示していないＵＳＢデバイス１２０からＵＳＢホスト１１０への応答を含めると、エンドポイントのサイズにもよるが、一回のポーリングで最低でも１２回のＵＳＢを介した転送が行われていたことになる。
【００４１】
図４（Ａ）にＵＳＢデバイス１２０内の図１のコマンド記憶部ＲＡＭ４１に相当するコマンド記憶部（特に図示しない）に格納されている複数のコマンド及びウエイト手段のイメージを、図４（Ｂ）にＵＳＢにおける通信を含む、タッチスクリーンコントローラー１３０の制御フローの一部の模式図を示す。尚、アドレス及びコマンド・コードの欄に記載されている数値の最初の０ｘは、以降に記載された数値が１６進数であることを示す。また、本実施例におけるコマンド記憶部は１ワードを１６ビットと規定した。従って、１６ビット長のコマンドを定義し制御手順を作成して記憶させることが可能である。以降、このタイプを間接制御と呼ぶことにする。間接制御の場合、ＵＳＢデバイス１２０内の実行ソフトウエアを、複数のコマンドの各々に対応してファンクションを定義づける形で作成することで、様々な処理を実行することができるＵＳＢデバイスの構成が可能である。これに対して、実行ソフトウエアを、ＵＳＢホストからの制御コマンドをそのままタッチスクリーンコントローラー１３０に転送する機能をメインとするものとして作成してもよい。この場合、制御コマンドはタッチスクリーンコントローラー１３０の制御コードである必要がある。以降、このタイプを直接制御と呼ぶことにする。本実施例では、実行ソフトウエアをできるだけ軽くしたいことと、ＵＳＢホスト１１０が直接タッチスクリーン装置１４０を制御しているイメージを残したいことから、実行ソフトウエアを直接制御のタイプとして作成した。
【００４２】
図４（Ａ）について説明する。尚、図４（Ａ）の説明に使用するアドレスは、コマンド記憶部に複数の制御手順を記憶することがあることから、ひとつの制御手順の記載における相対アドレスである。
【００４３】
アドレス０ｘ００００は、制御手順番号を格納するエリアである。制御手順番号は、制御内容の識別に用いるのに都合がよい。初期設定時に予め異なる制御手順番号を付与した複数の制御手順をＵＳＢデバイス１２０に記憶しておくことで、ＵＳＢデバイス１２０内の実行ソフトウエアは複数の制御手順の識別が可能になる。また、処理の途中でＵＳＢデバイス１２０の実行ソフトウエアに行わせる制御手順を変更するような場合に、ＵＳＢホスト１１０がＵＳＢデバイス１２０に制御手順番号を送付するだけで、処理を行う制御手順の変更が可能となる。また、初期設定時だけでなく、処理の途中で制御手順を書き換えてもよい。尚、複数の制御手順をコマンド記憶部に記憶させる場合、制御手順番号は連続した番号を付与する必要はないが、０ｘＦＦＦＦは制御番号として使用することは禁止としている。
【００４４】
アドレス０ｘ０００２は、ウエイト手段、すなわち、コマンドの実行間隔を規定するコードを記憶するエリアである。本実施例では０ｘ０００Ａ（１０ｍｓを示す）とした。
【００４５】
アドレス０ｘ０００４は、上位８ビットがコマンドのコードサイズ、下位８ビットがタッチスクリーンコントローラーのデータサイズを記憶するエリアである。本実施例においては、ＳＰＩのデータサイズをコマンドのコードサイズ及びデータサイズとした。タッチスクリーンコントローラー１３０のコマンドのコードサイズ及びデータサイズが８ビットを超える場合には複数回に分割してのアクセスが必要となる。アドレス０ｘ０００４に記憶するデータは０ｘ０８０８である。
【００４６】
アドレス０ｘ０００６は制御方法を規定するエリアである。制御方法は１６ビット内で随時定義し、実行ソフトウエアを制御方法の認識が可能となるように作成すればよい。現時点では上記した間接制御（０ｘ０００１）及び直接制御（０ｘ００００）しか定義していない。本実施例は直接制御であるので、０ｘ００００を記憶させている。
【００４７】
アドレス０ｘ０００８以降が、制御コマンドを格納するエリアとなる。本実施例においては、コマンド記憶部のアドレス０ｘ０００８〜０ｘ００１Ｅに制御手順番号０ｘ０００１の制御のための複数のコマンドが記憶されている。尚、アドレス０ｘ０００４で規定したコマンドのサイズ及びデータサイズが共に８ビットであることから、アドレス０ｘ０００８以降のコマンド記憶エリアは上位８ビットが未使用となる。よって、本実施例では、最上位の１ビットを、コマンドがタッチスクリーンコントローラー１３０に対しての読み出しを行うコマンドであるか又は書き込みを行うコマンドであるかの識別子として使用している。最上位のビットが“１”であった場合は読み出しのコマンドであることを示す。これにより、直接制御でありながら、実行ソフトウエアがコマンドに付随した動作を補うことができるようになる。コマンドが読み出しデータである場合、実行ソフトウエアはタッチスクリーンコントローラー１３０から読み出したデータを実行ソフトウエアのワークエリアに順次記憶する処理を行っている。このため、本来の直接制御の場合、読み出しのコマンドの実行毎に読み出したデータをＵＳＢホスト１１０に転送しなければならないところを、すべてのコマンドの処理が終了した後でまとめてＵＳＢホスト１１０に送信することが可能となる。これにより、ＵＳＢの占有頻度を下げることが可能となる。尚、本実施例においてはコマンドのコードサイズが８ビットであったため、最上位の１ビットを、読み出しを行うコマンドであるか又は書き込みを行うコマンドであるかの識別子として用いたが、コマンドが１６ビットである場合はコマンドのコード自体の特徴を識別子の代わりとして使用できることがある。これは、一般的な制御用コマンドは、コマンド実行時のハードウエアによる識別を容易にするために、コマンド自体に読み出しか又は書き込みかを示すビットを有することが多いことによる。尚、コマンド自体に特徴を有しない場合は、実行ソフトウエアにおいてコマンドのコード自体を比較して判断することが必要となるが、いずれにしても実行ソフトウエアの作成の仕方により対応することが可能である。
【００４８】
実行ソフトウエアは、制御手順終了を示すコード（０ｘＦＦＦＦ）を認識すると制御手順により行った処理の結果をＵＳＢホスト１１０に送信し、ＵＳＢホスト１１０に組み込まれたアプリケーション・ソフトに処理の結果を通知する。ＵＳＢデバイス１２０は、Ｏｎ−Ｔｈｅ−Ｇｏの機能を有するものとした。従って、自らがホストとなって処理結果をＵＳＢホスト１１０に送信することが可能である。
【００４９】
次に、ＵＳＢデバイス１２０における実行ソフトウエアが図４（Ａ）に示したコマンド・コードの実行を行う状態について説明する。実行ソフトウエアは、ＵＳＢホスト１１０に組み込まれたアプリケーション・プログラムにより起動がかかると、コマンド記憶部のアドレス０ｘ０００２に記憶されたウエイト手段を読み出し、コマンド記憶部に記憶された制御手順の実行時間間隔を確認し、時間の監視を開始する。本実施例では１０ｍｓ間隔である。１０ｍｓの時間の経過を検出すると、アドレス０ｘ０００８以降のコマンドを実行する。コマンドは、記憶されたアドレスの順番で実行される。
【００５０】
１０ｍｓの時間間隔の計測であるが、本実施例ではＵＳＢデバイス１２０にタイマーを設け、実行ソフトウエアがタイマーの値を読み出し監視することで行った。タイマーの値を読み出し、１０ｍｓ経過を確認すると、実行ソフトウエアはコマンド記憶部のアドレス０ｘ０００８の値を読み出しコマンドの実行を開始する。
【００５１】
実行ソフトウエアは、アドレス０ｘ０００８に記憶されたコマンド“Ｄ０”をタッチスクリーンコントローラー１３０に出力する。これにより、タッチスクリーンコントローラー１３０のＸ座標レジスターが読み出しレジスターとして選択される。タッチスクリーンコントローラー１３０のＸ座標レジスターのサイズは１２ビットである。次に実行ソフトウエアは、アドレス０ｘ０００Ａのコマンド“０１”をタッチスクリーンコントローラー１３０に出力する。これにより、タッチスクリーンコントローラー１３０のＸ座標レジスターの下位８ビットが読み出され、実行ソフトウエアにより実行ソフトウエアのワークエリアに記憶される。続いて実行ソフトウエアは、アドレス０ｘ０００Ｃのコマンド“０１”をタッチスクリーンコントローラーに出力する。これにより、Ｘ座標レジスターの上位４ビットが読み出され、実行ソフトウエアにより実行ソフトウエアのワークエリアに記憶される。
【００５２】
実行ソフトウエアが、アドレス０ｘ０００Ｅ〜０ｘ００１２のコマンドを実行することで、上記したＸ座標レジスターの読み出しと同じように、Ｙ座標レジスターの内容が実行ソフトウエアのワークエリアに記憶される。続いて実行ソフトウエアが、アドレス０ｘ００１４〜アドレス０ｘ００１Ｅのコマンドを実行することで、二種類あるＺ座標のＺ１座標及びＺ２座標が、Ｘ座標レジスター及びＹ座標レジスターと同じように読み出され、実行ソフトウエアのワークエリアに記憶される。
【００５３】
次に実行ソフトウエアはアドレス０ｘ００２０の値を読み出し、コマンドの実行が終了したことを認識すると、実行ソフトウエアのワークエリアに記憶していたＸ座標レジスターのデータ、Ｙ座標レジスターのデータ、Ｚ１座標レジスターのデータ及びＺ２座標レジスターのデータをＵＳＢホスト１１０に転送する。実行ソフトウエアは、１０ｍｓの経過毎に上記制御手段を実行することから、実行間隔が略一定となり、ＵＳＢホスト１１０への処理結果の転送はインタラプト転送となる。上記一連の動作は図４（Ｂ）の模式図で現すことができる。図３の模式図と比較すると容易に認識できるように、本実施例において、ＵＳＢの占有時間を短縮することができている。また、本実施例では１０ｍｓの時間間隔の検出にタイマーの値を読み出すことで行ったが、時間間隔の検出に１０ｍｓ毎にタイマー割込みを発生させることで行ってもよい。
【実施例２】
【００５４】
本実施例は、ウエイト手段としてタッチスクリーンコントローラー１３０の割込みＰＩＮＴを用いた例である。ウエイト手段を変更した以外は実施例１と同じである。割込みＰＩＮＴを図２に示す。図５（Ａ）にコマンド記憶部の記憶状態を、図５（Ｂ）に一連の動作の模式図を示す。割込みＰＩＮＴは、タッチスクリーン装置に入力操作が発生したときに発生するため、実施例１のポーリングと異なり一定時間間隔でＵＳＢを使用することはなく、ＵＳＢの占有時間が実施例１よりも短縮することが可能となる。
【００５５】
（第２実施形態）
本実施形態は、ＵＳＢホスト１１０からタッチスクリーン装置１４０へのポーリングを行う形態である。これ以外は第１実施形態と同じである。このため、本実施形態の説明において、第１実施形態で用いた図の多くを便宜上流用することにする。第１実施形態と異なる図は、ＵＳＢホスト１１０、ＵＳＢデバイス１２０及びタッチスクリーンコントローラー１３０の一連の動作を示す模式図であり、図４（Ｂ）に対するものとして図７（Ａ）を、図５（Ｂ）に対するものとして図７（Ｂ）を使用する。
【００５６】
第１実施形態はＵＳＢホスト１１０からタッチスクリーン装置１４０に対してのポーリングを行わない実施形態であった。そのため、ＵＳＢ本来の仕様から外れる部分が出る可能性があることから、場合によってはＵＳＢホスト・ドライバー・スタックを作成する必要があった。しかしながら、本実施形態は、ＵＳＢホスト１１０からタッチスクリーン装置へのポーリングを実施することからＵＳＢ本来の仕様に外れる部分がなくなる。従って、ＵＳＢの占有時間の割合は第１実施形態より多くなるものの、本発明の適用以前より少なくなるという効果を得た上で、標準のＵＳＢホスト・ドライバー・スタックを使用することができるという利点がある。また、ＵＳＢデバイスにＯｎ−Ｔｈｅ−Ｇｏの機能を持たせる必要がない。
【実施例３】
【００５７】
本実施例は、ウエイト手段を実施例１と同様に１０ｍｓに設定し、ＵＳＢホスト１１０からタッチスクリーン装置１４０に対してのポーリング間隔を５ｍｓに設定したものである。コマンド記憶部の内容は図４（Ａ）と同じである。図７（Ａ）を用いて、一連の動作について説明する。まず、図７（Ａ）中のＲＡＭへの書き込みにおいて制御手順がコマンド記憶部に書き込まれ、実行ソフトウエアが起動し制御手順が実行される（制御手順に従い実行（１））。これにより、ＵＳＢデバイス１２０はタッチスクリーンコントローラー１３０からＸ座標、Ｙ座標、Ｚ１座標及びＺ２座標のデータを取得する。以降、１０ｍｓ間隔で制御手順が実行され（制御手順に従い実行（２）及び制御手順に従い実行（３））、それぞれについてＸ座標、Ｙ座標、Ｚ１座標及びＺ２座標のデータが取得される。
【００５８】
ＵＳＢホスト１１０は、ＵＳＢデバイス１２０における制御手順の実行に関係なく５ｍｓ間隔でポーリングを実行する。ポーリングを行ったときにＵＳＢデバイス１２０に有効なデータ（ＵＳＢホスト１１０に転送していないＸ座標、Ｙ座標、Ｚ１座標及びＺ２座標のデータ）が存在すれば、このデータをＵＳＢホスト１１０に返信し、有効なデータがない場合はＮＡＫを返信する。図７（Ａ）において、ポーリング（１）及びポーリング（３）が行われたときには有効なデータが存在することから（読み取りデータを送信（１））及び（読み取りデータを送信（２））が実行される。これに対して、ポーリング（２）においてはポーリング（１）の後にＵＳＢデバイス１２０が次の制御手順の実行を行っていないことから有効なデータがなく、ポーリング（４）においてはＵＳＢデバイス１２０が制御手順を実行中（制御手順に従い実行（３））であることから有効なデータがなく、ＵＳＢデバイス１２０からＵＳＢホスト１１０に対してＮＡＫが返信されている。
【実施例４】
【００５９】
本実施例は、実施例３におけるウエイト手段をタッチスクリーンコントローラー１３０からの割込みＰＩＮＴとした例であり、コマンド記憶部の内容は図５（Ａ）となる。ウエイト手段が異なること以外は実施例３と同じである。一連の動作の模式図は図７（Ｂ）である。
【００６０】
本実施例では割込みＰＩＮＴの発生に応じてＵＳＢデバイス１２０が制御手順を実行する（制御手順に従い実行（１）及び制御手順に従い実行（２））。ＵＳＢホスト１１０がポーリングを行う時間間隔は、実施例３と同じ５ｍｓである。このため、図７（Ｂ）から分かるように、ポーリング（１）及びポーリング（３）のときは有効なデータがなくＮＡＫが返信され、ポーリング（２）及びポーリング（４）のときは有効なデータが返信される（読み取りデータを送信（１）及び（読み取りデータを送信（２））。
【００６１】
以上、複数の実施形態及び実施例で示したように、本発明を適用することでＵＳＢを従来に比べてより効率よく使用することが可能となる。また、本発明の適用は上記の実施形態及び実施例に限定されるものではない。
【符号の説明】
【００６２】
１…システム、１０…ＵＳＢホスト機器、１１…ＵＳＢターゲット機器、２０…ＵＳＢデバイス、３０…制御回路、４０…実行手順、４１…ＲＡＭ、４２…実行ソフトウエア、１００…システム、１１０…ＵＳＢホスト、１２０…ＵＳＢデバイス、１３０…タッチスクリーンコントローラー、１４０…タッチスクリーン装置。
【図１】
2011070361.tif 000003
【図２】
2011070361.tif 000004
【図３】
2011070361.tif 000005
【図４】
2011070361.tif 000006
【図５】
2011070361.tif 000007
【図６】
2011070361.tif 000008
【図７】
2011070361.tif 000009