説明

データ送信方法及びデータ送信システム

【課題】USB-HIDのインタフェースを用いて、PCからコードスキャナへメニューコマンドを送信して当該コードスキャナを設定することができるようにする。
【解決手段】HIDホスト及びコードスキャナは、USB-HIDのインタフェースを介して接続される。これを前提にして、HIDホストは、複数のステータス情報(Caps Lock、Num Lock及びScroll LockのON/OFF状態を含む情報)に基づいて送信データD3を生成し、該生成した送信データD3をコードスキャナに送信する。これにより、インタフェースがUSB-HIDであっても、HIDホストから送信された送信データD3でコードスキャナの各種設定をすることができるようになる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ホストと入力装置とがUSB-HIDのインタフェースで接続され、ホストの状態を示すステータス情報が当該ホストから入力装置へ送信されるデータ送信方法及びデータ送信システムに関するものである。
【背景技術】
【0002】
バーコードや二次元コード等のコード記号を読み取るコードスキャナには、一般に、当該コードスキャナを各種設定するためのメニューが用意されている。このメニューには、例えば、特定のコードのみを読み取る設定や、当該コードスキャナの動作を確認するための設定等が記述されている。
【0003】
このようなメニューに記述された設定をコードスキャナに実行させるには2つの方法がある。1つは、メニューコードと呼ばれるコード記号を当該コードスキャナで読み取って設定する方法である。このメニューコードは、コードスキャナメーカーによってコードスキャナの設定の数(例えば、数百種類程度)だけ予め用意されている。用意されているメニューコード以外の設定を実行したい場合には、パーソナルコンピュータ(以下、「PC」という)に接続されたキーボード等で文字を入力することによりメニューコードを新たに生成することが可能である。
【0004】
もう1つの方法は、インタフェースを介してPCからコードスキャナへメニューコマンドを送信する方法である。メニューコマンドとは、メニューに記述された設定を実行するための、予め規定された文字列である。例えば、メニューコマンドには[ESC]JGというようなコマンドがあり、「ESC」キー、「J」キー、「G」キーの順番でキーボードのキーを押下すると、その文字列(メニューコード)がコードスキャナへ送信されて、当該コードスキャナに「JANコードのみを読み取る」という設定がなされる。
【0005】
ところで、一般に、PCとマウス及びキーボード等の入力装置とを接続して、当該PC及び入力装置間でデータ通信を行うインタフェースには、双方向通信型のRS232C、USB-COM(Universal Serial Bus-Communication)、一方向通信型のKeyboard wedge、USB-HID(Universal Serial Bus-Human Interface Device)等がある(例えば、特許文献1)。コードスキャナも上述の入力装置と同様に、RS232C、USB-COM、Keyboard wedge及びUSB-HID等のインタフェースが使用可能である(例えば、特許文献2)。近年、特に、USB-HIDは、数多くインタフェースとして使用されており、様々な通信方法が考えられている(例えば、特許文献3)。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2005−275957号公報
【特許文献2】特開2008−40955号公報
【特許文献3】特開平11−194988号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
上述のようなメニューコードをコードスキャナで読み取って、当該コードスキャナを設定する場合、ユーザは数百種類も存在するメニューコードから所望のメニューコードを探索するという煩雑な作業をしなければならない。また、コードスキャナの設定の1つに、紫外線を照射すると発光する塗料で形成されたコード記号のみを読み取るような設定があり、コードスキャナを当該設定にした場合、一般のメニューコードは白及び黒で生成されたコード記号であるので、通常のコード記号を読み取る設定に戻すことが困難である(通常のコード記号を読み取る設定に戻すコード記号を紫外線発光の塗料で形成すれば良いが、それを実現することができるプリンタ等を用意しなくてはならない。)。
【0008】
また、双方向通信型のRS232Cや、USB-COMではPCからコードスキャナへメニューコマンドを送信することができるが、一方向通信型のUSB-HIDではコードスキャナからPCへのデータ送信のみであり、PCからコードスキャナへのデータ送信方法は存在しない。USB-HIDは、上述のように、近年、数多くインタフェースとして使用されていることから、PCからコードスキャナへUSB-HIDのインタフェースを介してデータ送信することが望まれている。
【0009】
そこで、本発明は、一方向通信型のUSB-HIDのインタフェースを用いて、PCからコードスキャナへデータ(例えば、メニューコマンド等)を送信することができ、該送信されたデータに基づいてコードスキャナを設定することができるデータ送信方法及びデータ送信システムを提供することを目的とする。
【課題を解決するための手段】
【0010】
上述の課題を解決するために、本発明に係るデータ送信方法は、ホストの状態を示すステータス情報が当該ホストから入力装置へ送信されるデータ送信方法であって、ホストが、複数のステータス情報に基づいて送信データを生成し、該生成した送信データを入力装置に送信することを特徴とするものである。
【0011】
本発明に係るデータ送信方法では、ホストの状態を示すステータス情報が当該ホストから入力装置へ送信される。例えば、ステータス情報とは、Caps Lock、Num Lock及びScroll LockのON/OFF状態を含む情報である。また、ホスト及び入力装置は、USB-HIDのインタフェースを介して接続される。これを前提にして、ホストは、複数のステータス情報に基づいて送信データを生成し、該生成した送信データを入力装置に送信する。これにより、インタフェースがUSB-HIDであっても、ホストから送信された送信データで入力装置の各種設定をすることができるようになる。
【0012】
また、本発明に係るデータ送信システムは、ホストの状態を示すステータス情報が当該ホストから入力装置へ送信されるデータ送信システムであって、ホストが、複数のステータス情報に基づいて送信データを生成し、該生成した送信データを入力装置に送信することを特徴とするものである。
【発明の効果】
【0013】
本発明に係るデータ送信方法及びデータ送信システムによれば、入力装置にコードスキャナを使用した場合に、当該コードスキャナを設定するためのメニューコードが不要になる。この結果、メニューコードを読み取ってコードスキャナを設定するような煩雑な作業を削減することができる。
【図面の簡単な説明】
【0014】
【図1】HIDホスト20及びUSB機器30の接続例を示すブロック図である。
【図2】HIDホスト20の動作例を示すシーケンス図である。
【図3】ステータス情報D2の構成例を示す説明図である。
【図4】第1の実施例に係る送信データD3の送信例をタイミングチャートである。
【図5】第2の実施例に係るメニューコマンドの設定例を示す説明図である。
【図6】送信パケットD4の構成例を示す説明図である。
【発明を実施するための形態】
【0015】
[USBホスト20及びUSB機器30の接続例]
まずは、USB-HIDの典型的な構成であるHIDホスト20の構成例について説明する。
図1に示すように、パーソナルコンピュータ(以下、「PC10」という)にはUSB-HIDホスト(以下、「HIDホスト20」という)が搭載され、入力装置であるUSB機器30とHUB26を介して接続されて、本発明のデータ送信システムを構成している。
【0016】
HIDホスト20は、アプリケーション21、クラスドライバであるHIDクラスドライバ22及びHUBクラスドライバ23、USBドライバ24及びホストコントローラドライバ25の階層から構成される。
【0017】
アプリケーション21は、USB機器30を利用したアプリケーション・ソフトウェア層である。アプリケーション・ソフトウェアとは、PC10のユーザが当該PC10上で実行したい作業を実施する機能を直接的に有するソフトウェアである。
【0018】
HIDクラスドライバ22及びHUBクラスドライバ23は、PC10に接続されるUSB機器30のクラスに対応したエンドポイントの管理や通信プロトコル処理を行うドライバ層である。
【0019】
USBドライバ24は、USBとしての基本的な動作を行い、コントローラやクラスに依存しないUSBの理論的な通信制御処理を受け持つドライバ層である。また、USBドライバ24は、USB機器30の接続と転送等の管理機能も備えている。具体的には、USBドライバ24は、各USB機器30のUSBアドレスを管理し、各USB機器30のエンドポイントの状態を監視する。そして、USBドライバ24は、その監視により、USB機器30の接続状態に変化があった場合に、各種必要な処理を提供する。
【0020】
ホストコントローラドライバ25は、ハードウェア(チップ)で実現されるホストコントローラのドライバ層であり、上位のUSBドライバ24からハードウェアを抽象化する。例えば、ホストコントローラドライバ25は、コントローラに対するI/O処理、割り込み処理及びコントローラに依存するスケジューリング処理を行う。
【0021】
USB機器30は、例えば、コードスキャナ31、ハンディターミナル32、キーボード33又はマウス34等で構成されており、これらはいずれもUSB-HIDのインタフェースを備えている。
【0022】
コードスキャナ31は、バーコードや二次元コード等のコード記号を光学的に読み取る装置である。コードスキャナ31は、コード記号を読み取ると、該読み取ったコード記号を光電変換して入力データD1としてHUB26を介してHIDホスト20に送信する。
【0023】
ハンディターミナル32は、所定のサーバと通信可能で、例えば、在庫管理等に使用される、ユーザが携帯可能な端末装置である。ハンディターミナル32は、ユーザによって入力された入力データD1を、HUB26を介してHIDホスト20に送信する。
【0024】
キーボード33は、複数のキー(例えば、アルファベットキー、ESCキー、ENTERキー、Caps Lockキー、Num Lockキー及びScroll Lockキー等)を有し、このキーが押下されることにより所望の文字を入力するものである。キーボード33は、ユーザがキーを押下すると、該押下した文字に対応した文字情報を含む入力データD1を、HUB26を介してHIDホスト20に送信する。
【0025】
マウス34は、ユーザによって水平に移動されると、ボール、LED又はレーザー等を利用したセンサにより当該移動を検知し、2次元の移動距離をコンピュータへ入力するポインティングデバイスである。マウス34は、移動距離を含む情報を入力データD1としてHUB26を介してHIDホスト20に送信する。
【0026】
[USB機器30からHIDホスト20へのデータ送信例]
次に、USB機器30からHIDホスト20へのデータ送信の一例であるインタラプト転送について説明する。図2に示すように、HIDクラスドライバ22又はHUBクラスドライバ23がUSBドライバ24及びホストコントローラドライバ25にインタラプト転送を設定する。
【0027】
インタラプト転送が設定されると、USBドライバ24及びホストコントローラドライバ25は、HUB26に向けて定期的にインタラプトINトークン(インタラプト転送の要求)を投げるように設定する。これにより、インタラプト転送がNAK以外の結果(例えば、ACK、又はエラー)となったときに、指定した関数をコールバックするように設定することができる。
【0028】
HUB26は、USB機器30の接続が切り離されるまで常にHIDホスト20に監視される。HUB26は、当該HUB26に変化がない限り、インタラプトINトークンがくるたびにエンドポイントとしてNAKを返す。最初のインタラプトINトークンから次のインタラプトINトークンまでの間をインタラプト転送インターバルと呼ぶ。
【0029】
HUB26は、USB機器30の状態に変化があった場合、例えば、USB機器30が当該HUB26から着脱されたことを検出した場合、エンドポイントとしてNAKの代わりに「Hub and Port Status Change Bitmap」をUSBドライバ24及びホストコントローラドライバ25へ返す。
【0030】
「Hub and Port Status Change Bitmap」を受信したUSBドライバ24及びホストコントローラドライバ25は、ACKをHUB26に返す。そして、USBドライバ24及びホストコントローラドライバ25は、HIDクラスドライバ22又はHUBクラスドライバ23にコールバックされて、「Hub and Port Status Change Bitmap」が取り出される。HIDクラスドライバ22又はHUBクラスドライバ23は、取り出した「Hub and Port Status Change Bitmap」を、アプリケーション21に出力することにより、各種処理が実行される。
【0031】
アプリケーション21が各種処理を実行している状態で、HIDクラスドライバ22又はHUBクラスドライバ23からUSBドライバ24及びホストコントローラドライバ25を介してHUB26へデータを要求して、USB機器30からHUB26、ホストコントローラドライバ25及びUSBドライバ24を介して入力データD1がHUBクラスドライバ23に送信される。このとき、USBドライバ24及びホストコントローラドライバ25からHUB26へACKが返される。
【0032】
このような方法により、USB機器30からHIDホスト20(PC10)へ入力データD1が送信される。しかしながら、USB-HIDのインタフェースではPC10からUSB機器30にデータを送信することができない。そこで、以下に述べるように、HIDクラスドライバ22から出力されるステータス情報D2によって、HIDホスト20からUSB機器30にデータを送信する本発明のデータ送信方法について説明する。
【実施例1】
【0033】
[HIDホスト20からUSB機器30へのステータス情報D2の送信例]
まずは、第1の実施例として、HIDクラスドライバ22から出力されるステータス情報D2について説明する。図3に示すように、ステータス情報D2は、Caps Lock、Num Lock及びScroll LockのON/OFF状態を含む情報であり、Caps LockビットD21、Num LockビットD22、Scroll LockビットD23及び空ビットD24で構成される。Caps LockビットD21、Num LockビットD22、Scroll LockビットD23は、それぞれ1ビットで構成され、空ビットD24は、5ビットで構成される。つまり、ステータス情報D2は、8ビット(1バイト)で構成される。
【0034】
Caps LockビットD21は、例えば、キーボード33のCaps Lockキーを押下する毎に「1」、「0」が切り替わる。つまり、Caps LockのON/OFF状態(有効/無効状態)が切り替わる。Caps Lockとは、一般に、ON状態のときに、キーボード33により入力されるアルファベットを小文字から大文字に変わる機能である。
【0035】
Num LockビットD22は、キーボード33のNum Lockキーを押下する毎に「1」、「0」が切り替わり、Num LockのON/OFF状態が切り替わる。Num Lockとは、一般に、ON状態のときに、キーボード33が有しているテンキーから数字入力が可能になり、OFF状態のときに、テンキーからカーソル入力(矢印や、Home及びEnd等)が可能になる機能である。
【0036】
Scroll LockビットD23は、キーボード33のScroll Lockキーを押下する毎に「1」、「0」が切り替わり、Scroll LockのON/OFF状態が切り替わる。Scroll Lockとは、一般に、ON状態のときに、画面のスクロールがロックされる機能である。空ビットD24は、常に「0」となるものである。
【0037】
このようなステータス情報D2が、HIDクラスドライバ22によって生成されて、HUB26を介して図示しないSETUPというトークンでUSB機器30に出力される。USB機器30は、HIDクラスドライバ22から出力されたステータス情報D2を受信することにより、他のUSB機器30の状態をHIDホスト20を介して把握することができる。ステータス情報D2は、PC10の電源を投入したときや、キーボード33のCaps Lockキー、Num Lockキー又はScroll Lockキーのいずれかが押下されたときに、HIDクラスドライバ22からUSB機器30へ出力される。
【0038】
[HIDホスト20からUSB機器30への送信データD3の送信例]
本発明は、HIDホスト20からUSB機器30へ送信することができるステータス情報D2に着目して見出されたものである。具体的なデータ送信方法を以下に示す。
【0039】
HIDホスト20は、複数のステータス情報D2に基づいて送信データD3を生成し、該生成した送信データD3を、図1に示すように、HUB26を介してUSB機器30に送信する。
【0040】
図4の(A)に示すように、送信データD3は、例えば、Bit7〜Bit0で構成される。送信データD3の各ビットには、ステータス情報D2が格納されている。
【0041】
Bit7〜Bit0には、USB機器30に入力される8ビット(1バイト)の情報が格納される。Bit7〜Bit0は、Num LockビットD22又はScroll LockビットD23のいずれかが「1」となる。例えば、Bit7〜Bit0に「0」を入れたいときには、Num LockビットD22を「1」にする。つまり、キーボード33のNum Lockキーを押下する。また、Bit7〜Bit0に「1」を入れたいときには、Scroll LockビットD23を「1」にする。つまり、キーボード33のScroll Lockキーを押下する。
【0042】
このように、送信データD3は、Caps Lock、Num Lock及びScroll LockのON/OFF状態の組み合わせにより生成され、具体的には、キーボード33のCaps Lockキー、Num Lockキー及びScroll Lockキーを、モールス信号で生成される電報のように、所定の間隔及び所定の順番で押下することにより生成される。所定の間隔及び所定の順番は、本実施例に限定されず、適宜変更可能である。
【0043】
上述のBit7〜Bit0で構成された送信データD3をUSB機器30に送信する場合、まず、キーボード33のCaps Lockキーを1回押下すると、それがトリガーとなり、送信データD3の送信動作が開始される。
【0044】
Bit7〜Bit0に対応して、Num Lockキー又はScroll Lockキーを押下して、送信データD3を作成する。
【0045】
その後、Check1ビットに「0」又は「1」が入力される。Check1ビットは、イーブンパリティが用いられ、Bit7〜Bit0に入力された「1」又は「0」の数が奇数のときに「1」が入力され、偶数のときに「0」が入力される。この具体例については後述する。Check1ビットが入力された後は、Check0ビットに常に「0」が入力される。
【0046】
Check0ビットに「0」が入力された後は、送信データD3の送信を終了するために、キーボード33のCaps Lockキーを1回押下する。
【0047】
次に、HIDホスト20からUSB機器30への送信データD3の送信について説明する。図4の(B)は、「10110101」という情報が含まれた送信データD3を送信する説明図である。図4の(B)に示すように、HIDホスト20からUSB機器30へ送信データD3を送信する場合、まず、STARTビットに「1」を入力するために、キーボード33のCaps Lockキーを押下する。すると、HIDホスト20は、送信データD3を生成する準備に入る。
【0048】
その後、Bit7に「1」を入力するために、キーボード33のScroll Lockキーを押下する。Bit6に「0」を入力するために、キーボード33のNum Lockキーを押下する。Bit5に「1」を入力するために、キーボード33のScroll Lockキーを押下する。Bit4に「1」を入力するために、キーボード33のScroll Lockキーを押下する。Bit3に「0」を入力するために、キーボード33のNum Lockキーを押下する。Bit2に「1」を入力するために、キーボード33のScroll Lockキーを押下する。Bit1に「0」を入力するために、キーボード33のNum Lockキーを押下する。Bit0に「1」を入力するために、キーボード33のScroll Lockキーを押下する。
【0049】
Bit7〜Bit0は、「10110101」が入力され、「0」の数が3つ、「1」の数が5つであり、「0」の数及び「1」の数がともに奇数であるので、Check1ビットに「1」を入力する。つまり、キーボード33のScroll Lockキーを押下する。そして、Check0ビットに「0」を入力するために、キーボード33のNum Lockキーを押下する。
【0050】
Bit7〜Bit0の「0」又は「1」の数が奇数のときにCheck1ビットに「1」を入力する理由は、Scroll Lockの状態を通常の状態(OFF状態)に戻すためである。つまり、キーボード33のCaps Lockキー、Num Lockキー及びScroll Lockキーは、通常、文字入力する際に使用されるものであるので、奇数回押下すると、ON状態となり、当該キーボード33の入力状態が変わってしまう。例えば、Scroll Lockキーを奇数回押下すると、Scroll Lockの状態がON状態になり、画面のスクロールが固定され、偶数回押下すると、Scroll Lockの状態がOFF状態になり、画面のスクロールの固定が解除される。
【0051】
Check0ビットに必ず「0」を入力する理由は、Num Lockの状態を通常の状態(OFF状態)に戻すためである。つまり、Bit7〜Bit0の「0」又は「1」の数が奇数のときには、キーボード33のNum Lockキーは、奇数回押下されてNum LockがON状態になっているので、Check0ビット入力時にNum Lockキーを1回押下することにより、Num LockがOFF状態に戻る。また、Bit7〜Bit0の「0」又は「1」の数が偶数のときには、Check1ビットに「0」が入力されるため、Bit7〜Bi0、Check1ビットが入力されるまでにNum Lockキーは奇数回押下されてNum LockがON状態になっている。このため、Check0ビット入力時にNum Lockキーを1回押下することにより、Num LockがOFF状態に戻る。
【0052】
Check1ビット及びcheck0ビットが入力されたら、最後に、キーボード33のCaps Lockキーを押下して、STOPビットに「1」を入力する。すると、HIDホスト20は、「10110101」の情報が含まれる送信データD3を生成して、該生成した送信データD3をUSB機器30に送信する。
【0053】
因みに、送信データD3をUSB機器30に送信する際、キーボード33のCaps Lockキー、Num Lockキー及びScroll Lockキーを押下する時間間隔(遅延時間)は、例えば、5秒以下とする。5秒よりキーの押下する時間間隔が長くなったら、タイムアウトとみなす。従って、送信データD3の最低送信速度は0.2bpsとなる。また、複数の送信データD3をUSB機器30に送信する際に、各送信データD3間の時間間隔は特に制限しない。
【0054】
次に、HIDホスト20が、「01001011」という情報が含まれる送信データD3をUSB機器30に送信する例について説明する。図4の(C)は、「01001011」という情報が含まれた送信データD3を送信する説明図である。図4の(C)に示すように、HIDホスト20からUSB機器30へ送信データD3を送信する場合、まず、STARTビットに「1」を入力するために、キーボード33のCaps Lockキーを押下する。すると、HIDホスト20は、送信データD3を生成する準備に入る。
【0055】
その後、Bit7に「0」を入力するために、キーボード33のNum Lockキーを押下する。Bit6に「1」を入力するために、キーボード33のScroll Lockキーを押下する。Bit5に「0」を入力するために、キーボード33のNum Lockキーを押下する。Bit4に「0」を入力するために、キーボード33のNum Lockキーを押下する。Bit3に「1」を入力するために、キーボード33のScroll Lockキーを押下する。Bit2に「0」を入力するために、キーボード33のNum Lockキーを押下する。Bit1に「1」を入力するために、キーボード33のScroll Lockキーを押下する。Bit0に「1」を入力するために、キーボード33のScroll Lockキーを押下する。
【0056】
Bit7〜Bit0には、「01001011」が入力され、「0」の数が4つ、「1」の数が4つであり、「0」の数及び「1」の数がともに偶数であるので、Check1ビットに「0」を入力する。つまり、キーボード33のNum Lockキーを押下する。そして、Check0ビットに「0」を入力するために、キーボード33のNum Lockキーを押下する。
【0057】
Check1ビット及びcheck0ビットが入力されたら、最後に、キーボード33のCaps Lockキーを押下して、STOPビットに「1」を入力する。すると、HIDホスト20は、「01001011」の情報が含まれる送信データD3を生成して、該生成した送信データD3をUSB機器30に送信する。
【0058】
このように、第1の実施例に係るデータ送信方法によれば、HIDホスト20の状態を示すステータス情報D2が当該HIDホスト20からUSB機器30へ送信される。例えば、ステータス情報D2とは、Caps Lock、Num Lock及びScroll LockのON/OFF状態を含む情報である。また、HIDホスト20及びUSB機器30は、USB-HIDのインタフェースを介して接続される。これを前提にして、HIDホスト20は、複数のステータス情報D2に基づいて送信データD3を生成し、該生成した送信データD3をUSB機器30に送信する。これにより、インタフェースがUSB-HIDであっても、HIDホスト20から送信された送信データD3でUSB機器30の各種設定をすることができるようになる。
【0059】
従って、USB機器30がコードスキャナ31の場合、当該コードスキャナ31を設定するためのメニューコードが不要になる。この結果、メニューコードを読み取ってコードスキャナ31を設定するような煩雑な作業を削減することができる。また、USB-HIDを使用してHIDホスト20及びUSB機器30間を双方向データ送信するので、従来のRS232C等のインタフェースを使用したデータ送信方法及びデータ送信システムに比べて、データ転送速度が向上し、多量のデータ転送が可能になる。
【0060】
なお、本実施例では、図4でSTARTビット及びSTOPビットに「1」を入力するときにはCaps Lockキーを押下し、Bit7〜Bit0、Check1ビット及びCheck0ビットに「0」を入力するときにはNum Lockキーを押下して、Bit7〜Bit0及びCheck1ビットに「1」を入力するときにはScroll Lockキーを押下する説明をしたが、これに限定されず、Caps Lockキー、Num Lockキー及びScroll Lockキーの役割を交換しても構わない。
【実施例2】
【0061】
本実施例では、第1の実施例で説明した1バイトの情報が含まれる送信データD3を複数集めた送信パケットD4をコードスキャナ31に送信するデータ送信方法について説明する。前述の第1の実施例と同じ名称及び符号のものは同じ機能を有するので、その説明を省略する。
【0062】
本実施例で説明する送信パケットD4は、送信データD3を集めたものであり、当該送信パケットD4にはコードスキャナ31を設定するためのメニューコマンドが含まれる。メニューコマンドとは、例えばコードスキャナメーカーが予め作成したメニューに記述された設定を実行するためのコマンドであり、所定の文字列で構成される。
【0063】
メニューコマンドは、キーボード33の「ESC」キーが文字入力のトリガーとなり、この「ESC」を押下した後に、所望の文字キーを押下すると、キーボード33からHIDホスト20に向かって送信される。そして、HIDホスト20は、メニューコマンドが含まれる送信パケットD4を生成し、図1に示すように、該生成した送信パケットD4をコードスキャナ31に送信する。
【0064】
[メニューコマンドの設定例]
図5にメニューコマンドの一例を示す。メニューコマンド[ESC]Bは、コードスキャナ31の動作を確認するためのコマンドである。メニューコマンド[ESC]JGは、コードスキャナ31にJANコードのみを読み取らせるためのコマンドである。メニューコマンド[ESC]U2は、コードスキャナ31のインタフェースをRS232Cに変更するためのコマンドである。
【0065】
メニューコマンド[ESC]Zは、コードスキャナ31がコードを読み取るためのコマンドである。このメニューコマンドが入力されると直ぐにコードスキャナ31は、コード読み取り動作を開始する。メニューコマンド[ESC]Z1は、PC10又はコードスキャナ31の図示しないRAM及びROM等で構成される記憶部に記憶されたバージョンナンバーを出力するコマンドである。このバージョンナンバーは、コードスキャナ31本体のバージョンナンバーであっても良いし、コードスキャナ31にインストールされているソフトのバージョンナンバーであっても良い。
【0066】
メニューコマンド[ESC]Z2は、コードスキャナ31の現在の設定を記憶部に記憶するコマンドである。例えば、メニューコマンド[ESC]JGが入力された後に、メニューコマンド[ESC]Z2を入力すると、コードスキャナ31は、JANコードのみを読み取るという設定を記憶部に記憶する。メニューコマンド[ESC]Z3は、コードスキャナ31の現在の設定を出力するコマンドである。つまり、メニューコマンド[ESC]Z2を入力されてコードスキャナ31の記憶部に記憶された設定を、例えば、HUB26を介してPC10に出力する。
【0067】
[送信パケットD4の送信例]
次に、送信パケットD4の送信例について説明する。図6の(A)に示すように、送信パケットD4は、Length、[ESC]、文字1、文字2、・・・、文字n及び[Enter]で構成される。Length、[ESC]、文字1、文字2、・・・、文字n及び[Enter]は、それぞれ1バイトのデータ量を有するものである。
【0068】
Lengthは、送信パケットD4のデータ長さ(データサイズ)を表すものである。例えば、送信パケットD4のデータサイズが8バイトであれば、キーボード33で「8」を入力する。例えば、最大127バイトのデータサイズまで入力可能である。
【0069】
[ESC]は、送信パケットD4を送信する際の開始を示すものである。[ESC]は、Escapeキーコードの「0x1B」のスタート文字である。
【0070】
文字1、文字2、・・・、文字nには、メニューコマンド本体が入力される。例えば、メニューコマンド[ESC]JGの場合、キーボード33の「J」キー及び「G」キーを押下することにより入力される。
【0071】
[ENTER]は、送信パケットD4の送信の終了を示すものである。[ENTER]は、ENTERキーコードの「0x0D」のエンド文字である。
【0072】
図6の(B)は、メニューコマンド[ESC]U2の送信パケットD4の構成例である。図6の(B)に示すように、Lengthには、「5」が入力される。これは、送信パケットD4のデータ長さが5バイトであるためである。その後、[ESC]が入力されて、文字1及び文字2に対応して、「U」及び「2」が入力される。最後に、[Enter]が入力されて、送信パケットD4がHIDホスト20からコードスキャナ31へ送信される。すると、コードスキャナ31は、メニューコマンド[ESC]U2を受信して、当該コードスキャナ31のインタフェースがRS232Cに変更される設定がなされる。
【0073】
図6の(C)は、他のメニューコマンドの送信例であり、メニューコマンド[ESC]Zの送信パケットD4の構成例である。図6の(C)に示すように、Lengthには、「4」が入力される。これは、送信パケットD4のデータ長さが4バイトであるためである。その後、[ESC]が入力されて、文字1に対応して、「Z」が入力される。最後に、[Enter]が入力されて、送信パケットD4がHIDホスト20からコードスキャナ31へ送信される。すると、コードスキャナ31は、コードを読み取るように動作する。
【0074】
このように、本実施例に係るデータ送信方法によれば、送信データD3の代わりに当該送信データD3を集めた、コードスキャナ31のメニューコマンドを含む送信パケットD4を生成し、該生成した送信パケットD4をHIDホスト20からコードスキャナ31へ送信する。これにより、インタフェースがUSB-HIDであっても、HIDホスト20から送信された送信パケットD4によって所望のメニューコマンドをコードスキャナ31に設定することができる。
【0075】
なお、第1及び第2の実施例では、キーボード33による文字入力により送信データD3及び送信パケットD4を生成する説明をしたが、これに限定されず、送信データD3及び送信パケットD4はプログラムにより生成しても構わない。これにより、HIDホスト20からUSB機器30へのデータ送信速度が向上する(実際には、前述の0.2bpsから100bpsまで向上した)。また、HIDホスト20からUSB機器30へのデータ送信に関して調歩することができ、最適速度が算出可能となる。
【0076】
また、本発明は、USB-HIDに限定されず、入力装置からPCへデータを送信する一方向データ通信型であって、PCから入力装置へステータス情報のみ送信することができるインタフェース(例えば、Keyboard wedge等)であれば、適用可能である。
【符号の説明】
【0077】
10・・・PC、20・・・HIDホスト、21・・・アプリケーション、22・・・HIDクラスドライバ、23・・・HUBクラスドライバ、24・・・USBドライバ、25・・・ホストコントローラドライバ、26・・・HUB、30・・・USB機器、31・・・コードスキャナ、32・・・ハンディターミナル、33・・・キーボード、34・・・マウス、D1・・・入力データ、D2・・・ステータス情報、D3・・・送信データ、D4・・・送信パケット

