(57)【要約】【課題】ＵＳＢ  ＨＩＤ仕様の通信において、レポートＩＤを工夫することによって、無駄のない、効率的な通信を行うことができるＨＩＤ仕様の通信方法およびＨＩＤ仕様のＵＳＢ通信回線を有するコンピュータ・システムを得る。【解決手段】ホストコンピュータとデバイス・ドライバとのＨＩＤ仕様のＵＳＢ通信方法およびＨＩＤ仕様のＵＳＢ通信回線を有するコンピュータ・システムであって、ホストコンピュータとデバイス・ドライバとの通信データフォーマットを、データ項目を示すレポートＩＤと送信データとで構成する。レポートＩＤは通信レポートのサイズを示す。レポートＩＤは後続のパケットの有無を示すようにしてもよい。デバイス・ドライバは例えばカードリーダである。【選択図】  図１
2004213430.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータとデバイス・ドライバとのＨＩＤ仕様のＵＳＢ通信方法であって、上記ホストコンピュータとデバイス・ドライバとの通信データフォーマットを、データ項目を示すレポートＩＤと送信データとで構成するとともに、上記レポートＩＤは通信レポートのサイズを示すことを特徴とするＨＩＤ仕様のＵＳＢ通信方法。
【請求項２】
ホストコンピュータとデバイス・ドライバとのＨＩＤ仕様のＵＳＢ通信方法であって、上記ホストコンピュータとデバイス・ドライバとの通信データフォーマットを、データ項目を示すレポートＩＤと送信データとで構成するとともに、上記レポートＩＤは後続のパケットの有無を示すことを特徴とするＨＩＤ仕様のＵＳＢ通信方法。
【請求項３】
請求項１または２記載のＨＩＤ仕様のＵＳＢ通信方法において、上記デバイス・ドライバはカードリーダであるＨＩＤ仕様のＵＳＢ通信方法。
【請求項４】
ＵＳＢ  ＨＩＤ仕様の通信回線を有するホストコンピュータと、このホストコンピュータとＵＳＢ通信のＨＩＤレポートにて通信を行うデバイス・ドライバとを備えたＨＩＤ仕様のＵＳＢ通信回線を有するコンピュータ・システムであって、
上記ホストコンピュータとデバイス・ドライバとの通信データフォーマットは、データ項目を示すレポートＩＤと送信データとで構成するとともに、上記レポートＩＤは通信レポートのサイズを示すＨＩＤ仕様のＵＳＢ通信回線を有するコンピュータ・システム。
【請求項５】
ＵＳＢ  ＨＩＤ仕様の通信回線を有するホストコンピュータと、このホストコンピュータとＵＳＢ通信のＨＩＤレポートにて通信を行うデバイス・ドライバとを備えたＨＩＤ仕様のＵＳＢ通信回線を有するコンピュータ・システムであって、
上記ホストコンピュータとデバイス・ドライバとの通信データフォーマットは、データ項目を示すレポートＩＤと送信データとで構成するとともに、上記レポートＩＤは通信レポートの有無を示すＨＩＤ仕様のＵＳＢ通信回線を有するコンピュータ・システム。
【請求項６】
請求項４または５記載のＨＩＤ仕様のＵＳＢ通信回線を有するコンピュータ・システムにおいて、上記デバイス・ドライバは、カードリーダであるＨＩＤ仕様のＵＳＢ通信回線を有するコンピュータ・システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＵＳＢ通信におけるヒューマン・インターフェイス・デバイス（Ｈｕｍａｎ  Ｉｎｔｅｒｆａｃｅ  Ｄｅｖｉｃｅ）（以下「ＨＩＤ」という）仕様のＵＳＢ通信方法およびＨＩＤ仕様のＵＳＢ通信回線を有するコンピュータ・システムに関するものである。
【０００２】
【従来の技術】
ユニバーサル・シリアル・バス（ＵＳＢ）は、パーソナル・コンピュータ（以下「パソコン」という）に種々のデバイスと相互接続する機能を与える通信アーキテクチャである。ＵＳＢプロトコルは、パソコンの起動時あるいはパソコンにデバイスまたはそのケーブルを差し込んだとき、デバイスのコンフィギュレーションを設定することができる。これらのデバイスは、種々のデバイス・クラスに分類されている。ＨＩＤクラスはその一つで、主に、人がコンピュータ・システムの動作を制御するのに用いられるデバイスから構成されている。ＨＩＤクラス・デバイスの典型的な例は、マウス、トラックボール、ジョイスティックなどのポインティング・デバイス、キーボードなどである。また、人との対話は不要であるが、例えば、バーコード・リーダ、カードリーダ、温度計などもＨＩＤクラス・デバイスと同様のフォーマットでデータを提供する場合がある。
【０００３】
このようなＨＩＤデバイス、ＨＩＤ仕様などに関しては既に知られている（例えば、特許文献１参照）。
【０００４】
【特許文献１】特開平１１−１９４９８８号公報
【０００５】
ＵＳＢ  ＨＩＤ仕様の通信では、通信に使用するレポートの先頭１バイトは「レポートＩＤ」として使われる。ここで「レポート」とは、１単位のデータの集合のことをいう。フォーマットが異なる複数単位のレポートが混在する通信の場合、各レポートに対してレポートＩＤを設定することにより、通信の混乱を防ぐことができる。
【０００６】
【発明が解決しようとする課題】
しかし、各レポートごとに、１レポートで転送するデータのサイズが異なり、さらには、同一レポートの中でも、１レポートで転送できるサイズに満たないショートパケットも混在するような状態では、受信側でのデータ採取の管理が煩雑になるので、データ受信処理能力低下の要因となる。
【０００７】
そこで本発明は、ＵＳＢ  ＨＩＤ仕様の通信において、レポートＩＤを工夫することによって、無駄のない、効率的な通信を行うことができるＨＩＤ仕様のＵＳＢ通信方法およびＨＩＤ仕様のＵＳＢ通信回線を有するコンピュータ・システムを提供することを目的とする。
【０００８】
【課題を解決するための手段】
請求項１記載の発明は、ホストコンピュータとデバイス・ドライバとのＨＩＤ仕様のＵＳＢ通信方法であって、上記ホストコンピュータとデバイス・ドライバとの通信データフォーマットを、データ項目を示すレポートＩＤと送信データとで構成するとともに、上記レポートＩＤは通信レポートのサイズを示すことを特徴とする。
【０００９】
請求項２記載の発明は、ホストコンピュータとデバイス・ドライバとのＨＩＤ仕様のＵＳＢ通信方法であって、上記ホストコンピュータとデバイス・ドライバとの通信データフォーマットを、データ項目を示すレポートＩＤと送信データとで構成するとともに、上記レポートＩＤは後続のパケットの有無を示すことを特徴とする。
【００１０】
請求項３記載の発明は、請求項１または２記載の発明において、デバイス・ドライバはカードリーダであることを特徴とする。
【００１１】
請求項４記載の発明は、ＵＳＢ  ＨＩＤ仕様の通信回線を有するホストコンピュータと、このホストコンピュータとＵＳＢ通信のＨＩＤレポートにて通信を行うデバイス・ドライバとを備えたＨＩＤ仕様のＵＳＢ通信回線を有するコンピュータ・システムであって、上記ホストコンピュータとデバイス・ドライバとの通信データフォーマットは、データ項目を示すレポートＩＤと送信データとで構成するとともに、上記レポートＩＤは通信レポートのサイズを示すように構成されていることを特徴とする。
【００１２】
請求項５記載の発明は、ＵＳＢ  ＨＩＤ仕様の通信回線を有するホストコンピュータと、このホストコンピュータとＵＳＢ通信のＨＩＤレポートにて通信を行うデバイス・ドライバとを備えたＨＩＤ仕様のＵＳＢ通信回線を有するコンピュータ・システムであって、上記ホストコンピュータとデバイス・ドライバとの通信データフォーマットは、データ項目を示すレポートＩＤと送信データとで構成するとともに、上記レポートＩＤは通信レポートの有無を示すように構成されていることを特徴とする。
【００１３】
請求項６記載の発明は、請求項４または５記載のＨＩＤ仕様のＵＳＢ通信回線を有するコンピュータ・システムにおいて、デバイス・ドライバは、カードリーダであることを特徴とする。
【００１４】
【発明の実施の形態】
以下、図面を参照しながら本発明にかかるＨＩＤ仕様のＵＳＢ通信方法およびＨＩＤ仕様のＵＳＢ通信回線を有するコンピュータ・システムの実施形態について説明する。
ＨＩＤ仕様のＵＳＢ通信において、レポートＩＤを設定する際、そのレポートＩＤを割り当てるレポートは、１レポートで転送することのできるデータ数も設定することができる。レポートＩＤと、そのレポートが１レポートで転送できるサイズの設定は、ホストとなるパソコンと、ターゲットとなるデバイス・ドライバとが、ＵＳＢケーブルにより接続された時点で実行されるプラグ・アンド・プレイ（以下「ＰｎＰ」という）の通信の中で行われる。
【００１５】
図１は、レポートＩＤを活用したデータフォーマットの例を示す。トータルのバイト数は６４バイトで、このうち最初の１バイトをレポートＩＤに割り当て、残りの６３バイトを有効データとしている。換言すれば、ホストコンピュータとデバイス・ドライバとの通信データフォーマットは、データ項目を示すレポートＩＤと送信データとで構成されるとともに、上記レポートＩＤは通信レポートのサイズを示している。
【００１６】
上記のようにＰｎＰを実行した後は、設定したレポートＩＤとそのデータ長の関連付けをパソコンも認知するようにし、そのレポートＩＤに対応した送受信を行う。すなわち、データ長（データサイズ）に応じてレポートＩＤを使い分ける。
例えば、
・レポートＩＤ＝２  ：１６バイト（レポートＩＤを含む）
・レポートＩＤ＝３  ：３２バイト（レポートＩＤを含む）
・レポートＩＤ＝４  ：６４バイト（レポートＩＤを含む）
のようにレポートＩＤを設定しておき、これから送信しようとするデータ数に応じて、データを送ることができる最小サイズのレポートを用いて送信を行うこととする。さらに、送信データが、指定したレポートＩＤの１レポートで転送できるサイズに満たない場合は、必ず残りの空欄部はダミーデータで埋めて、該当レポートの１レポートのデータ長に合わせた上で送信することとする。上記ダミーデータは、空のデータであってもよいし、意味のないショートデータであってもよい。これにより、受信側はレポートＩＤのみを判断材料にして受信データ採取の処理を行うことができる。
【００１７】
ところで、上記のような設定によると、ターゲットのデバイス・ドライバからパソコンへのデータ送信の際、送信データを最大長レポート以外のレポート、すなわち、上記の例でいうとレポートＩＤ＝４以外の、レポートＩＤ＝２または３を用いて送信すると、パソコン側では受信処理が完結せず、送信しようとするデータの後に、空パケットまたはレポートＩＤで設定されたデータ長よりも少ないデータを入れたショートパケットを追加して送信する、というステップが必要となっていた。
【００１８】
ＨＩＤ仕様で用いられる転送モードは「ｉｎｔｅｒｒｕｐｔ転送」と呼ばれるもので、１ｍｓ間隔でパケットを送るようになっている。これは、パケットサイズに関係なく一定である。そのため、上記のように空パケットあるいはショートパケットを送るだけであっても、パケット間に１ｍｓの間隔をおく必要があり、それだけ余分に転送時間がかかることになるので、データを送信する際に最大長パケット以外のパケットを使用すると、処理時間に無駄が生じることになる。
【００１９】
そこで、本発明者は、通信方法に改良を加え、複数のレポートを設定したとしても、データ長はどれでも同じである、という設定が望ましいと考え、その具体的な手段を検討した。そこで生まれた発想は、例えば、
レポートＩＤ＝０ｘ４    ：６４バイト
レポートＩＤ＝０ｘＦＦ  ：６４バイト
という二つのレポートを設定することである。いずれのレポートＩＤもレポートサイズは６４バイトである。レポートＩＤ＝０ｘ４のレポートは、「本レポート内の有効なデータは６３バイト以下（ＩＤを含む）であり、このパケットが転送データの最後のブロック」である場合に使用する。余分なデータ領域はダミーデータで埋められ、６３バイトぴったりで転送される。レポートＩＤ＝０ｘＦＦのパケットは、「転送するデータ総数が６４バイトより大きく、後続のパケットが存在する」場合に使用する。
【００２０】
いま、例えば、１５６バイトのデータを転送する場合を想定すると、まず、レポートＩＤ＝０ｘＦＦで、６３バイト分データを転送する。これを２回繰り返す。続いて、レポートＩＤ＝０ｘ４で、残り３０バイトのデータにダミーデータ３３バイトを加えて転送する。受信側では、レポートＩＤ＝０ｘＦＦのレポートを受けることにより、最後のデータであることを認識することができる。
【００２１】
こうすることにより、最終ブロックも、最大長の６４バイトのパケットを使用することになるので、その後、無駄な空パケットやショートパケットを送信する必要がなくなる。
なお、「レポートＩＤ＝０ｘＦＦ」については、設定されたレポートＩＤの中でレポートサイズが最大となるものに対して、「それよりも大きいデータを送る：次のデータにてその続きを送る」の意味を持つものとするとなおよい。
【００２２】
図２は、パソコンなどのホストコンピュータからカードリーダなどのデバイス・ドライバに対して複数パケットのデータを送信する例を示している。図２において、「０ｘＦＦ」のレポートＩＤが付された三つのパケットと、「０ｘ４」のレポートＩＤが付された一つのパケットからなる。「０ｘＦＦ」のレポートＩＤが付された三つのパケットのうち、最初のパケットには、レポートＩＤに続いて、データの長さを表す「ＬＥＮ１」「ＬＥＮ２」と、処理命令コードとして、コマンドを意味する「“Ｃ”」、コマンドの内容を示す「ｃｍ」、デバイスからのデータを読むことができたかどうかを表す「ｐｍ」が割り当てられ、その後にデータが割り当てられている。
【００２３】
「０ｘＦＦ」のレポートＩＤが付された二つ目のパケットと三つ目のパケットは、パケットの頭に割り当てられた「レポートＩＤ＝０ｘＦＦ」とこれに続くデータからなる。三つのパケットではすべてのデータを送信することができないため、四つ目のパケットを用いて残りのデータを送信するようになっている。四つ目のパケットですべてのデータを送信することになるので、レポートＩＤは「０ｘ０４」である。このレポートＩＤは「本レポート内の有効なデータは６３バイト以下であり、このパケットが転送データの最後のブロック」であることを意味している。そして、四つ目のパケットの途中で有効なデータが終わっているので、余りの部分は空のデータ、例えば、「０ｘ００」で埋める。
【００２４】
このようにして４つのパケットに分けられてＵＳＢ通信によりホストコンピュータからデバイス・ドライバにデータが送信される。デバイス・ドライバ側では、受信したデータからコマンド解析し、解析したコマンドを実行し、実行結果をホストに返信する。実行結果を返信するパケットは、「レポートＩＤ＝０ｘ０４」、データ長さを表す「ＬＥＮ１」「ＬＥＮ２」、およびコマンドに対する実行結果情報が割り当てられ、そして、残りの部分は空のデータである「０ｘ００」で埋められている。
【００２５】
図３は、カードリーダなどのデバイス・ドライバからホストに複数パケットを送信する場合の例を示している。ホストはデバイスに対してコマンドを含むデータを送信する。この送信パケットは一つで、レポートＩＤは「０ｘ０４」、すなわち「本レポート内の有効なデータは６３バイト以下であり、このパケットが転送データの最後のブロック」であることを意味している。レポートＩＤに続いて、「ＬＥＮ１」、「ＬＥＮ２」、コマンドに対する実行結果情報、余りの部分は空のデータである「０ｘ００」で埋められている。
【００２６】
デバイス・ドライバ側では、上記通信パケットを受信してコマンド解析を行い、解析したコマンドを実行し、実行結果をホストに返信する。この例では、返信データは「０ｘＦＦ」のレポートＩＤが付された二つパケットと、「０ｘ０４」のレポートＩＤが付された一つパケットからなる。「０ｘ０４」のレポートＩＤが付された一つのパケットですべてのデータ送信が完了し、残りの部分には空のデータである「０ｘ００」が割り振られて埋められている。
【００２７】
図４は、以上説明した実施形態の、デバイス・ドライバ側からの送信処理動作フローの例を示す。動作ステップを、Ｓ１，Ｓ２，・・・のように表す。ステップＳ１で送信完了待ちのフラグを見る。「ＲＳ＿ｔｒｆ＿ｏｎ」は送信中かどうかで、「０」なら送信完了、「１」なら送信中である。送信完了でなければ、Ｓ２で最初のデータかどうかを見る。「ＦＩＦＯ＿ｉｎｐｕｔ＿ＤａｔａＣｎｔ」はＦＩＦＯ（ファーストイン・ファーストアウト：一種のバッファ）にセットしたデータ数のことで、これが「０」ということはデータ数が０で、これからデータが入ること、すなわちＦＩＦＯの先頭であること（最初のデータであること）を意味する。最初のデータである場合は、Ｓ３で送信データの残りが６３バイト以上であるかどうかを判断し、６３バイト以上なら、Ｓ４で、Ｒｅｐｏｒｔ  ＩＤ＝０ｘＦＦ、すなわち「後続データあり」にセットする。送信データの残りが６３バイト以下であれば、Ｓ５で、Ｒｅｐｏｒｔ  ＩＤ＝０ｘ０４、すなわち「最後のパケットである」旨をセットする。
なお、本例では、ＦＩＦＯと１レポートのサイズが同一で、６４ｂｙｔｅの場合を想定している。
【００２８】
上記のようにＲｅｐｏｒｔ  ＩＤをセットした後、Ｓ６においてＦＩＦＯへ送信データをセットし、Ｓ７でＦＩＦＯ＿ｉｎｐｕｔ＿ＤａｔａＣｎｔを一つ加算し、現在ＦＩＦＯにセットされているデータ数と一致させる。次に、ＦＩＦＯは一杯かどうか、すなわち、「ＦＩＦＯ＿ｉｎｐｕｔ＿ＤａｔａＣｎｔ＝６４かどうか」を判断し（Ｓ８）、一杯でなければ、Ｓ９で最後のデータかどうかを判断する。最後のデータでなければＳ１に戻り、最後のデータであれば、Ｓ１０でＦＩＦＯの残りの部分をダミーで埋め、Ｓ１１でＦＩＦＯデータを送信し、Ｓ１２で「送信中フラグ」をクリアする。すなわち、「ＲＳ＿ｔｒｆ＿ｏｎ」を０にしてＳ１に戻る。Ｓ１では送信完了のフラグが立つことにより、送信完了処理に移行する。
【００２９】
Ｓ２で、ＦＩＦＯの先頭ではなかった場合は、Ｓ１３で、送信データを、送信データアドレスで示されるバッファから一つ読み込み、送信データ数を減算して残りのデータを保存してＳ６に進む。
また、Ｓ８で、ＦＩＦＯが一杯の場合は、Ｓ１４でＦＩＦＯデータを送信し、Ｓ１５でＦＩＦＯにセットしたデータ数をクリアする。すなわち、ＦＩＦＯ＿ｉｎｐｕｔ＿ＤａｔａＣｎｔを０にし、Ｓ１に戻る。
【００３０】
【発明の効果】
本発明は、ホストコンピュータとＨＩＤレポートを与えるデバイス・ドライバとのＨＩＤ仕様のＵＳＢ通信方法およびＨＩＤ仕様のＵＳＢ通信回線を有するコンピュータ・システムにおいて、ホストコンピュータとデバイス・ドライバとの通信データフォーマットを、データ項目を示すレポートＩＤと送信データとで構成するとともに、レポートＩＤはレポートのサイズを示す、あるいは後続のパケットの有無を示すように構成した。これによって、レポートＩＤがレポートのサイズを示す場合は、データ受信側のデータ採取の管理を簡単化することができ、さらに、後続のパケットの有無を示すことで、極めてシンプルな通信レポート構成にすることができるとともに、空パケットやショートパケットを送信するというような無駄な処理を行うことがなくなり、効率のよいＵＳＢ通信を行うことができる。
【図面の簡単な説明】
【図１】レポートＩＤを活用したデータフォーマットの例を示す模式図である。
【図２】本発明方法およびシステムにおいてホストからデバイスに対して複数パケットのデータを送信するときのデータ構造の例を示す模式図である。
【図３】本発明方法およびシステムにおいてデバイスからホストに対して複数パケットのデータを送信するときのデータ構造の例を示す模式図である。
【図４】本発明の実施形態の動作例を示すフローチャートである。
【図１】
2004213430.tif 000003
【図２】
2004213430.tif 000004
【図３】
2004213430.tif 000005
【図４】
2004213430.tif 000006