(57)【要約】【課題】パラメータの開始位置が不定の受信データの復号化を行う。【解決手段】通信部１０８が受信した受信データが、抽出対象のパラメータの開始位置が所定の規則で定義された位置に一致し、定義に従ったインデックス復号化が可能なデータであるか、パラメータの開始位置が定義された位置と異なりインデックス復号化ができないデータであるかを復号化判定部１０６が判定し、インデックス復号化が可能な場合は復号化部１０５が定義されているパラメータの開始位置から復号化を行ってパラメータを抽出し、インデックス復号化ができない場合は詳細復号化部１０２がパラメータの直前に配置されているデータ長識別子の先頭ビットの値によりデータ長識別子の長さを判断してパラメータの開始位置を導出し、導出した開始位置から復号化を行ってパラメータを抽出する。【選択図】図１
2010287962.tif 000002
【特許請求の範囲】
【請求項１】
符号化されているパラメータデータと前記パラメータデータのデータ長が示される符号化されているデータ長識別子とが含まれ、前記データ長識別子に続いて前記パラメータデータが配置され、前記パラメータデータの開始位置が不定であり、前記データ長識別子の先頭ビットの値により前記データ長識別子のデータ長が判別可能な不定受信データを受信するデータ受信部と、
前記不定受信データにおいて前記データ長識別子の先頭ビットを抽出し、前記データ長識別子の先頭ビットの値に基づいて前記データ長識別子のデータ長を判断して前記パラメータデータの開始位置を判定し、判定した前記パラメータデータの開始位置から前記データ長識別子を復号して得られるデータ長分のビット列を復号し、復号後のパラメータデータを抽出する不定受信データ復号化部とを有することを特徴とする情報処理装置。
【請求項２】
前記不定受信データ復号化部は、
前記不定受信データに含まれる前記データ長識別子の先頭ビットの値に基づいて前記データ長識別子のデータ長を判断して前記データ長識別子を復号し、復号結果から前記パラメータデータのデータ長を得ることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記データ受信部は、
パラメータデータの開始位置が所定の規則で定義されている基準位置に一致する定義受信データを受信する場合があり、
前記情報処理装置は、更に、
前記データ受信部により受信された受信データが定義受信データ及び不定受信データのいずれであるかを判別する受信データ判別部と、
前記受信データ判別部により受信データが定義受信データと判定された場合に、前記定義受信データにおいて前記基準位置から前記規則で定義されているデータ長分のビット列を復号し、復号後のパラメータデータを抽出する定義受信データ復号化部とを有し、
前記不定受信データ復号化部は、
前記受信データ判別部により受信データが不定受信データと判定された場合に、前記不定受信データにおいて前記データ長識別子の先頭ビットを抽出し、前記データ長識別子の先頭ビットの値に基づいて前記データ長識別子のデータ長を判断して前記パラメータデータの開始位置を判定し、判定した前記パラメータデータの開始位置から前記データ長識別子を復号して得られるデータ長分のビット列を復号し、復号後のパラメータデータを抽出することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記データ受信部は、
受信データ全体のデータ長が示される符号化されている全体データ長識別子が含まれている定義受信データと不定受信データとを受信し、
前記データ受信部により受信された受信データに含まれている全体データ長識別子を復号して得られる受信データ全体のデータ長が所定のデータ長以下の場合に受信データを定義受信データと判定し、全体データ長識別子を復号して得られる受信データ全体のデータ長が前記所定のデータ長を超える場合に受信データを不定受信データと判定することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記受信データ判別部は、
前記データ受信部により受信された受信データ全体のデータ長を測定し、測定した受信データ全体のデータ長が所定のデータ長以下の場合に受信データを定義受信データと判定し、測定した受信データ全体のデータ長が前記所定のデータ長を超える場合に受信データを不定受信データと判定することを特徴とする請求項３又は４に記載の情報処理装置。
【請求項６】
前記データ受信部は、
受信データ全体のデータ長が示される符号化されている全体データ長識別子が含まれている定義受信データと不定受信データとを受信し、
前記受信データ判別部は、
前記データ受信部により受信された受信データに含まれている全体データ長識別子のビット値に基づいて、受信データが定義受信データ及び不定受信データのいずれであるかを判別することを特徴とする請求項３〜５のいずれかに記載の情報処理装置。
【請求項７】
前記定義受信データ復号化部は、
前記データ受信部により受信される定義受信データにおけるパラメータデータの開始位置の基準位置が示されている定義情報を入力し、
入力した定義情報に示されている基準位置から前記データ受信部により受信された定義受信データのパラメータデータの復号を行い、復号後のパラメータデータを抽出することを特徴とする請求項３〜６のいずれかに記載の情報処理装置。
【請求項８】
前記データ受信部は、
データ長識別子に続いてパラメータデータが配置され、前記パラメータデータの開始位置が所定の規則で定義されている基準位置に一致し、前記データ長識別子の先頭ビットの値により前記データ長識別子のデータ長が判別可能な定義受信データを受信する場合があり、
前記不定受信データ復号化部は、
前記データ受信部により受信された受信データが前記定義受信データ及び前記不定受信データのいずれであっても、受信データにおいて前記データ長識別子の先頭ビットを抽出し、前記データ長識別子の先頭ビットの値に基づいて前記データ長識別子のデータ長を判断して前記パラメータデータの開始位置を判定し、判定した前記パラメータデータの開始位置から前記データ長識別子を復号して得られるデータ長分のビット列を復号し、復号後のパラメータデータを抽出することを特徴とする請求項１〜７のいずれかに記載の情報処理装置。
【請求項９】
前記情報処理装置は、更に、
前記データ受信部による受信データの受信時刻、前記不定受信データ復号化部により抽出されたパラメータデータの少なくともいずれかが示されるログデータを生成し、生成したログデータを出力するログ制御部を有することを特徴とする請求項１〜８のいずれかに記載の情報処理装置。
【請求項１０】
符号化されているパラメータデータと前記パラメータデータのデータ長が示される符号化されているデータ長識別子とが含まれ、前記データ長識別子に続いて前記パラメータデータが配置され、前記パラメータデータの開始位置が不定であり、前記データ長識別子の先頭ビットの値により前記データ長識別子のデータ長が判別可能な不定受信データをコンピュータが受信するデータ受信ステップと、
前記コンピュータが、前記不定受信データにおいて前記データ長識別子の先頭ビットを抽出し、前記データ長識別子の先頭ビットの値に基づいて前記データ長識別子のデータ長を判断して前記パラメータデータの開始位置を判定し、判定した前記パラメータデータの開始位置から前記データ長識別子を復号して得られるデータ長分のビット列を復号し、復号後のパラメータデータを抽出する不定受信データ復号化ステップとを有することを特徴とする情報処理方法。
【請求項１１】
符号化されているパラメータデータと前記パラメータデータのデータ長が示される符号化されているデータ長識別子とが含まれ、前記データ長識別子に続いて前記パラメータデータが配置され、前記パラメータデータの開始位置が不定であり、前記データ長識別子の先頭ビットの値により前記データ長識別子のデータ長が判別可能な不定受信データを受信するデータ受信処理と、
前記不定受信データにおいて前記データ長識別子の先頭ビットを抽出し、前記データ長識別子の先頭ビットの値に基づいて前記データ長識別子のデータ長を判断して前記パラメータデータの開始位置を判定し、判定した前記パラメータデータの開始位置から前記データ長識別子を復号して得られるデータ長分のビット列を復号し、復号後のパラメータデータを抽出する不定受信データ復号化処理とをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化されたデータの復号化技術に関する。
【背景技術】
【０００２】
ＵＨＦ帯リーダライタのコマンドインタフェースはＩＳＯ１５９６１で定義されている。
ＩＳＯ１５９６１ではデータ符号化方式としてＡＳＮ．１を使用している。
ＡＳＮ．１は「データ型・データ長・データ」（データ内はさらに階層的構造）というデータ構造になっており、データ長とデータは可変長である。
【０００３】
一方、組込機器を遠隔から管理できるＪａｖａ（登録商標）ベースのサービスプラットフォームとしてＯＳＧｉがある。
ＲＦＩＤ（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ  ＩＤｅｎｔｉｆｉｃａｔｉｏｎ）タグのようなデバイスをＯＳＧｉに準拠したソフトウェアから使用するには、ＯＳＧｉで定められた仕様で制御するソフトウェアが必要になる。
ＯＳＧｉ仕様を実装するためのランタイムとツールを提供するＥｃｌｉｐｓｅプラグインとしてＥｑｕｉｎｏｘがある。
Ｅｑｕｉｎｏｘでは、リーダが送信した符号化データの復号化にはインデックスを用いた手法がとられている。
これは、あらかじめ受信データに対するパラメータ定義を行い、復号化モジュールはデータ受信時にパラメータ定義に沿って復号化を行うというものである（以降、パラメータ定義に基づく復号化をインデックス復号化とよぶ）。
パラメータ定義は、取り出すパラメータデータの受信データ先頭からの位置（インデックス）、取り出す長さ、パラメータの型で定義される。
【０００４】
図３に文字列型の受信データの例を示す。
”ＩＤ＝”より後ろにあるデータがパラメータデータ（以下、パラメータともいう）となるとする。
この場合のパラメータ定義は、受信データの先頭から４文字目、文字列型、不定長のパラメータ、という定義となり、受信データ先頭から４文字目以降のデータを復号してパラメータを取り出すというインデックス復号化が行われる。
【０００５】
Ｅｑｕｉｎｏｘを用いてＩＳＯ１５９６１準拠のリーダライタ用の制御ソフトウェアを実現しようとすると、ＡＳＮ．１で符号化されたデータをインデックスによる復号化を行う必要がある。
【０００６】
図２は、ＡＳＮ．１符号化方式を採用するＲＦＩＤリーダにおけるタグＩＤの読み取りコマンドの実行結果を表すデータの例である。
データにタグ枚数とタグリストの二つのパラメータがあり、タグ枚数９９、タグリストデータの長さが３５７である（タグリストデータの長さ：３５７は、ｉｎｄｅｘ＝８〜１０の部分の下位２バイト「０１６５」の十進数表記）。
パラメータとして取得すべきなのは、タグ枚数部分のｉｎｄｅｘ＝６とタグＩＤリストのｉｎｄｅｘ＝１０の部分のみである。
ここで、図２の各要素は、以下のとおりである。
ｉｎｄｅｘ＝０：データ全体を現す「型」識別子
ｉｎｄｅｘ＝１：データ全体の「データ長」識別子
ｉｎｄｅｘ＝４：タグ枚数パラメータの「型」識別子
ｉｎｄｅｘ＝５：タグ枚数パラメータの「データ長」識別子
ｉｎｄｅｘ＝６：タグ枚数パラメータの「データ」（パラメータデータ）
ｉｎｄｅｘ＝７：タグＩＤリストパラメータの「型」識別子
ｉｎｄｅｘ＝８：タグＩＤリストパラメータの「データ長」識別子
ｉｎｄｅｘ＝１０：タグＩＤリストパラメータの「データ」（パラメータデータ）
「型」識別子は１バイト固定、「データ長」識別子及び「データ」は可変長である。
【０００７】
また、複数のパラメータがある場合、そのリストもデータとして定義される（ｉｎｄｅｘ＝０がリストの型、ｉｎｄｅｘ＝１がリストデータの長さ、ｉｎｄｅｘ＝４以降の全体がパラメータ）。
【０００８】
図２に示すデータに対しインデックス復号化を適用しようとするならば、タグ枚数パラメータとしてｉｎｄｅｘ＝６から１バイトを数値型とし、ｉｎｄｅｘ＝１０からデータ末尾までを文字列型として復号化パラメータを定義する。
ただし、この例のように、リストに含まれるデータ長が大きくなる可能性がある場合、リストのデータ長を表す「データ長」識別子（ｉｎｄｅｘ＝８〜１０）やその上位のデータ全体のデータ長を表す部分（ｉｎｄｅｘ＝１〜４）が可変長になるため、目的とするパラメータのデータの開始位置が定まらず、インデックスによる復号化が行えないため、タグ枚数が多い場合などに対応できないという課題がある。
【０００９】
この点、ＲＦＩＤリーダライタの通信プロトコルの違いの吸収を目的とする従来技術として特許文献１がある。
特許文献１では、リーダごとに異なる通信プロトコルをアプリケーションシステムから利用可能な共通プロトコルへの変換するという技術が開示されている。
しかしながら、特許文献１では、具体的なプロトコル処理方法には触れられていない。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特表２００８−５２４７４２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明は、以上のような課題に鑑みたものであり、可変長のデータ要素を含むため、パラメータデータの開始位置が不定であるため、インデックス復号化ができない受信データの復号化を可能にする復号化技術を実現することを主な目的とする。
【課題を解決するための手段】
【００１２】
本発明に係る情報処理装置は、
符号化されているパラメータデータと前記パラメータデータのデータ長が示される符号化されているデータ長識別子とが含まれ、前記データ長識別子に続いて前記パラメータデータが配置され、前記パラメータデータの開始位置が不定であり、前記データ長識別子の先頭ビットの値により前記データ長識別子のデータ長が判別可能な不定受信データを受信するデータ受信部と、
前記不定受信データにおいて前記データ長識別子の先頭ビットを抽出し、前記データ長識別子の先頭ビットの値に基づいて前記データ長識別子のデータ長を判断して前記パラメータデータの開始位置を判定し、判定した前記パラメータデータの開始位置から前記データ長識別子を復号して得られるデータ長分のビット列を復号し、復号後のパラメータデータを抽出する不定受信データ復号化部とを有することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、可変長のデータ要素を含むため、パラメータデータの開始位置が不定である受信データに対しても、データ長識別子の先頭ビットの値からパラメータデータの開始位置を特定することができ、パラメータデータを正しく復号化できる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１に係るシステム構成例を示す図。
【図２】実施の形態１に係る受信データの例を示す図。
【図３】文字列型の受信データの例を示す図。
【図４】実施の形態１に係るサーバ１００の動作例を示すフローチャート図。
【図５】実施の形態１に係るデータ制御部の動作例を示すフローチャート図。
【図６】実施の形態３に係る復号化判定パターンの例を示す図。
【図７】実施の形態１に係る復号化パラメータリスト（パラメータ復号化済み）の例を示す図。
【図８】実施の形態１に係る復号化パラメータリスト（パラメータ未復号化）の例を示す図。
【図９】実施の形態１に係る詳細復号化後の制御パラメータリストの例を示す図。
【図１０】実施の形態５に係るシステム構成例を示す図。
【図１１】実施の形態５に係る入力ファイルの例を示す図。
【図１２】実施の形態６に係るシステム構成例を示す図。
【図１３】実施の形態６に係るログ出力の例を示す図。
【図１４】実施の形態１〜６に係るサーバ１００のハードウェア構成例を示す図。
【発明を実施するための形態】
【００１５】
実施の形態１．
本実施の形態では、可変長のデータ要素を含むため、パラメータデータ（以下、パラメータともいう）の開始位置が不定であり、インデックス復号化ができない受信データに対しても正しく復号化を行う装置を説明する。
より具体的には、インデックス符号化方式を採用するデバイス制御ソフトウェアにおいて、ＡＳＮ．１符号化方式を採用するＲＦＩＤリーダとの通信をサポートするとともに、高速な復号化方式を適用できるデータのパターンを判定し、復号化方式を切り替えることによってデータの復号化処理を高速化する装置を説明する。
なお、以下では、可変長のデータ要素を含むため、パラメータデータの開始位置が不定であり、インデックス復号化ができない受信データを不定受信データともいう。
一方、可変長のデータ要素を含まず、パラメータデータの開始位置が所定の規則（ＡＳＮ．１等）で定義されている位置（基準位置）に一致し、インデックス復号化が可能な受信データを定義受信データともいう。
【００１６】
ここで、本実施の形態に係る装置が、可変長のデータ要素を含むためパラメータデータの開始位置が不定である不定受信データにおいてパラメータデータの開始位置を判定できる原理を説明する。
【００１７】
図２は、本実施の形態において用いる受信データの例であり、前述のとおり、ＡＳＮ．１符号化方式を採用するＲＦＩＤリーダにおけるタグＩＤの読み取りコマンドの実行結果を表すデータの例である。
【００１８】
図２において、「データ長」識別子（ｉｎｄｅｘ＝５、ｉｎｄｅｘ＝８等）は、第１バイトの先頭ビットが「０」か「１」かで、「データ長」識別子が何バイトで構成されているかが分かるように符号化されている。
図２の例では、先頭１ビットの値が「０」の場合は「データ長」識別子の長さが１バイトであり、先頭１ビットの値が「１」の場合は「データ長」識別子の長さが３バイトであることが予め定義されており、ｉｎｄｅｘ＝５（タグ枚数パラメータの「データ長」識別子）の第１バイトの先頭ビットは「０」であり、ｉｎｄｅｘ＝５（タグ枚数パラメータの「データ長」識別子）の復号時には、先頭１ビットの値が「０」であることを検出して、タグ枚数パラメータの「データ長」識別子は１バイトであると判断できる。
また、ｉｎｄｅｘ＝８（タグＩＤリストパラメータの「データ長」識別子の第１バイト）の先頭ビットは「１」であり、このため、タグＩＤリストパラメータの「データ長」識別子は３バイトであると判断できる。
このため、パラメータデータの開始位置が不定であっても、「データ長」識別子の先頭ビットの値を検出することによって「データ長」識別子のデータ長を判断することができ、この結果、不定受信データにおけるパラメータデータの開始位置を判定することができる。
また、「データ長」識別子の先頭ビットの値に基づいて「データ長」識別子のデータ長を判断して「データ長」識別子を復号し、復号結果からパラメータデータのデータ長を得ることができ、判定したパラメータデータの開始位置から「データ長」識別子を復号して得られるデータ長分のビット列を復号し、復号後のパラメータデータを抽出することができる。
【００１９】
図１は、本実施の形態に係るシステム構成例を示す。
【００２０】
本実施の形態では、サーバ装置１００（以下、単にサーバという）が、ネットワーク５００を介してアプリケーションサーバ２００に接続され、また、ネットワーク６００を介してＲＦＩＤリーダ３００に接続されている。
なお、図１では、ネットワーク５００及びネットワーク６００を示しているが、ネットワークに限らず、シリアルケーブルなどの直接接続であってもよい。
なお、サーバ１００は、情報処理装置の例である。
【００２１】
サーバ１００は、デバイス制御部１０１、コマンドパラメータ作成部１０３、通信制御部１０７、通信部１０８の４階層からなる。
デバイス制御部１０１は、例えば、デバイス制御ソフトウェアにより実現される。アプリケーションはネットワーク上のアプリケーションサーバ２００、もしくはデバイス制御ソフトウェアが動作するサーバ１００上で動作する。
デバイス制御部１０１の制御対象となるデバイスとしてＲＦＩＤリーダ３００がある。
また、デバイス制御部１０１はＲＦＩＤリーダ３００に対するコマンドの発行の開始・停止、受信したコマンド実行結果のアプリケーションへの通知などを行うことで、サーバ１００全体の動作を制御する。
また、デバイス制御部１０１には、デバイス制御を行う部分の他に詳細復号化部１０２がある。
デバイス制御は、デバイスの起動、コマンドの発行、コマンド実行結果のアプリケーションへの通知など、サーバ１００全体の動作を制御することである。
なお、詳細復号化部１０２の詳細は後述する。詳細復号化部１０２は、不定受信データ復号化部の例である。
【００２２】
コマンドパラメータ作成部１０３は、パラメータの符号化部１０４、復号化部１０５、復号化判定部１０６からなる。
符号化部１０４は、デバイス制御部１０１で指定されたコマンドパラメータをＲＦＩＤリーダ３００のコマンドインタフェースに従ったデータ列に変換する。
復号化部１０５は、ＲＦＩＤリーダ３００から受信したコマンド実行結果に対しインデックスによる制御パラメータへの復号化を行い、パラメータ化してデバイス制御部１０１に渡す。なお、制御パラメータとの称呼は復号化後のパラメータを示す。
インデックスによる制御パラメータへの復号化は、あらかじめ用いるコマンドの実行結果のデータをパターンデータとして定義しておき、その定義に従って受信データからパラメータを抽出し、パラメータリストを作成すると共に、詳細復号化が必要かどうかをフラグとしてリストに追加した復号化データを作成する。
復号化部１０５では、詳細復号化が必要かどうかで復号化に用いるパターンデータを変えることで動作を変える。
復号化判定部１０６は、受信データが復号化部１０５によるインデックス復号化が可能な定義受信データであるか、詳細復号化部１０２による詳細復号化が必要な不定受信データであるかを判定する。
このように、復号化部１０５は定義受信データに対してインデックス復号化を行う手段であり、詳細復号化部１０２は不定受信データに対してインデックス復号化以外の手法により復号化を行う手段である。
なお、復号化部１０５は定義受信データ復号化部の例であり、復号化判定部１０６は受信データ判別部の例である。
【００２３】
通信制御部１０７は、ＲＦＩＤリーダ３００の通信仕様にあわせたデータの送受信を行う。
通信部１０８は、通信形態にあわせて通信路の確保、開放などを行う。
通信部１０８はデータ受信部の例である。
【００２４】
ここで、詳細復号化部１０２について説明する。
詳細復号化部１０２は、コマンドパラメータ作成部１０３の復号化部１０５で得られた復号化結果をもとに、詳細復号化が必要なデータを、ＡＳＮ．１符号化データとして復号化し、得られたパラメータをリスト化する。
より具体的には、復号化判定部１０６により受信データが不定受信データであり詳細復号化が必要と判定された場合に、不定受信データにおいて「データ長」識別子の先頭ビットを抽出し、「データ長」識別子の先頭ビットの値に基づいて「データ長」識別子のデータ長を判断してパラメータデータの開始位置を判定し、判定したパラメータデータの開始位置から「データ長」識別子を復号して得られるデータ長分のビット列をＡＳＮ．１に基づいて復号し、復号後のパラメータデータを抽出する。
【００２５】
次に、図４のフローチャートを用いて、サーバ１００におけるデータ受信時の動作について説明する。
【００２６】
先ず、デバイス制御部１０１がコマンドパラメータ作成部１０３を用いてＲＦＩＤリーダ３００に対するコマンドを生成し、生成したコマンドを通信制御部１０７及び通信部１０８を介してＲＦＩＤリーダ３００に送信すると、ＲＦＩＤリーダ３００は何らかのコマンド実行結果をデータ列としてサーバ１００に送信する。
送信されたデータは通信部１０８が受信する（データ受信ステップ）。
ステップ１では、通信制御部１０７が受信データを１コマンドに対するコマンド実行結果として切り分ける。
図２に示す受信データは、ステップ１において切り分けられた後のデータである。
【００２７】
次に、コマンドの実行結果データはコマンドパラメータ作成部１０３にわたる。
そして、ステップ２において、コマンドパラメータ作成部１０３が送信コマンドと受信データが対応しているかどうかを、受信データに含まれるコマンドＩＤデータ列があらかじめ定義されたコマンドＩＤデータ列と一致していることを確認して判定する。
図２では、コマンドＩＤデータ列は図示を省略しているが、コマンドＩＤデータ列は、図２の受信データの先頭（図２のｉｎｄｅｘ＝０の前）に配置されている。
【００２８】
次に、ステップ３において、復号化判定部１０６が詳細復号化が必要かどうかを判定する。
この判定は受信データから受信データ全体のデータ長を表す部分を復号化して判定する。
受信データ全体のデータ長を表す部分は、図２で表すデータの例であると、データ先頭から２文字目以降（ｉｎｄｅｘ＝１〜４に配置されている「全体データ長」識別子）にあたる。
これをＡＳＮ．１符号化データのデータ長として復号化する。
より具体的には、図２の“８２０１６Ａ”の先頭バイトは“８２”であり先頭ビットは“１”なので、「全体データ長」は３バイトであることがわかり、残り２バイトである“０１６Ａ”の復号化により、図２の受信データの全体データ長は、３６２（バイト）であることが分かる。
復号化して得られたデータ長が、あらかじめ定義された復号化用コマンド実行結果データパターンのデータ長より長い場合、詳細復号化が必要と判断し、同じか短い場合はインデックスによる復号化が可能と判断する。
【００２９】
詳細復号化が必要でない場合は、ステップ４にて、復号化部１０５がインデックスによる復号化を行い、パラメータリストを作成する。
そして、復号化部１０５は、ステップ５において、コマンド実行結果データパターンで定義されているインデックスリストから、ひとつのパラメータの定義に従い受信データからパラメータを抽出する。
また、復号化部１０５は、ステップ６において、詳細復号化が不要であることを示すフラグをリストに追加する。具体的には、リスト中のパラメータ［０］の欄にｆａｌｓｅを記入する。
【００３０】
図７は、ステップ４〜ステップ６の処理を経た後の復号化パラメータリストの例を示す。
図７では、パラメータ［０］の値がｆａｌｓｅであり、詳細復号化が不要であることを示している。また、図７では、１、０００００００１という２つのパラメータデータがインデックス復号化により抽出されたことが示されている。
【００３１】
一方、詳細復号化が必要と判断された場合はコマンドパラメータ作成部１０３の復号化部１０５ではパラメータの詳細復号化は行わず、ステップ７において、受信データ全体の「データ型・データ長・データ」の全てをバイト列パラメータとし、ひとつのパラメータとして復号化し、パラメータリストを作成する。
つまり、図２のデータ例では、データの先頭から終端までの受信データ全体を１つのパラメータとしてパラメータリストを作成する。
【００３２】
次に、復号化部１０５は、ステップ８において、詳細復号化が必要であることを示すフラグをリストに追加する。
具体的には、リスト中のパラメータ［０］の欄にＴｒｕｅを記入する。
【００３３】
図８は、図２のデータに対してステップ７及びステップ８を行って得られる復号化パラメータリストの例を示す。
図８では、パラメータ［０］の値がｔｒｕｅであり、詳細復号化が必要であることを示している。
また、パラメータ［１］の値が、図２のデータ全体（３０８２０１６Ａ・・・）であり、図２のデータ全体をパラメータとしていることを示している。
【００３４】
１度目の復号化（復号化部１０５によるステップ５又はステップ７）を施したデータはデバイス制御部１０１にわたる。
デバイス制御部１０１における動作内容は、図５のフローチャートに従って説明する。
【００３５】
デバイス制御部１０１では、まず詳細復号化部１０２に復号化パラメータリスト（図８）を渡す。
次に、詳細復号化部１０２は、ステップ９において、復号化パラメータリストのパラメータ［０］から、詳細復号化が必要かを示すフラグのデータを取り出し、詳細復号化が必要かを判定する。
【００３６】
詳細復号化が必要でなければ、ステップ１０において、詳細復号化部１０２は、詳細復号化が必要かを示すフラグのデータ（パラメータ［０］）以外のデータを復号化パラメータリストから取り出し、それを制御パラメータリストとする。
【００３７】
一方、詳細復号化が必要であれば、ステップ１１において、詳細復号化部１０２は、復号化パラメータリストのパラメータ［１］のバイトデータ列を未復号化データとし、ステップ１２〜ステップ１６に示すように、パラメータ［１］のバイトデータ列を、データ先頭から再帰的な復号化処理を行い、詳細復号化を行っていく（不定受信データ復号化ステップ）。
【００３８】
ステップ１２では、詳細復号化部１０２は、未復号化データに対し、ＡＳＮ１．符号化データとしてデータ先頭から「データ型・データ長・データ」として復号化する。
【００３９】
ステップ１３では、詳細復号化部１０２は、復号化して得られた「データ型」が、単純型（文字列や数値）ではなく、再帰型のデータ型（入れ子構造データ）かどうか判定する。
例えば、図２のデータのｉｎｄｅｘ＝０に示される「データ型」：３０は、再帰型であり、ｉｎｄｅｘ＝４に示される「データ型」：０２やｉｎｄｅｘ＝７に示される「データ型」：０４は単純型である。
【００４０】
再帰型のデータ型（入れ子構造データ）の場合、詳細復号化部１０２は、ステップ１４において、復号化して得られた「データ」を未復号化データとする。
図２のデータでは、ｉｎｄｅｘ＝４以降のデータ全体を未復号化データとする。
【００４１】
一方、単純型（文字列や数値）のデータ型の場合、詳細復号化部１０２は、ステップ１５において、復号化して得られた「データ」を制御パラメータリストに追加する。
前述したように、「データ長」識別子は、第１バイトの先頭ビットが０か１かで、「データ長」識別子が何バイトで構成されているかが分かるように符号化されている。
詳細復号化部１０２は、「データ長」識別子の先頭ビットの値に基づいて「データ長」識別子のデータ長を判断して「データ長」識別子を復号し、復号結果からパラメータデータのデータ長を得ることができ、判定したパラメータデータの開始位置から「データ長」識別子を復号して得られるデータ長分のビット列を復号し、復号後のパラメータデータを抽出し、抽出したパラメータデータを制御パラメータリストに追加する。
【００４２】
また、詳細復号化部１０２は、ステップ１５の復号化の後、ステップ１６において、復号化データの後に復号化されていないデータが残っているかどうかを判断し、未復号化データが残っている場合は、ステップ１２に戻り、さらに未復号化データの復号化を実施する。
【００４３】
詳細復号化部１０２は、ステップ１２〜ステップ１６の処理を繰り返して、パラメータデータを抽出し、制御パラメータリストを作成する。
図９は、詳細復号化部１０２により詳細復号化がなされて作成された制御パラメータリストの例を示す。
図９は、図２のデータに対して詳細復号化を行った結果を示しており、図２のパラメータデータである「９９」及び「０００００００１」等が示されている。
【００４４】
このように、本実施の形態によれば、パラメータデータの開始位置が不定である不定受信データに対しても、データ長識別子の先頭ビットの値からパラメータデータの開始位置を特定することができ、パラメータデータを正しく復号化できる。
【００４５】
また、本実施の形態では、データパターンによって復号化処理を切り替えることによって、タグ枚数が多い場合などの、可変長データの復号化を可能にすると共に、単純なパターンのデータだった場合は高速な復号化方法を適用することで、より高速な復号化処理を実現することができる。
【００４６】
以上、本実施の形態では、デバイス制御部とコマンドパラメータ作成部と通信制御部と通信部を備え、
コマンドパラメータ作成部には復号化判定部と復号化部を、デバイス制御部に詳細復号化部とを備えたデバイス制御装置であり、
前記通信部はＲＦＩＤリーダとの通信路を確立し、
前記通信制御部はＲＦＩＤリーダに対しＲＦＩＤリーダのコマンドインタフェースに従ったデータを送信し、ＲＦＩＤリーダがコマンドに対して送信したコマンド実行結果を受信し、
前記コマンドパラメータ作成部の復号化判定部は、受信データからデータ全体のデータ長を表す部分を復号化して得たデータ長とコマンド実行結果の最短パターンでの長さを比較することで、可変長階層構造データとして２段階復号化する必要があるかを判定し、
前記コマンドパラメータ作成部の復号化部は、デバイスから受信したデータをバイト列中の位置、長さ、データ型を指定してバイト列型パラメータとして単一パラメータとしてデータを復号化するが、その際に、可変長階層構造データとして復号化する必要がなければ、固定長データとしてバイト列中の位置、長さ、データ型を指定してひとつ以上の制御パラメータとして復号化し、可変長階層構造データとして復号化する必要があれば、バイト列中の位置、長さ、データ型を指定してバイト列型パラメータとして単一パラメータとしてデータを復号化し、
前記デバイス制御部は、前記復号化部の復号化結果をもとに制御パラメータとして復号化済みであるかを判断し、
制御パラメータとして復号化済みであれば、詳細復号化部を通さずに復号化パラメータを得、
制御パラメータとして復号がされていなければ、コマンドパラメータ作成部の復号化部で復号化したバイト列パラメータを可変長階層構造データとして復号化を行うことでひとつ以上の制御パラメータとして復号化し、
前記デバイス制御部は得られた制御パラメータを用いてデバイス制御を行うとともに上位アプリケーションにコマンド実行結果を通知する
デバイス制御装置を説明した。
【００４７】
実施の形態２．
復号化判定部１０６の判定方法として、受信データの長さ自体を用いて詳細復号化が必要かどうかを判定する形態が考えられる。
【００４８】
実施の形態１では、図４のステップ３において、受信データからコマンドインタフェースに従って受信データの「全体データ長」識別子（ｉｎｄｅｘ＝１〜４）を復号化し、復号化用コマンド実行結果データパターンと比較することで詳細復号化が必要かどうかを判定した。
これに対し、本実施の形態では、受信データそのものの長さをこの判定に用い、復号化用コマンド実行結果データパターンの長さと比較し、長い場合、詳細復号化が必要と判断し、同じか短い場合はインデックスによる復号化が可能と判断する。
つまり、本実施の形態では、復号化判定部１０６は、図４のステップ３に代えて、受信データ全体のデータ長を測定し、測定した受信データ全体のデータ長が所定のデータ長（復号化用コマンド実行結果データパターンのデータ長）以下の場合に受信データを定義受信データと判定し詳細復号化が不要と判定し、測定した受信データ全体のデータ長が所定のデータ長（復号化用コマンド実行結果データパターンのデータ長）を超える場合に受信データを不定受信データと判定し詳細復号化が必要と判定する。
【００４９】
この方法では、受信データに本来含まれるべきでない冗長なデータなどが含まれていた場合やコマンドインタフェースに従っていなかった場合は、正しい判定ができないが、データ長の復号化を行う必要がなくなるため高速に判定処理を行うことができる。
【００５０】
以上、本実施の形態では、復号化判定部が、受信データの長さとコマンド実行結果の最短パターンの長さを比較することで、可変長階層構造データとして２段階復号化する必要があるかを判定することを説明した。
【００５１】
実施の形態３．
また、復号化判定部１０６の判定方法として、復号化判定パターンを用いて詳細復号化が必要かどうかを判定する形態が考えられる。
【００５２】
図６に、本実施の形態に係る復号化判定の例を示す。
上段は受信したデータであり、中段は復号化判定パターンである。
復号化判定パターンは、コマンド実行結果として最短になるように作成されたデータ列であり、ＡＳＮ．１符号化ではデータ長はその先頭ビットが１のとき１バイトより長くなるように符号化されるため、データ長に当たるバイトは先頭ビットを１とする。
入力データと符号化判定パターンをＡＮＤ演算した結果が図６の下段である。
演算結果が全て０であれば詳細復号化の必要は無いと判断できる。
図６の例では、下段のＡＮＤ演算結果に「８」が含まれるので、詳細復号化が必要である。
なお、図６の例では、受信データ全体に対して復号化判定パターンを適用して、受信データ全体に対するＡＮＤ演算結果を求めているが、受信データの「全体データ長」識別子（ｉｎｄｅｘ＝１〜４）のビット値に対してのみ復号化判定パターンを適用し、「全体データ長」識別子に対するＡＮＤ演算結果が全て０であれば詳細復号化の必要は無いと判断するようにしてもよい。
【００５３】
このように、本実施の形態によれば、ビット演算処理による比較的高速な処理により復号化判定ができるという効果がある。
【００５４】
以上、本実施の形態では、復号化判定部が、あらかじめ設定されたコマンド毎の復号化判定マスクパターンと受信データを比較することで、可変長階層構造データとして２段階復号化する必要があるかを判定することを説明した。
【００５５】
実施の形態４．
以上の実施の形態１〜３と異なり、本実施の形態では、復号化判定部１０６が無い構成を説明する。
【００５６】
復号化判定部１０６が無い場合は、通信制御部１０７から直接コマンドパラメータ作成部１０３の復号化部１０５に受信データがわたるため、図４のフローチャートのステップ３に当たる処理が無く、全てのデータはステップ７の対象となる。
復号化判定は行われないため、ステップ８の判定結果データの付与も行われず、ステップ９の判定は無く、全ての受信データはステップ１１の対象となる。
つまり、本実施の形態では、通信部１０８により受信された受信データが定義受信データ及び不定受信データのいずれであっても詳細復号化の対象とし、「データ長」識別子の先頭ビットの値から「データ長」識別子のデータ長を導出して、パラメータデータの開始位置を導出してパラメータデータの復号化を行う。
【００５７】
以上、本実施の形態では、復号化判定部が無く、全ての受信データを可変長階層構造データとして２段階復号化することを説明した。
【００５８】
実施の形態５．
インデックスによる復号化を行う際には、コマンド毎にリーダが送信するデータのコマンドインタフェースにあわせたデータパターンとパラメータ定義が必要である。
本実施の形態では、この定義をファイル入力する例について説明する。
【００５９】
図１０に本実施の形態に係るシステム構成例を示す。
本実施の形態では、復号化のデータパターン及びパラメータ定義は、定義情報として、復号化判定部１０６と復号化部１０５に入力される。
入力の形式は、ファイルなどに記載したものを実行時に読み込むか、コード生成ツールなどを用いて定義を実行形式に変換し、受信データの判定用データやパラメータリストの定義を作成する。
そして、復号化判定部１０６は、定義情報に記述されている復号化用コマンド実行結果データパターンのデータ長と受信データの「全体データ長」識別子から得られる受信データの全体データ長とを比較して、詳細復号化が必要か否かを判断する。
また、復号化部１０５では、定義情報に記述されているパラメータデータの開始位置の基準位置から、定義受信データにおけるパラメータデータの開始位置を導出し、パラメータデータの復号化を行う。
【００６０】
図１１に入力ファイル（定義情報）の記載例を示す。
１行目はコマンド実行結果のデータ定義であることを示す。この例はＩｎｖｅｎｔｏｒｙＴａｇｓコマンド用の定義である。
２行目は、インデックスによる復号化可能な実行結果パターン定義であることを示す。
３行目から５行目は、復号用コマンド実行結果データパターンの最短パターンを示す。
６行目から１６行目は、復号化パラメータ定義を示す。
７行目から１１行目は、第１パラメータであるタグ枚数パラメータの定義である。インデックス１７番目から１バイトをパラメータとして抽出している。
１２行目から１５行目は、第２パラメータであるタグＩＤパラメータの定義である。インデックス２０番目からデータ末尾までをパラメータとして抽出している。
１７行目から２１行目は、この実行結果パターン定義を用いるかどうかを決めるためのフィルターの定義である。
ここまではインデックスによる符号化を行うための定義である。
２３行目は、インデックスによる復号化が不可能な場合の実行結果パターン定義であることを示す。
２７行目から２９行目にパラメータの定義があるが、インデックス８以降のデータを一括してパラメータ化するよう定義している。
このような定義を、デバイス制御に必要なコマンド毎に記載する。
【００６１】
本実施の形態による方法では、リーダのコマンドインタフェースにあわせた定義ができると共に、コマンドインタフェースの変更への対応や、コードの流用性を高めることができる。
【００６２】
以上、本実施の形態では、コマンドパラメータ作成部の復号化判定部、復号化部が、コマンド毎の受信データパターンを設定ファイルとして入力することを説明した。
【００６３】
実施の形態６．
本実施の形態では、サーバ１００がログを出力する機能を有する構成について説明する。
【００６４】
図１２に本実施の形態に係るシステム構成例を示す。
図１２に示す構成例では、サーバ１００の動作を記録するためのログ出力を行うため、ログ制御部１０９を各階層とは別に設ける。
ログの設定は、ログ出力の有無、出力レベル、出力先ファイル名、ファイル形式などについて、ファイルに記載して読み込ませるか、起動時のパラメータとして与えることによりログ制御部１０９の動作を設定する。
【００６５】
サーバ１００は、ログ制御部１０９を通じてログを出力する。
ログ出力例を図１３に示す。
図１３のように、データの送受信や復号化結果（パラメータデータ）、アプリケーションへの通知状況などを、ログレベル、日時などのヘッダ情報を付加して出力する。
【００６６】
以上、本実施の形態では、デバイス制御装置の各部の挙動をログファイルとして出力することを説明した。
【００６７】
最後に、実施の形態１〜６に示したサーバ１００のハードウェア構成例について説明する。
図１４は、実施の形態１〜６に示すサーバ１００のハードウェア資源の一例を示す図である。
なお、図１４の構成は、あくまでもサーバ１００のハードウェア構成の一例を示すものであり、サーバ１００のハードウェア構成は図１４に記載の構成に限らず、他の構成であってもよい。
【００６８】
図１４において、サーバ１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７と接続していてもよい。また、磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード９１５、キーボード９０２、マウス９０３、スキャナ装置９０７、ＦＤＤ９０４などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置の一例である。
【００６９】
通信ボード９１５は、図１に示すように、ネットワークに接続されている。例えば、通信ボード９１５は、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）、ＳＡＮ（ストレージエリアネットワーク）などに接続されていても構わない。
【００７０】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【００７１】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【００７２】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
サーバ１００の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【００７３】
上記プログラム群９２３には、実施の形態１〜６の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【００７４】
ファイル群９２４には、実施の形態１〜６の説明において、「〜の判断」、「〜の判定」、「〜の符号化」、「〜の復号化」、「〜の計算」、「〜の比較」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態１〜６で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００７５】
また、実施の形態１〜６の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、実施の形態１〜６の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態１〜６の「〜部」の手順や方法をコンピュータに実行させるものである。
【００７６】
このように、実施の形態１〜６に示すサーバ１００は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【００７７】
１００  サーバ、１０１  デバイス制御部、１０２  詳細復号化部、１０３  コマンドパラメータ作成部、１０４  符号化部、１０５  復号化部、１０６  復号化判定部、１０７  通信制御部、１０８  通信部、１０９  ログ制御部、２００  アプリケーションサーバ、３００  ＲＦＩＤリーダ、４００  タグ、５００  ネットワーク、６００  ネットワーク。
【図１】
2010287962.tif 000003
【図２】
2010287962.tif 000004
【図３】
2010287962.tif 000005
【図４】
2010287962.tif 000006
【図５】
2010287962.tif 000007
【図６】
2010287962.tif 000008
【図７】
2010287962.tif 000009
【図８】
2010287962.tif 000010
【図９】
2010287962.tif 000011
【図１０】
2010287962.tif 000012
【図１１】
2010287962.tif 000013
【図１２】
2010287962.tif 000014
【図１３】
2010287962.tif 000015
【図１４】
2010287962.tif 000016