【特許請求の範囲】
【請求項1】
ホストの状態を示すステータス情報が当該ホストから入力装置へ送信されるデータ送信方法であって、
前記ホストが、複数の前記ステータス情報に基づいて送信データを生成し、該生成した送信データを前記入力装置に送信することを特徴とするデータ送信方法。
【請求項2】
前記ステータス情報は、
Caps Lock、Num Lock及びScroll LockのON/OFF状態を含む情報であり、
前記送信データは、
前記Caps Lock、Num Lock及びScroll LockのON/OFF状態の組み合わせにより生成されることを特徴とする請求項1に記載のデータ送信方法。
【請求項3】
前記入力装置は、Caps Lockキー、Num Lockキー及びScroll Lockキーを有し、
前記送信データは、
前記入力装置のCaps Lockキー、Num Lockキー及びScroll Lockキーを所定の間隔及び所定の順番で押下することにより生成されることを特徴とする請求項1又は2に記載のデータ送信方法。
【請求項4】
前記送信データは、
前記入力装置を設定するためのメニューコマンドを含む送信パケットとして生成されることを特徴とする請求項1乃至3のいずれかに記載のデータ送信方法。
【請求項5】
前記ホスト及び前記入力装置は、
USB-HIDのインタフェースを介して接続されることを特徴とする請求項1乃至4のいずれかに記載のデータ送信方法。
【請求項6】
前記入力装置は、
キーボード、マウス、ハンディターミナル又はコードスキャナのいずれかであることを特徴とする請求項1乃至5のいずれかに記載のデータ送信方法。
【請求項7】
ホストの状態を示すステータス情報が当該ホストから入力装置へ送信されるデータ送信システムであって、
前記ホストが、複数の前記ステータス情報に基づいて送信データを生成し、該生成した送信データを前記入力装置に送信することを特徴とするデータ送信システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2012−14426(P2012−14426A)
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願番号】特願2010−150228(P2010−150228)
【出願日】平成22年6月30日(2010.6.30)
【出願人】(391062872)株式会社オプトエレクトロニクス (70)
【Fターム(参考)】