(57)【要約】【課題】USB-HIDのインタフェースを用いて、ＰＣからコードスキャナへメニューコマンドを送信して当該コードスキャナを設定することができるようにする。【解決手段】HIDホスト及びコードスキャナは、USB-HIDのインタフェースを介して接続される。これを前提にして、HIDホストは、複数のステータス情報（Caps Lock、Num Lock及びScroll LockのON/OFF状態を含む情報）に基づいて送信データＤ３を生成し、該生成した送信データＤ３をコードスキャナに送信する。これにより、インタフェースがUSB-HIDであっても、HIDホストから送信された送信データＤ３でコードスキャナの各種設定をすることができるようになる。【選択図】図４
2012014426.tif 000002
【特許請求の範囲】
【請求項１】
ホストの状態を示すステータス情報が当該ホストから入力装置へ送信されるデータ送信方法であって、
前記ホストが、複数の前記ステータス情報に基づいて送信データを生成し、該生成した送信データを前記入力装置に送信することを特徴とするデータ送信方法。
【請求項２】
前記ステータス情報は、
Caps Lock、Num Lock及びScroll LockのON/OFF状態を含む情報であり、
前記送信データは、
前記Caps Lock、Num Lock及びScroll LockのON/OFF状態の組み合わせにより生成されることを特徴とする請求項１に記載のデータ送信方法。
【請求項３】
前記入力装置は、Caps Lockキー、Num Lockキー及びScroll Lockキーを有し、
前記送信データは、
前記入力装置のCaps Lockキー、Num Lockキー及びScroll Lockキーを所定の間隔及び所定の順番で押下することにより生成されることを特徴とする請求項１又は２に記載のデータ送信方法。
【請求項４】
前記送信データは、
前記入力装置を設定するためのメニューコマンドを含む送信パケットとして生成されることを特徴とする請求項１乃至３のいずれかに記載のデータ送信方法。
【請求項５】
前記ホスト及び前記入力装置は、
USB-HIDのインタフェースを介して接続されることを特徴とする請求項１乃至４のいずれかに記載のデータ送信方法。
【請求項６】
前記入力装置は、
キーボード、マウス、ハンディターミナル又はコードスキャナのいずれかであることを特徴とする請求項１乃至５のいずれかに記載のデータ送信方法。
【請求項７】
ホストの状態を示すステータス情報が当該ホストから入力装置へ送信されるデータ送信システムであって、
前記ホストが、複数の前記ステータス情報に基づいて送信データを生成し、該生成した送信データを前記入力装置に送信することを特徴とするデータ送信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストと入力装置とがUSB-HIDのインタフェースで接続され、ホストの状態を示すステータス情報が当該ホストから入力装置へ送信されるデータ送信方法及びデータ送信システムに関するものである。
【背景技術】
【０００２】
バーコードや二次元コード等のコード記号を読み取るコードスキャナには、一般に、当該コードスキャナを各種設定するためのメニューが用意されている。このメニューには、例えば、特定のコードのみを読み取る設定や、当該コードスキャナの動作を確認するための設定等が記述されている。
【０００３】
このようなメニューに記述された設定をコードスキャナに実行させるには２つの方法がある。１つは、メニューコードと呼ばれるコード記号を当該コードスキャナで読み取って設定する方法である。このメニューコードは、コードスキャナメーカーによってコードスキャナの設定の数（例えば、数百種類程度）だけ予め用意されている。用意されているメニューコード以外の設定を実行したい場合には、パーソナルコンピュータ（以下、「ＰＣ」という）に接続されたキーボード等で文字を入力することによりメニューコードを新たに生成することが可能である。
【０００４】
もう１つの方法は、インタフェースを介してＰＣからコードスキャナへメニューコマンドを送信する方法である。メニューコマンドとは、メニューに記述された設定を実行するための、予め規定された文字列である。例えば、メニューコマンドには[ESC]ＪＧというようなコマンドがあり、「ESC」キー、「Ｊ」キー、「Ｇ」キーの順番でキーボードのキーを押下すると、その文字列（メニューコード）がコードスキャナへ送信されて、当該コードスキャナに「JANコードのみを読み取る」という設定がなされる。
【０００５】
ところで、一般に、ＰＣとマウス及びキーボード等の入力装置とを接続して、当該ＰＣ及び入力装置間でデータ通信を行うインタフェースには、双方向通信型のRS232C、USB-COM（Universal Serial Bus-Communication）、一方向通信型のKeyboard wedge、USB-HID（Universal Serial Bus-Human Interface Device）等がある（例えば、特許文献１）。コードスキャナも上述の入力装置と同様に、RS232C、USB-COM、Keyboard wedge及びUSB-HID等のインタフェースが使用可能である（例えば、特許文献２）。近年、特に、USB-HIDは、数多くインタフェースとして使用されており、様々な通信方法が考えられている（例えば、特許文献３）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−２７５９５７号公報
【特許文献２】特開２００８−４０９５５号公報
【特許文献３】特開平１１−１９４９８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述のようなメニューコードをコードスキャナで読み取って、当該コードスキャナを設定する場合、ユーザは数百種類も存在するメニューコードから所望のメニューコードを探索するという煩雑な作業をしなければならない。また、コードスキャナの設定の１つに、紫外線を照射すると発光する塗料で形成されたコード記号のみを読み取るような設定があり、コードスキャナを当該設定にした場合、一般のメニューコードは白及び黒で生成されたコード記号であるので、通常のコード記号を読み取る設定に戻すことが困難である（通常のコード記号を読み取る設定に戻すコード記号を紫外線発光の塗料で形成すれば良いが、それを実現することができるプリンタ等を用意しなくてはならない。）。
【０００８】
また、双方向通信型のRS232Cや、USB-COMではＰＣからコードスキャナへメニューコマンドを送信することができるが、一方向通信型のUSB-HIDではコードスキャナからＰＣへのデータ送信のみであり、ＰＣからコードスキャナへのデータ送信方法は存在しない。USB-HIDは、上述のように、近年、数多くインタフェースとして使用されていることから、ＰＣからコードスキャナへUSB-HIDのインタフェースを介してデータ送信することが望まれている。
【０００９】
そこで、本発明は、一方向通信型のUSB-HIDのインタフェースを用いて、ＰＣからコードスキャナへデータ（例えば、メニューコマンド等）を送信することができ、該送信されたデータに基づいてコードスキャナを設定することができるデータ送信方法及びデータ送信システムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述の課題を解決するために、本発明に係るデータ送信方法は、ホストの状態を示すステータス情報が当該ホストから入力装置へ送信されるデータ送信方法であって、ホストが、複数のステータス情報に基づいて送信データを生成し、該生成した送信データを入力装置に送信することを特徴とするものである。
【００１１】
本発明に係るデータ送信方法では、ホストの状態を示すステータス情報が当該ホストから入力装置へ送信される。例えば、ステータス情報とは、Caps Lock、Num Lock及びScroll LockのON/OFF状態を含む情報である。また、ホスト及び入力装置は、USB-HIDのインタフェースを介して接続される。これを前提にして、ホストは、複数のステータス情報に基づいて送信データを生成し、該生成した送信データを入力装置に送信する。これにより、インタフェースがUSB-HIDであっても、ホストから送信された送信データで入力装置の各種設定をすることができるようになる。
【００１２】
また、本発明に係るデータ送信システムは、ホストの状態を示すステータス情報が当該ホストから入力装置へ送信されるデータ送信システムであって、ホストが、複数のステータス情報に基づいて送信データを生成し、該生成した送信データを入力装置に送信することを特徴とするものである。
【発明の効果】
【００１３】
本発明に係るデータ送信方法及びデータ送信システムによれば、入力装置にコードスキャナを使用した場合に、当該コードスキャナを設定するためのメニューコードが不要になる。この結果、メニューコードを読み取ってコードスキャナを設定するような煩雑な作業を削減することができる。
【図面の簡単な説明】
【００１４】
【図１】HIDホスト２０及びUSB機器３０の接続例を示すブロック図である。
【図２】HIDホスト２０の動作例を示すシーケンス図である。
【図３】ステータス情報Ｄ２の構成例を示す説明図である。
【図４】第１の実施例に係る送信データＤ３の送信例をタイミングチャートである。
【図５】第２の実施例に係るメニューコマンドの設定例を示す説明図である。
【図６】送信パケットＤ４の構成例を示す説明図である。
【発明を実施するための形態】
【００１５】
［USBホスト２０及びUSB機器３０の接続例］  
まずは、USB-HIDの典型的な構成であるHIDホスト２０の構成例について説明する。  
図１に示すように、パーソナルコンピュータ（以下、「ＰＣ１０」という）にはUSB-HIDホスト（以下、「HIDホスト２０」という）が搭載され、入力装置であるUSB機器３０とHUB２６を介して接続されて、本発明のデータ送信システムを構成している。
【００１６】
HIDホスト２０は、アプリケーション２１、クラスドライバであるHIDクラスドライバ２２及びHUBクラスドライバ２３、USBドライバ２４及びホストコントローラドライバ２５の階層から構成される。
【００１７】
アプリケーション２１は、USB機器３０を利用したアプリケーション・ソフトウェア層である。アプリケーション・ソフトウェアとは、ＰＣ１０のユーザが当該ＰＣ１０上で実行したい作業を実施する機能を直接的に有するソフトウェアである。
【００１８】
HIDクラスドライバ２２及びHUBクラスドライバ２３は、ＰＣ１０に接続されるUSB機器３０のクラスに対応したエンドポイントの管理や通信プロトコル処理を行うドライバ層である。
【００１９】
USBドライバ２４は、USBとしての基本的な動作を行い、コントローラやクラスに依存しないUSBの理論的な通信制御処理を受け持つドライバ層である。また、USBドライバ２４は、USB機器３０の接続と転送等の管理機能も備えている。具体的には、USBドライバ２４は、各USB機器３０のUSBアドレスを管理し、各USB機器３０のエンドポイントの状態を監視する。そして、USBドライバ２４は、その監視により、USB機器３０の接続状態に変化があった場合に、各種必要な処理を提供する。
【００２０】
ホストコントローラドライバ２５は、ハードウェア（チップ）で実現されるホストコントローラのドライバ層であり、上位のUSBドライバ２４からハードウェアを抽象化する。例えば、ホストコントローラドライバ２５は、コントローラに対するI/O処理、割り込み処理及びコントローラに依存するスケジューリング処理を行う。
【００２１】
USB機器３０は、例えば、コードスキャナ３１、ハンディターミナル３２、キーボード３３又はマウス３４等で構成されており、これらはいずれもUSB-HIDのインタフェースを備えている。
【００２２】
コードスキャナ３１は、バーコードや二次元コード等のコード記号を光学的に読み取る装置である。コードスキャナ３１は、コード記号を読み取ると、該読み取ったコード記号を光電変換して入力データＤ１としてHUB２６を介してHIDホスト２０に送信する。
【００２３】
ハンディターミナル３２は、所定のサーバと通信可能で、例えば、在庫管理等に使用される、ユーザが携帯可能な端末装置である。ハンディターミナル３２は、ユーザによって入力された入力データＤ１を、HUB２６を介してHIDホスト２０に送信する。
【００２４】
キーボード３３は、複数のキー（例えば、アルファベットキー、ESCキー、ENTERキー、Caps Lockキー、Num Lockキー及びScroll Lockキー等）を有し、このキーが押下されることにより所望の文字を入力するものである。キーボード３３は、ユーザがキーを押下すると、該押下した文字に対応した文字情報を含む入力データＤ１を、HUB２６を介してHIDホスト２０に送信する。
【００２５】
マウス３４は、ユーザによって水平に移動されると、ボール、LED又はレーザー等を利用したセンサにより当該移動を検知し、２次元の移動距離をコンピュータへ入力するポインティングデバイスである。マウス３４は、移動距離を含む情報を入力データＤ１としてHUB２６を介してHIDホスト２０に送信する。
【００２６】
［USB機器３０からHIDホスト２０へのデータ送信例］  
次に、USB機器３０からHIDホスト２０へのデータ送信の一例であるインタラプト転送について説明する。図２に示すように、HIDクラスドライバ２２又はHUBクラスドライバ２３がUSBドライバ２４及びホストコントローラドライバ２５にインタラプト転送を設定する。
【００２７】
インタラプト転送が設定されると、USBドライバ２４及びホストコントローラドライバ２５は、HUB２６に向けて定期的にインタラプトＩＮトークン（インタラプト転送の要求）を投げるように設定する。これにより、インタラプト転送がNAK以外の結果（例えば、ACK、又はエラー）となったときに、指定した関数をコールバックするように設定することができる。
【００２８】
HUB２６は、USB機器３０の接続が切り離されるまで常にHIDホスト２０に監視される。HUB２６は、当該HUB２６に変化がない限り、インタラプトＩＮトークンがくるたびにエンドポイントとしてNAKを返す。最初のインタラプトＩＮトークンから次のインタラプトＩＮトークンまでの間をインタラプト転送インターバルと呼ぶ。
【００２９】
HUB２６は、USB機器３０の状態に変化があった場合、例えば、USB機器３０が当該HUB２６から着脱されたことを検出した場合、エンドポイントとしてNAKの代わりに「Hub and Port Status Change Bitmap」をUSBドライバ２４及びホストコントローラドライバ２５へ返す。
【００３０】
「Hub and Port Status Change Bitmap」を受信したUSBドライバ２４及びホストコントローラドライバ２５は、ACKをHUB２６に返す。そして、USBドライバ２４及びホストコントローラドライバ２５は、HIDクラスドライバ２２又はHUBクラスドライバ２３にコールバックされて、「Hub and Port Status Change Bitmap」が取り出される。HIDクラスドライバ２２又はHUBクラスドライバ２３は、取り出した「Hub and Port Status Change Bitmap」を、アプリケーション２１に出力することにより、各種処理が実行される。
【００３１】
アプリケーション２１が各種処理を実行している状態で、HIDクラスドライバ２２又はHUBクラスドライバ２３からUSBドライバ２４及びホストコントローラドライバ２５を介してHUB２６へデータを要求して、USB機器３０からHUB２６、ホストコントローラドライバ２５及びUSBドライバ２４を介して入力データＤ１がHUBクラスドライバ２３に送信される。このとき、USBドライバ２４及びホストコントローラドライバ２５からHUB２６へACKが返される。
【００３２】
このような方法により、USB機器３０からHIDホスト２０（ＰＣ１０）へ入力データＤ１が送信される。しかしながら、USB-HIDのインタフェースではＰＣ１０からUSB機器３０にデータを送信することができない。そこで、以下に述べるように、HIDクラスドライバ２２から出力されるステータス情報Ｄ２によって、HIDホスト２０からUSB機器３０にデータを送信する本発明のデータ送信方法について説明する。
【実施例１】
【００３３】
［HIDホスト２０からUSB機器３０へのステータス情報Ｄ２の送信例］  
まずは、第１の実施例として、HIDクラスドライバ２２から出力されるステータス情報Ｄ２について説明する。図３に示すように、ステータス情報Ｄ２は、Caps Lock、Num Lock及びScroll LockのON/OFF状態を含む情報であり、Caps LockビットＤ２１、Num LockビットＤ２２、Scroll LockビットＤ２３及び空ビットＤ２４で構成される。Caps LockビットＤ２１、Num LockビットＤ２２、Scroll LockビットＤ２３は、それぞれ１ビットで構成され、空ビットＤ２４は、５ビットで構成される。つまり、ステータス情報Ｄ２は、８ビット（１バイト）で構成される。
【００３４】
Caps LockビットＤ２１は、例えば、キーボード３３のCaps Lockキーを押下する毎に「１」、「０」が切り替わる。つまり、Caps LockのON/OFF状態（有効／無効状態）が切り替わる。Caps Lockとは、一般に、ON状態のときに、キーボード３３により入力されるアルファベットを小文字から大文字に変わる機能である。
【００３５】
Num LockビットＤ２２は、キーボード３３のNum Lockキーを押下する毎に「１」、「０」が切り替わり、Num LockのON/OFF状態が切り替わる。Num Lockとは、一般に、ON状態のときに、キーボード３３が有しているテンキーから数字入力が可能になり、OFF状態のときに、テンキーからカーソル入力（矢印や、Home及びEnd等）が可能になる機能である。
【００３６】
Scroll LockビットＤ２３は、キーボード３３のScroll Lockキーを押下する毎に「１」、「０」が切り替わり、Scroll LockのON/OFF状態が切り替わる。Scroll Lockとは、一般に、ON状態のときに、画面のスクロールがロックされる機能である。空ビットＤ２４は、常に「０」となるものである。
【００３７】
このようなステータス情報Ｄ２が、HIDクラスドライバ２２によって生成されて、HUB２６を介して図示しないSETUPというトークンでUSB機器３０に出力される。USB機器３０は、HIDクラスドライバ２２から出力されたステータス情報Ｄ２を受信することにより、他のUSB機器３０の状態をHIDホスト２０を介して把握することができる。ステータス情報Ｄ２は、ＰＣ１０の電源を投入したときや、キーボード３３のCaps Lockキー、Num Lockキー又はScroll Lockキーのいずれかが押下されたときに、HIDクラスドライバ２２からUSB機器３０へ出力される。
【００３８】
［HIDホスト２０からUSB機器３０への送信データＤ３の送信例］  
本発明は、HIDホスト２０からUSB機器３０へ送信することができるステータス情報Ｄ２に着目して見出されたものである。具体的なデータ送信方法を以下に示す。
【００３９】
HIDホスト２０は、複数のステータス情報Ｄ２に基づいて送信データＤ３を生成し、該生成した送信データＤ３を、図１に示すように、HUB２６を介してUSB機器３０に送信する。
【００４０】
図４の（Ａ）に示すように、送信データＤ３は、例えば、Bit7〜Bit0で構成される。送信データＤ３の各ビットには、ステータス情報Ｄ２が格納されている。
【００４１】
Bit7〜Bit0には、USB機器３０に入力される８ビット（１バイト）の情報が格納される。Bit7〜Bit0は、Num LockビットＤ２２又はScroll LockビットＤ２３のいずれかが「１」となる。例えば、Bit7〜Bit0に「０」を入れたいときには、Num LockビットＤ２２を「１」にする。つまり、キーボード３３のNum Lockキーを押下する。また、Bit7〜Bit0に「１」を入れたいときには、Scroll LockビットＤ２３を「１」にする。つまり、キーボード３３のScroll Lockキーを押下する。
【００４２】
このように、送信データＤ３は、Caps Lock、Num Lock及びScroll LockのON/OFF状態の組み合わせにより生成され、具体的には、キーボード３３のCaps Lockキー、Num Lockキー及びScroll Lockキーを、モールス信号で生成される電報のように、所定の間隔及び所定の順番で押下することにより生成される。所定の間隔及び所定の順番は、本実施例に限定されず、適宜変更可能である。
【００４３】
上述のBit7〜Bit0で構成された送信データＤ３をUSB機器３０に送信する場合、まず、キーボード３３のCaps Lockキーを１回押下すると、それがトリガーとなり、送信データＤ３の送信動作が開始される。
【００４４】
Bit7〜Bit0に対応して、Num Lockキー又はScroll Lockキーを押下して、送信データＤ３を作成する。
【００４５】
その後、Check1ビットに「０」又は「１」が入力される。Check1ビットは、イーブンパリティが用いられ、Bit7〜Bit0に入力された「１」又は「０」の数が奇数のときに「１」が入力され、偶数のときに「０」が入力される。この具体例については後述する。Check1ビットが入力された後は、Check0ビットに常に「０」が入力される。
【００４６】
Check0ビットに「０」が入力された後は、送信データＤ３の送信を終了するために、キーボード３３のCaps Lockキーを１回押下する。
【００４７】
次に、HIDホスト２０からUSB機器３０への送信データＤ３の送信について説明する。図４の（Ｂ）は、「１０１１０１０１」という情報が含まれた送信データＤ３を送信する説明図である。図４の（Ｂ）に示すように、HIDホスト２０からUSB機器３０へ送信データＤ３を送信する場合、まず、STARTビットに「１」を入力するために、キーボード３３のCaps Lockキーを押下する。すると、HIDホスト２０は、送信データＤ３を生成する準備に入る。
【００４８】
その後、Bit7に「１」を入力するために、キーボード３３のScroll Lockキーを押下する。Bit6に「０」を入力するために、キーボード３３のNum Lockキーを押下する。Bit5に「１」を入力するために、キーボード３３のScroll Lockキーを押下する。Bit4に「１」を入力するために、キーボード３３のScroll Lockキーを押下する。Bit3に「０」を入力するために、キーボード３３のNum Lockキーを押下する。Bit2に「１」を入力するために、キーボード３３のScroll Lockキーを押下する。Bit1に「０」を入力するために、キーボード３３のNum Lockキーを押下する。Bit0に「１」を入力するために、キーボード３３のScroll Lockキーを押下する。
【００４９】
Bit7〜Bit0は、「１０１１０１０１」が入力され、「０」の数が３つ、「１」の数が５つであり、「０」の数及び「１」の数がともに奇数であるので、Check1ビットに「１」を入力する。つまり、キーボード３３のScroll Lockキーを押下する。そして、Check0ビットに「０」を入力するために、キーボード３３のNum Lockキーを押下する。
【００５０】
Bit7〜Bit0の「０」又は「１」の数が奇数のときにCheck1ビットに「１」を入力する理由は、Scroll Lockの状態を通常の状態（OFF状態）に戻すためである。つまり、キーボード３３のCaps Lockキー、Num Lockキー及びScroll Lockキーは、通常、文字入力する際に使用されるものであるので、奇数回押下すると、ON状態となり、当該キーボード３３の入力状態が変わってしまう。例えば、Scroll Lockキーを奇数回押下すると、Scroll Lockの状態がON状態になり、画面のスクロールが固定され、偶数回押下すると、Scroll Lockの状態がOFF状態になり、画面のスクロールの固定が解除される。
【００５１】
Check0ビットに必ず「０」を入力する理由は、Num Lockの状態を通常の状態（OFF状態）に戻すためである。つまり、Bit7〜Bit0の「０」又は「１」の数が奇数のときには、キーボード３３のNum Lockキーは、奇数回押下されてNum LockがON状態になっているので、Check0ビット入力時にNum Lockキーを１回押下することにより、Num LockがOFF状態に戻る。また、Bit7〜Bit0の「０」又は「１」の数が偶数のときには、Check1ビットに「０」が入力されるため、Bit7〜Bi0、Check1ビットが入力されるまでにNum Lockキーは奇数回押下されてNum LockがON状態になっている。このため、Check0ビット入力時にNum Lockキーを１回押下することにより、Num LockがOFF状態に戻る。
【００５２】
Check1ビット及びcheck0ビットが入力されたら、最後に、キーボード３３のCaps Lockキーを押下して、STOPビットに「１」を入力する。すると、HIDホスト２０は、「１０１１０１０１」の情報が含まれる送信データＤ３を生成して、該生成した送信データＤ３をUSB機器３０に送信する。
【００５３】
因みに、送信データＤ３をUSB機器３０に送信する際、キーボード３３のCaps Lockキー、Num Lockキー及びScroll Lockキーを押下する時間間隔（遅延時間）は、例えば、５秒以下とする。５秒よりキーの押下する時間間隔が長くなったら、タイムアウトとみなす。従って、送信データＤ３の最低送信速度は0.2bpsとなる。また、複数の送信データＤ３をUSB機器３０に送信する際に、各送信データＤ３間の時間間隔は特に制限しない。
【００５４】
次に、HIDホスト２０が、「０１００１０１１」という情報が含まれる送信データＤ３をUSB機器３０に送信する例について説明する。図４の（Ｃ）は、「０１００１０１１」という情報が含まれた送信データＤ３を送信する説明図である。図４の（Ｃ）に示すように、HIDホスト２０からUSB機器３０へ送信データＤ３を送信する場合、まず、STARTビットに「１」を入力するために、キーボード３３のCaps Lockキーを押下する。すると、HIDホスト２０は、送信データＤ３を生成する準備に入る。
【００５５】
その後、Bit7に「０」を入力するために、キーボード３３のNum Lockキーを押下する。Bit6に「１」を入力するために、キーボード３３のScroll Lockキーを押下する。Bit5に「０」を入力するために、キーボード３３のNum Lockキーを押下する。Bit4に「０」を入力するために、キーボード３３のNum Lockキーを押下する。Bit3に「１」を入力するために、キーボード３３のScroll Lockキーを押下する。Bit2に「０」を入力するために、キーボード３３のNum Lockキーを押下する。Bit1に「１」を入力するために、キーボード３３のScroll Lockキーを押下する。Bit0に「１」を入力するために、キーボード３３のScroll Lockキーを押下する。
【００５６】
Bit7〜Bit0には、「０１００１０１１」が入力され、「０」の数が４つ、「１」の数が４つであり、「０」の数及び「１」の数がともに偶数であるので、Check1ビットに「０」を入力する。つまり、キーボード３３のNum Lockキーを押下する。そして、Check0ビットに「０」を入力するために、キーボード３３のNum Lockキーを押下する。
【００５７】
Check1ビット及びcheck0ビットが入力されたら、最後に、キーボード３３のCaps Lockキーを押下して、STOPビットに「１」を入力する。すると、HIDホスト２０は、「０１００１０１１」の情報が含まれる送信データＤ３を生成して、該生成した送信データＤ３をUSB機器３０に送信する。
【００５８】
このように、第１の実施例に係るデータ送信方法によれば、HIDホスト２０の状態を示すステータス情報Ｄ２が当該HIDホスト２０からUSB機器３０へ送信される。例えば、ステータス情報Ｄ２とは、Caps Lock、Num Lock及びScroll LockのON/OFF状態を含む情報である。また、HIDホスト２０及びUSB機器３０は、USB-HIDのインタフェースを介して接続される。これを前提にして、HIDホスト２０は、複数のステータス情報Ｄ２に基づいて送信データＤ３を生成し、該生成した送信データＤ３をUSB機器３０に送信する。これにより、インタフェースがUSB-HIDであっても、HIDホスト２０から送信された送信データＤ３でUSB機器３０の各種設定をすることができるようになる。
【００５９】
従って、USB機器３０がコードスキャナ３１の場合、当該コードスキャナ３１を設定するためのメニューコードが不要になる。この結果、メニューコードを読み取ってコードスキャナ３１を設定するような煩雑な作業を削減することができる。また、USB-HIDを使用してHIDホスト２０及びUSB機器３０間を双方向データ送信するので、従来のRS232C等のインタフェースを使用したデータ送信方法及びデータ送信システムに比べて、データ転送速度が向上し、多量のデータ転送が可能になる。
【００６０】
なお、本実施例では、図４でSTARTビット及びSTOPビットに「１」を入力するときにはCaps Lockキーを押下し、Bit7〜Bit0、Check1ビット及びCheck0ビットに「０」を入力するときにはNum Lockキーを押下して、Bit7〜Bit0及びCheck1ビットに「１」を入力するときにはScroll Lockキーを押下する説明をしたが、これに限定されず、Caps Lockキー、Num Lockキー及びScroll Lockキーの役割を交換しても構わない。
【実施例２】
【００６１】
本実施例では、第１の実施例で説明した１バイトの情報が含まれる送信データＤ３を複数集めた送信パケットＤ４をコードスキャナ３１に送信するデータ送信方法について説明する。前述の第１の実施例と同じ名称及び符号のものは同じ機能を有するので、その説明を省略する。
【００６２】
本実施例で説明する送信パケットＤ４は、送信データＤ３を集めたものであり、当該送信パケットＤ４にはコードスキャナ３１を設定するためのメニューコマンドが含まれる。メニューコマンドとは、例えばコードスキャナメーカーが予め作成したメニューに記述された設定を実行するためのコマンドであり、所定の文字列で構成される。
【００６３】
メニューコマンドは、キーボード３３の「ESC」キーが文字入力のトリガーとなり、この「ESC」を押下した後に、所望の文字キーを押下すると、キーボード３３からHIDホスト２０に向かって送信される。そして、HIDホスト２０は、メニューコマンドが含まれる送信パケットＤ４を生成し、図１に示すように、該生成した送信パケットＤ４をコードスキャナ３１に送信する。
【００６４】
［メニューコマンドの設定例］  
図５にメニューコマンドの一例を示す。メニューコマンド[ESC]Ｂは、コードスキャナ３１の動作を確認するためのコマンドである。メニューコマンド[ESC]ＪＧは、コードスキャナ３１にJANコードのみを読み取らせるためのコマンドである。メニューコマンド[ESC]Ｕ２は、コードスキャナ３１のインタフェースをRS232Cに変更するためのコマンドである。
【００６５】
メニューコマンド[ESC]Ｚは、コードスキャナ３１がコードを読み取るためのコマンドである。このメニューコマンドが入力されると直ぐにコードスキャナ３１は、コード読み取り動作を開始する。メニューコマンド[ESC]Ｚ１は、ＰＣ１０又はコードスキャナ３１の図示しないRAM及びROM等で構成される記憶部に記憶されたバージョンナンバーを出力するコマンドである。このバージョンナンバーは、コードスキャナ３１本体のバージョンナンバーであっても良いし、コードスキャナ３１にインストールされているソフトのバージョンナンバーであっても良い。
【００６６】
メニューコマンド[ESC]Ｚ２は、コードスキャナ３１の現在の設定を記憶部に記憶するコマンドである。例えば、メニューコマンド[ESC]ＪＧが入力された後に、メニューコマンド[ESC]Ｚ２を入力すると、コードスキャナ３１は、JANコードのみを読み取るという設定を記憶部に記憶する。メニューコマンド[ESC]Ｚ３は、コードスキャナ３１の現在の設定を出力するコマンドである。つまり、メニューコマンド[ESC]Ｚ２を入力されてコードスキャナ３１の記憶部に記憶された設定を、例えば、HUB26を介してＰＣ１０に出力する。
【００６７】
［送信パケットＤ４の送信例］  
次に、送信パケットＤ４の送信例について説明する。図６の（Ａ）に示すように、送信パケットＤ４は、Length、[ESC]、文字１、文字２、・・・、文字ｎ及び[Enter]で構成される。Length、[ESC]、文字１、文字２、・・・、文字ｎ及び[Enter]は、それぞれ１バイトのデータ量を有するものである。
【００６８】
Lengthは、送信パケットＤ４のデータ長さ（データサイズ）を表すものである。例えば、送信パケットＤ４のデータサイズが８バイトであれば、キーボード３３で「８」を入力する。例えば、最大１２７バイトのデータサイズまで入力可能である。
【００６９】
[ESC]は、送信パケットＤ４を送信する際の開始を示すものである。[ESC]は、Escapeキーコードの「０ｘ１Ｂ」のスタート文字である。
【００７０】
文字１、文字２、・・・、文字ｎには、メニューコマンド本体が入力される。例えば、メニューコマンド[ESC]ＪＧの場合、キーボード３３の「Ｊ」キー及び「Ｇ」キーを押下することにより入力される。
【００７１】
[ENTER]は、送信パケットＤ４の送信の終了を示すものである。[ENTER]は、ENTERキーコードの「０ｘ０Ｄ」のエンド文字である。
【００７２】
図６の（Ｂ）は、メニューコマンド[ESC]Ｕ２の送信パケットＤ４の構成例である。図６の（Ｂ）に示すように、Lengthには、「５」が入力される。これは、送信パケットＤ４のデータ長さが５バイトであるためである。その後、[ESC]が入力されて、文字１及び文字２に対応して、「Ｕ」及び「２」が入力される。最後に、[Enter]が入力されて、送信パケットＤ４がHIDホスト２０からコードスキャナ３１へ送信される。すると、コードスキャナ３１は、メニューコマンド[ESC]Ｕ２を受信して、当該コードスキャナ３１のインタフェースがRS232Cに変更される設定がなされる。
【００７３】
図６の（Ｃ）は、他のメニューコマンドの送信例であり、メニューコマンド[ESC]Ｚの送信パケットＤ４の構成例である。図６の（Ｃ）に示すように、Lengthには、「４」が入力される。これは、送信パケットＤ４のデータ長さが４バイトであるためである。その後、[ESC]が入力されて、文字１に対応して、「Ｚ」が入力される。最後に、[Enter]が入力されて、送信パケットＤ４がHIDホスト２０からコードスキャナ３１へ送信される。すると、コードスキャナ３１は、コードを読み取るように動作する。
【００７４】
このように、本実施例に係るデータ送信方法によれば、送信データＤ３の代わりに当該送信データＤ３を集めた、コードスキャナ３１のメニューコマンドを含む送信パケットＤ４を生成し、該生成した送信パケットＤ４をHIDホスト２０からコードスキャナ３１へ送信する。これにより、インタフェースがUSB-HIDであっても、HIDホスト２０から送信された送信パケットＤ４によって所望のメニューコマンドをコードスキャナ３１に設定することができる。
【００７５】
なお、第１及び第２の実施例では、キーボード３３による文字入力により送信データＤ３及び送信パケットＤ４を生成する説明をしたが、これに限定されず、送信データＤ３及び送信パケットＤ４はプログラムにより生成しても構わない。これにより、HIDホスト２０からUSB機器３０へのデータ送信速度が向上する（実際には、前述の0.2bpsから100bpsまで向上した）。また、HIDホスト２０からUSB機器３０へのデータ送信に関して調歩することができ、最適速度が算出可能となる。
【００７６】
また、本発明は、USB-HIDに限定されず、入力装置からＰＣへデータを送信する一方向データ通信型であって、ＰＣから入力装置へステータス情報のみ送信することができるインタフェース（例えば、Keyboard wedge等）であれば、適用可能である。
【符号の説明】
【００７７】
１０・・・ＰＣ、２０・・・HIDホスト、２１・・・アプリケーション、２２・・・HIDクラスドライバ、２３・・・HUBクラスドライバ、２４・・・USBドライバ、２５・・・ホストコントローラドライバ、２６・・・HUB、３０・・・USB機器、３１・・・コードスキャナ、３２・・・ハンディターミナル、３３・・・キーボード、３４・・・マウス、Ｄ１・・・入力データ、Ｄ２・・・ステータス情報、Ｄ３・・・送信データ、Ｄ４・・・送信パケット
【図１】
2012014426.tif 000003
【図２】
2012014426.tif 000004
【図３】
2012014426.tif 000005
【図４】
2012014426.tif 000006
【図５】
2012014426.tif 000007
【図６】
2012014426.tif 000008