説明

情報処理装置及び情報処理方法及びプログラム

【課題】パラメータの開始位置が不定の受信データの復号化を行う。
【解決手段】通信部108が受信した受信データが、抽出対象のパラメータの開始位置が所定の規則で定義された位置に一致し、定義に従ったインデックス復号化が可能なデータであるか、パラメータの開始位置が定義された位置と異なりインデックス復号化ができないデータであるかを復号化判定部106が判定し、インデックス復号化が可能な場合は復号化部105が定義されているパラメータの開始位置から復号化を行ってパラメータを抽出し、インデックス復号化ができない場合は詳細復号化部102がパラメータの直前に配置されているデータ長識別子の先頭ビットの値によりデータ長識別子の長さを判断してパラメータの開始位置を導出し、導出した開始位置から復号化を行ってパラメータを抽出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、符号化されたデータの復号化技術に関する。
【背景技術】
【0002】
UHF帯リーダライタのコマンドインタフェースはISO15961で定義されている。
ISO15961ではデータ符号化方式としてASN.1を使用している。
ASN.1は「データ型・データ長・データ」(データ内はさらに階層的構造)というデータ構造になっており、データ長とデータは可変長である。
【0003】
一方、組込機器を遠隔から管理できるJava(登録商標)ベースのサービスプラットフォームとしてOSGiがある。
RFID(Radio Frequency IDentification)タグのようなデバイスをOSGiに準拠したソフトウェアから使用するには、OSGiで定められた仕様で制御するソフトウェアが必要になる。
OSGi仕様を実装するためのランタイムとツールを提供するEclipseプラグインとしてEquinoxがある。
Equinoxでは、リーダが送信した符号化データの復号化にはインデックスを用いた手法がとられている。
これは、あらかじめ受信データに対するパラメータ定義を行い、復号化モジュールはデータ受信時にパラメータ定義に沿って復号化を行うというものである(以降、パラメータ定義に基づく復号化をインデックス復号化とよぶ)。
パラメータ定義は、取り出すパラメータデータの受信データ先頭からの位置(インデックス)、取り出す長さ、パラメータの型で定義される。
【0004】
図3に文字列型の受信データの例を示す。
”ID=”より後ろにあるデータがパラメータデータ(以下、パラメータともいう)となるとする。
この場合のパラメータ定義は、受信データの先頭から4文字目、文字列型、不定長のパラメータ、という定義となり、受信データ先頭から4文字目以降のデータを復号してパラメータを取り出すというインデックス復号化が行われる。
【0005】
Equinoxを用いてISO15961準拠のリーダライタ用の制御ソフトウェアを実現しようとすると、ASN.1で符号化されたデータをインデックスによる復号化を行う必要がある。
【0006】
図2は、ASN.1符号化方式を採用するRFIDリーダにおけるタグIDの読み取りコマンドの実行結果を表すデータの例である。
データにタグ枚数とタグリストの二つのパラメータがあり、タグ枚数99、タグリストデータの長さが357である(タグリストデータの長さ:357は、index=8〜10の部分の下位2バイト「0165」の十進数表記)。
パラメータとして取得すべきなのは、タグ枚数部分のindex=6とタグIDリストのindex=10の部分のみである。
ここで、図2の各要素は、以下のとおりである。
index=0:データ全体を現す「型」識別子
index=1:データ全体の「データ長」識別子
index=4:タグ枚数パラメータの「型」識別子
index=5:タグ枚数パラメータの「データ長」識別子
index=6:タグ枚数パラメータの「データ」(パラメータデータ)
index=7:タグIDリストパラメータの「型」識別子
index=8:タグIDリストパラメータの「データ長」識別子
index=10:タグIDリストパラメータの「データ」(パラメータデータ)
「型」識別子は1バイト固定、「データ長」識別子及び「データ」は可変長である。
【0007】
また、複数のパラメータがある場合、そのリストもデータとして定義される(index=0がリストの型、index=1がリストデータの長さ、index=4以降の全体がパラメータ)。
【0008】
図2に示すデータに対しインデックス復号化を適用しようとするならば、タグ枚数パラメータとしてindex=6から1バイトを数値型とし、index=10からデータ末尾までを文字列型として復号化パラメータを定義する。
ただし、この例のように、リストに含まれるデータ長が大きくなる可能性がある場合、リストのデータ長を表す「データ長」識別子(index=8〜10)やその上位のデータ全体のデータ長を表す部分(index=1〜4)が可変長になるため、目的とするパラメータのデータの開始位置が定まらず、インデックスによる復号化が行えないため、タグ枚数が多い場合などに対応できないという課題がある。
【0009】
この点、RFIDリーダライタの通信プロトコルの違いの吸収を目的とする従来技術として特許文献1がある。
特許文献1では、リーダごとに異なる通信プロトコルをアプリケーションシステムから利用可能な共通プロトコルへの変換するという技術が開示されている。
しかしながら、特許文献1では、具体的なプロトコル処理方法には触れられていない。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特表2008−524742号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
本発明は、以上のような課題に鑑みたものであり、可変長のデータ要素を含むため、パラメータデータの開始位置が不定であるため、インデックス復号化ができない受信データの復号化を可能にする復号化技術を実現することを主な目的とする。
【課題を解決するための手段】
【0012】
本発明に係る情報処理装置は、
符号化されているパラメータデータと前記パラメータデータのデータ長が示される符号化されているデータ長識別子とが含まれ、前記データ長識別子に続いて前記パラメータデータが配置され、前記パラメータデータの開始位置が不定であり、前記データ長識別子の先頭ビットの値により前記データ長識別子のデータ長が判別可能な不定受信データを受信するデータ受信部と、
前記不定受信データにおいて前記データ長識別子の先頭ビットを抽出し、前記データ長識別子の先頭ビットの値に基づいて前記データ長識別子のデータ長を判断して前記パラメータデータの開始位置を判定し、判定した前記パラメータデータの開始位置から前記データ長識別子を復号して得られるデータ長分のビット列を復号し、復号後のパラメータデータを抽出する不定受信データ復号化部とを有することを特徴とする。
【発明の効果】
【0013】
本発明によれば、可変長のデータ要素を含むため、パラメータデータの開始位置が不定である受信データに対しても、データ長識別子の先頭ビットの値からパラメータデータの開始位置を特定することができ、パラメータデータを正しく復号化できる。
【図面の簡単な説明】
【0014】
【図1】実施の形態1に係るシステム構成例を示す図。
【図2】実施の形態1に係る受信データの例を示す図。
【図3】文字列型の受信データの例を示す図。
【図4】実施の形態1に係るサーバ100の動作例を示すフローチャート図。
【図5】実施の形態1に係るデータ制御部の動作例を示すフローチャート図。
【図6】実施の形態3に係る復号化判定パターンの例を示す図。
【図7】実施の形態1に係る復号化パラメータリスト(パラメータ復号化済み)の例を示す図。
【図8】実施の形態1に係る復号化パラメータリスト(パラメータ未復号化)の例を示す図。
【図9】実施の形態1に係る詳細復号化後の制御パラメータリストの例を示す図。
【図10】実施の形態5に係るシステム構成例を示す図。
【図11】実施の形態5に係る入力ファイルの例を示す図。
【図12】実施の形態6に係るシステム構成例を示す図。
【図13】実施の形態6に係るログ出力の例を示す図。
【図14】実施の形態1〜6に係るサーバ100のハードウェア構成例を示す図。
【発明を実施するための形態】
【0015】
実施の形態1.
本実施の形態では、可変長のデータ要素を含むため、パラメータデータ(以下、パラメータともいう)の開始位置が不定であり、インデックス復号化ができない受信データに対しても正しく復号化を行う装置を説明する。
より具体的には、インデックス符号化方式を採用するデバイス制御ソフトウェアにおいて、ASN.1符号化方式を採用するRFIDリーダとの通信をサポートするとともに、高速な復号化方式を適用できるデータのパターンを判定し、復号化方式を切り替えることによってデータの復号化処理を高速化する装置を説明する。
なお、以下では、可変長のデータ要素を含むため、パラメータデータの開始位置が不定であり、インデックス復号化ができない受信データを不定受信データともいう。
一方、可変長のデータ要素を含まず、パラメータデータの開始位置が所定の規則(ASN.1等)で定義されている位置(基準位置)に一致し、インデックス復号化が可能な受信データを定義受信データともいう。
【0016】
ここで、本実施の形態に係る装置が、可変長のデータ要素を含むためパラメータデータの開始位置が不定である不定受信データにおいてパラメータデータの開始位置を判定できる原理を説明する。
【0017】
図2は、本実施の形態において用いる受信データの例であり、前述のとおり、ASN.1符号化方式を採用するRFIDリーダにおけるタグIDの読み取りコマンドの実行結果を表すデータの例である。
【0018】
図2において、「データ長」識別子(index=5、index=8等)は、第1バイトの先頭ビットが「0」か「1」かで、「データ長」識別子が何バイトで構成されているかが分かるように符号化されている。
図2の例では、先頭1ビットの値が「0」の場合は「データ長」識別子の長さが1バイトであり、先頭1ビットの値が「1」の場合は「データ長」識別子の長さが3バイトであることが予め定義されており、index=5(タグ枚数パラメータの「データ長」識別子)の第1バイトの先頭ビットは「0」であり、index=5(タグ枚数パラメータの「データ長」識別子)の復号時には、先頭1ビットの値が「0」であることを検出して、タグ枚数パラメータの「データ長」識別子は1バイトであると判断できる。
また、index=8(タグIDリストパラメータの「データ長」識別子の第1バイト)の先頭ビットは「1」であり、このため、タグIDリストパラメータの「データ長」識別子は3バイトであると判断できる。
このため、パラメータデータの開始位置が不定であっても、「データ長」識別子の先頭ビットの値を検出することによって「データ長」識別子のデータ長を判断することができ、この結果、不定受信データにおけるパラメータデータの開始位置を判定することができる。
また、「データ長」識別子の先頭ビットの値に基づいて「データ長」識別子のデータ長を判断して「データ長」識別子を復号し、復号結果からパラメータデータのデータ長を得ることができ、判定したパラメータデータの開始位置から「データ長」識別子を復号して得られるデータ長分のビット列を復号し、復号後のパラメータデータを抽出することができる。
【0019】
図1は、本実施の形態に係るシステム構成例を示す。
【0020】
本実施の形態では、サーバ装置100(以下、単にサーバという)が、ネットワーク500を介してアプリケーションサーバ200に接続され、また、ネットワーク600を介してRFIDリーダ300に接続されている。
なお、図1では、ネットワーク500及びネットワーク600を示しているが、ネットワークに限らず、シリアルケーブルなどの直接接続であってもよい。
なお、サーバ100は、情報処理装置の例である。
【0021】
サーバ100は、デバイス制御部101、コマンドパラメータ作成部103、通信制御部107、通信部108の4階層からなる。
デバイス制御部101は、例えば、デバイス制御ソフトウェアにより実現される。アプリケーションはネットワーク上のアプリケーションサーバ200、もしくはデバイス制御ソフトウェアが動作するサーバ100上で動作する。
デバイス制御部101の制御対象となるデバイスとしてRFIDリーダ300がある。
また、デバイス制御部101はRFIDリーダ300に対するコマンドの発行の開始・停止、受信したコマンド実行結果のアプリケーションへの通知などを行うことで、サーバ100全体の動作を制御する。
また、デバイス制御部101には、デバイス制御を行う部分の他に詳細復号化部102がある。
デバイス制御は、デバイスの起動、コマンドの発行、コマンド実行結果のアプリケーションへの通知など、サーバ100全体の動作を制御することである。
なお、詳細復号化部102の詳細は後述する。詳細復号化部102は、不定受信データ復号化部の例である。
【0022】
コマンドパラメータ作成部103は、パラメータの符号化部104、復号化部105、復号化判定部106からなる。
符号化部104は、デバイス制御部101で指定されたコマンドパラメータをRFIDリーダ300のコマンドインタフェースに従ったデータ列に変換する。
復号化部105は、RFIDリーダ300から受信したコマンド実行結果に対しインデックスによる制御パラメータへの復号化を行い、パラメータ化してデバイス制御部101に渡す。なお、制御パラメータとの称呼は復号化後のパラメータを示す。
インデックスによる制御パラメータへの復号化は、あらかじめ用いるコマンドの実行結果のデータをパターンデータとして定義しておき、その定義に従って受信データからパラメータを抽出し、パラメータリストを作成すると共に、詳細復号化が必要かどうかをフラグとしてリストに追加した復号化データを作成する。
復号化部105では、詳細復号化が必要かどうかで復号化に用いるパターンデータを変えることで動作を変える。
復号化判定部106は、受信データが復号化部105によるインデックス復号化が可能な定義受信データであるか、詳細復号化部102による詳細復号化が必要な不定受信データであるかを判定する。
このように、復号化部105は定義受信データに対してインデックス復号化を行う手段であり、詳細復号化部102は不定受信データに対してインデックス復号化以外の手法により復号化を行う手段である。
なお、復号化部105は定義受信データ復号化部の例であり、復号化判定部106は受信データ判別部の例である。
【0023】
通信制御部107は、RFIDリーダ300の通信仕様にあわせたデータの送受信を行う。
通信部108は、通信形態にあわせて通信路の確保、開放などを行う。
通信部108はデータ受信部の例である。
【0024】
ここで、詳細復号化部102について説明する。
詳細復号化部102は、コマンドパラメータ作成部103の復号化部105で得られた復号化結果をもとに、詳細復号化が必要なデータを、ASN.1符号化データとして復号化し、得られたパラメータをリスト化する。
より具体的には、復号化判定部106により受信データが不定受信データであり詳細復号化が必要と判定された場合に、不定受信データにおいて「データ長」識別子の先頭ビットを抽出し、「データ長」識別子の先頭ビットの値に基づいて「データ長」識別子のデータ長を判断してパラメータデータの開始位置を判定し、判定したパラメータデータの開始位置から「データ長」識別子を復号して得られるデータ長分のビット列をASN.1に基づいて復号し、復号後のパラメータデータを抽出する。
【0025】
次に、図4のフローチャートを用いて、サーバ100におけるデータ受信時の動作について説明する。
【0026】
先ず、デバイス制御部101がコマンドパラメータ作成部103を用いてRFIDリーダ300に対するコマンドを生成し、生成したコマンドを通信制御部107及び通信部108を介してRFIDリーダ300に送信すると、RFIDリーダ300は何らかのコマンド実行結果をデータ列としてサーバ100に送信する。
送信されたデータは通信部108が受信する(データ受信ステップ)。
ステップ1では、通信制御部107が受信データを1コマンドに対するコマンド実行結果として切り分ける。
図2に示す受信データは、ステップ1において切り分けられた後のデータである。
【0027】
次に、コマンドの実行結果データはコマンドパラメータ作成部103にわたる。
そして、ステップ2において、コマンドパラメータ作成部103が送信コマンドと受信データが対応しているかどうかを、受信データに含まれるコマンドIDデータ列があらかじめ定義されたコマンドIDデータ列と一致していることを確認して判定する。
図2では、コマンドIDデータ列は図示を省略しているが、コマンドIDデータ列は、図2の受信データの先頭(図2のindex=0の前)に配置されている。
【0028】
次に、ステップ3において、復号化判定部106が詳細復号化が必要かどうかを判定する。
この判定は受信データから受信データ全体のデータ長を表す部分を復号化して判定する。
受信データ全体のデータ長を表す部分は、図2で表すデータの例であると、データ先頭から2文字目以降(index=1〜4に配置されている「全体データ長」識別子)にあたる。
これをASN.1符号化データのデータ長として復号化する。
より具体的には、図2の“82016A”の先頭バイトは“82”であり先頭ビットは“1”なので、「全体データ長」は3バイトであることがわかり、残り2バイトである“016A”の復号化により、図2の受信データの全体データ長は、362(バイト)であることが分かる。
復号化して得られたデータ長が、あらかじめ定義された復号化用コマンド実行結果データパターンのデータ長より長い場合、詳細復号化が必要と判断し、同じか短い場合はインデックスによる復号化が可能と判断する。
【0029】
詳細復号化が必要でない場合は、ステップ4にて、復号化部105がインデックスによる復号化を行い、パラメータリストを作成する。
そして、復号化部105は、ステップ5において、コマンド実行結果データパターンで定義されているインデックスリストから、ひとつのパラメータの定義に従い受信データからパラメータを抽出する。
また、復号化部105は、ステップ6において、詳細復号化が不要であることを示すフラグをリストに追加する。具体的には、リスト中のパラメータ[0]の欄にfalseを記入する。
【0030】
図7は、ステップ4〜ステップ6の処理を経た後の復号化パラメータリストの例を示す。
図7では、パラメータ[0]の値がfalseであり、詳細復号化が不要であることを示している。また、図7では、1、00000001という2つのパラメータデータがインデックス復号化により抽出されたことが示されている。
【0031】
一方、詳細復号化が必要と判断された場合はコマンドパラメータ作成部103の復号化部105ではパラメータの詳細復号化は行わず、ステップ7において、受信データ全体の「データ型・データ長・データ」の全てをバイト列パラメータとし、ひとつのパラメータとして復号化し、パラメータリストを作成する。
つまり、図2のデータ例では、データの先頭から終端までの受信データ全体を1つのパラメータとしてパラメータリストを作成する。
【0032】
次に、復号化部105は、ステップ8において、詳細復号化が必要であることを示すフラグをリストに追加する。
具体的には、リスト中のパラメータ[0]の欄にTrueを記入する。
【0033】
図8は、図2のデータに対してステップ7及びステップ8を行って得られる復号化パラメータリストの例を示す。
図8では、パラメータ[0]の値がtrueであり、詳細復号化が必要であることを示している。
また、パラメータ[1]の値が、図2のデータ全体(3082016A・・・)であり、図2のデータ全体をパラメータとしていることを示している。
【0034】
1度目の復号化(復号化部105によるステップ5又はステップ7)を施したデータはデバイス制御部101にわたる。
デバイス制御部101における動作内容は、図5のフローチャートに従って説明する。
【0035】
デバイス制御部101では、まず詳細復号化部102に復号化パラメータリスト(図8)を渡す。
次に、詳細復号化部102は、ステップ9において、復号化パラメータリストのパラメータ[0]から、詳細復号化が必要かを示すフラグのデータを取り出し、詳細復号化が必要かを判定する。
【0036】
詳細復号化が必要でなければ、ステップ10において、詳細復号化部102は、詳細復号化が必要かを示すフラグのデータ(パラメータ[0])以外のデータを復号化パラメータリストから取り出し、それを制御パラメータリストとする。
【0037】
一方、詳細復号化が必要であれば、ステップ11において、詳細復号化部102は、復号化パラメータリストのパラメータ[1]のバイトデータ列を未復号化データとし、ステップ12〜ステップ16に示すように、パラメータ[1]のバイトデータ列を、データ先頭から再帰的な復号化処理を行い、詳細復号化を行っていく(不定受信データ復号化ステップ)。
【0038】
ステップ12では、詳細復号化部102は、未復号化データに対し、ASN1.符号化データとしてデータ先頭から「データ型・データ長・データ」として復号化する。
【0039】
ステップ13では、詳細復号化部102は、復号化して得られた「データ型」が、単純型(文字列や数値)ではなく、再帰型のデータ型(入れ子構造データ)かどうか判定する。
例えば、図2のデータのindex=0に示される「データ型」:30は、再帰型であり、index=4に示される「データ型」:02やindex=7に示される「データ型」:04は単純型である。
【0040】
再帰型のデータ型(入れ子構造データ)の場合、詳細復号化部102は、ステップ14において、復号化して得られた「データ」を未復号化データとする。
図2のデータでは、index=4以降のデータ全体を未復号化データとする。
【0041】
一方、単純型(文字列や数値)のデータ型の場合、詳細復号化部102は、ステップ15において、復号化して得られた「データ」を制御パラメータリストに追加する。
前述したように、「データ長」識別子は、第1バイトの先頭ビットが0か1かで、「データ長」識別子が何バイトで構成されているかが分かるように符号化されている。
詳細復号化部102は、「データ長」識別子の先頭ビットの値に基づいて「データ長」識別子のデータ長を判断して「データ長」識別子を復号し、復号結果からパラメータデータのデータ長を得ることができ、判定したパラメータデータの開始位置から「データ長」識別子を復号して得られるデータ長分のビット列を復号し、復号後のパラメータデータを抽出し、抽出したパラメータデータを制御パラメータリストに追加する。
【0042】
また、詳細復号化部102は、ステップ15の復号化の後、ステップ16において、復号化データの後に復号化されていないデータが残っているかどうかを判断し、未復号化データが残っている場合は、ステップ12に戻り、さらに未復号化データの復号化を実施する。
【0043】
詳細復号化部102は、ステップ12〜ステップ16の処理を繰り返して、パラメータデータを抽出し、制御パラメータリストを作成する。
図9は、詳細復号化部102により詳細復号化がなされて作成された制御パラメータリストの例を示す。
図9は、図2のデータに対して詳細復号化を行った結果を示しており、図2のパラメータデータである「99」及び「00000001」等が示されている。
【0044】
このように、本実施の形態によれば、パラメータデータの開始位置が不定である不定受信データに対しても、データ長識別子の先頭ビットの値からパラメータデータの開始位置を特定することができ、パラメータデータを正しく復号化できる。
【0045】
また、本実施の形態では、データパターンによって復号化処理を切り替えることによって、タグ枚数が多い場合などの、可変長データの復号化を可能にすると共に、単純なパターンのデータだった場合は高速な復号化方法を適用することで、より高速な復号化処理を実現することができる。
【0046】
以上、本実施の形態では、デバイス制御部とコマンドパラメータ作成部と通信制御部と通信部を備え、
コマンドパラメータ作成部には復号化判定部と復号化部を、デバイス制御部に詳細復号化部とを備えたデバイス制御装置であり、
前記通信部はRFIDリーダとの通信路を確立し、
前記通信制御部はRFIDリーダに対しRFIDリーダのコマンドインタフェースに従ったデータを送信し、RFIDリーダがコマンドに対して送信したコマンド実行結果を受信し、
前記コマンドパラメータ作成部の復号化判定部は、受信データからデータ全体のデータ長を表す部分を復号化して得たデータ長とコマンド実行結果の最短パターンでの長さを比較することで、可変長階層構造データとして2段階復号化する必要があるかを判定し、
前記コマンドパラメータ作成部の復号化部は、デバイスから受信したデータをバイト列中の位置、長さ、データ型を指定してバイト列型パラメータとして単一パラメータとしてデータを復号化するが、その際に、可変長階層構造データとして復号化する必要がなければ、固定長データとしてバイト列中の位置、長さ、データ型を指定してひとつ以上の制御パラメータとして復号化し、可変長階層構造データとして復号化する必要があれば、バイト列中の位置、長さ、データ型を指定してバイト列型パラメータとして単一パラメータとしてデータを復号化し、
前記デバイス制御部は、前記復号化部の復号化結果をもとに制御パラメータとして復号化済みであるかを判断し、
制御パラメータとして復号化済みであれば、詳細復号化部を通さずに復号化パラメータを得、
制御パラメータとして復号がされていなければ、コマンドパラメータ作成部の復号化部で復号化したバイト列パラメータを可変長階層構造データとして復号化を行うことでひとつ以上の制御パラメータとして復号化し、
前記デバイス制御部は得られた制御パラメータを用いてデバイス制御を行うとともに上位アプリケーションにコマンド実行結果を通知する
デバイス制御装置を説明した。
【0047】
実施の形態2.
復号化判定部106の判定方法として、受信データの長さ自体を用いて詳細復号化が必要かどうかを判定する形態が考えられる。
【0048】
実施の形態1では、図4のステップ3において、受信データからコマンドインタフェースに従って受信データの「全体データ長」識別子(index=1〜4)を復号化し、復号化用コマンド実行結果データパターンと比較することで詳細復号化が必要かどうかを判定した。
これに対し、本実施の形態では、受信データそのものの長さをこの判定に用い、復号化用コマンド実行結果データパターンの長さと比較し、長い場合、詳細復号化が必要と判断し、同じか短い場合はインデックスによる復号化が可能と判断する。
つまり、本実施の形態では、復号化判定部106は、図4のステップ3に代えて、受信データ全体のデータ長を測定し、測定した受信データ全体のデータ長が所定のデータ長(復号化用コマンド実行結果データパターンのデータ長)以下の場合に受信データを定義受信データと判定し詳細復号化が不要と判定し、測定した受信データ全体のデータ長が所定のデータ長(復号化用コマンド実行結果データパターンのデータ長)を超える場合に受信データを不定受信データと判定し詳細復号化が必要と判定する。
【0049】
この方法では、受信データに本来含まれるべきでない冗長なデータなどが含まれていた場合やコマンドインタフェースに従っていなかった場合は、正しい判定ができないが、データ長の復号化を行う必要がなくなるため高速に判定処理を行うことができる。
【0050】
以上、本実施の形態では、復号化判定部が、受信データの長さとコマンド実行結果の最短パターンの長さを比較することで、可変長階層構造データとして2段階復号化する必要があるかを判定することを説明した。
【0051】
実施の形態3.
また、復号化判定部106の判定方法として、復号化判定パターンを用いて詳細復号化が必要かどうかを判定する形態が考えられる。
【0052】
図6に、本実施の形態に係る復号化判定の例を示す。
上段は受信したデータであり、中段は復号化判定パターンである。
復号化判定パターンは、コマンド実行結果として最短になるように作成されたデータ列であり、ASN.1符号化ではデータ長はその先頭ビットが1のとき1バイトより長くなるように符号化されるため、データ長に当たるバイトは先頭ビットを1とする。
入力データと符号化判定パターンをAND演算した結果が図6の下段である。
演算結果が全て0であれば詳細復号化の必要は無いと判断できる。
図6の例では、下段のAND演算結果に「8」が含まれるので、詳細復号化が必要である。
なお、図6の例では、受信データ全体に対して復号化判定パターンを適用して、受信データ全体に対するAND演算結果を求めているが、受信データの「全体データ長」識別子(index=1〜4)のビット値に対してのみ復号化判定パターンを適用し、「全体データ長」識別子に対するAND演算結果が全て0であれば詳細復号化の必要は無いと判断するようにしてもよい。
【0053】
このように、本実施の形態によれば、ビット演算処理による比較的高速な処理により復号化判定ができるという効果がある。
【0054】
以上、本実施の形態では、復号化判定部が、あらかじめ設定されたコマンド毎の復号化判定マスクパターンと受信データを比較することで、可変長階層構造データとして2段階復号化する必要があるかを判定することを説明した。
【0055】
実施の形態4.
以上の実施の形態1〜3と異なり、本実施の形態では、復号化判定部106が無い構成を説明する。
【0056】
復号化判定部106が無い場合は、通信制御部107から直接コマンドパラメータ作成部103の復号化部105に受信データがわたるため、図4のフローチャートのステップ3に当たる処理が無く、全てのデータはステップ7の対象となる。
復号化判定は行われないため、ステップ8の判定結果データの付与も行われず、ステップ9の判定は無く、全ての受信データはステップ11の対象となる。
つまり、本実施の形態では、通信部108により受信された受信データが定義受信データ及び不定受信データのいずれであっても詳細復号化の対象とし、「データ長」識別子の先頭ビットの値から「データ長」識別子のデータ長を導出して、パラメータデータの開始位置を導出してパラメータデータの復号化を行う。
【0057】
以上、本実施の形態では、復号化判定部が無く、全ての受信データを可変長階層構造データとして2段階復号化することを説明した。
【0058】
実施の形態5.
インデックスによる復号化を行う際には、コマンド毎にリーダが送信するデータのコマンドインタフェースにあわせたデータパターンとパラメータ定義が必要である。
本実施の形態では、この定義をファイル入力する例について説明する。
【0059】
図10に本実施の形態に係るシステム構成例を示す。
本実施の形態では、復号化のデータパターン及びパラメータ定義は、定義情報として、復号化判定部106と復号化部105に入力される。
入力の形式は、ファイルなどに記載したものを実行時に読み込むか、コード生成ツールなどを用いて定義を実行形式に変換し、受信データの判定用データやパラメータリストの定義を作成する。
そして、復号化判定部106は、定義情報に記述されている復号化用コマンド実行結果データパターンのデータ長と受信データの「全体データ長」識別子から得られる受信データの全体データ長とを比較して、詳細復号化が必要か否かを判断する。
また、復号化部105では、定義情報に記述されているパラメータデータの開始位置の基準位置から、定義受信データにおけるパラメータデータの開始位置を導出し、パラメータデータの復号化を行う。
【0060】
図11に入力ファイル(定義情報)の記載例を示す。
1行目はコマンド実行結果のデータ定義であることを示す。この例はInventoryTagsコマンド用の定義である。
2行目は、インデックスによる復号化可能な実行結果パターン定義であることを示す。
3行目から5行目は、復号用コマンド実行結果データパターンの最短パターンを示す。
6行目から16行目は、復号化パラメータ定義を示す。
7行目から11行目は、第1パラメータであるタグ枚数パラメータの定義である。インデックス17番目から1バイトをパラメータとして抽出している。
12行目から15行目は、第2パラメータであるタグIDパラメータの定義である。インデックス20番目からデータ末尾までをパラメータとして抽出している。
17行目から21行目は、この実行結果パターン定義を用いるかどうかを決めるためのフィルターの定義である。
ここまではインデックスによる符号化を行うための定義である。
23行目は、インデックスによる復号化が不可能な場合の実行結果パターン定義であることを示す。
27行目から29行目にパラメータの定義があるが、インデックス8以降のデータを一括してパラメータ化するよう定義している。
このような定義を、デバイス制御に必要なコマンド毎に記載する。
【0061】
本実施の形態による方法では、リーダのコマンドインタフェースにあわせた定義ができると共に、コマンドインタフェースの変更への対応や、コードの流用性を高めることができる。
【0062】
以上、本実施の形態では、コマンドパラメータ作成部の復号化判定部、復号化部が、コマンド毎の受信データパターンを設定ファイルとして入力することを説明した。
【0063】
実施の形態6.
本実施の形態では、サーバ100がログを出力する機能を有する構成について説明する。
【0064】
図12に本実施の形態に係るシステム構成例を示す。
図12に示す構成例では、サーバ100の動作を記録するためのログ出力を行うため、ログ制御部109を各階層とは別に設ける。
ログの設定は、ログ出力の有無、出力レベル、出力先ファイル名、ファイル形式などについて、ファイルに記載して読み込ませるか、起動時のパラメータとして与えることによりログ制御部109の動作を設定する。
【0065】
サーバ100は、ログ制御部109を通じてログを出力する。
ログ出力例を図13に示す。
図13のように、データの送受信や復号化結果(パラメータデータ)、アプリケーションへの通知状況などを、ログレベル、日時などのヘッダ情報を付加して出力する。
【0066】
以上、本実施の形態では、デバイス制御装置の各部の挙動をログファイルとして出力することを説明した。
【0067】
最後に、実施の形態1〜6に示したサーバ100のハードウェア構成例について説明する。
図14は、実施の形態1〜6に示すサーバ100のハードウェア資源の一例を示す図である。
なお、図14の構成は、あくまでもサーバ100のハードウェア構成の一例を示すものであり、サーバ100のハードウェア構成は図14に記載の構成に限らず、他の構成であってもよい。
【0068】
図14において、サーバ100は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
【0069】
通信ボード915は、図1に示すように、ネットワークに接続されている。例えば、通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続されていても構わない。
【0070】
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
【0071】
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
【0072】
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
サーバ100の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
【0073】
上記プログラム群923には、実施の形態1〜6の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
【0074】
ファイル群924には、実施の形態1〜6の説明において、「〜の判断」、「〜の判定」、「〜の符号化」、「〜の復号化」、「〜の計算」、「〜の比較」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1〜6で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0075】
また、実施の形態1〜6の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、実施の形態1〜6の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1〜6の「〜部」の手順や方法をコンピュータに実行させるものである。
【0076】
このように、実施の形態1〜6に示すサーバ100は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【0077】
100 サーバ、101 デバイス制御部、102 詳細復号化部、103 コマンドパラメータ作成部、104 符号化部、105 復号化部、106 復号化判定部、107 通信制御部、108 通信部、109 ログ制御部、200 アプリケーションサーバ、300 RFIDリーダ、400 タグ、500 ネットワーク、600 ネットワーク。

【特許請求の範囲】
【請求項1】
符号化されているパラメータデータと前記パラメータデータのデータ長が示される符号化されているデータ長識別子とが含まれ、前記データ長識別子に続いて前記パラメータデータが配置され、前記パラメータデータの開始位置が不定であり、前記データ長識別子の先頭ビットの値により前記データ長識別子のデータ長が判別可能な不定受信データを受信するデータ受信部と、
前記不定受信データにおいて前記データ長識別子の先頭ビットを抽出し、前記データ長識別子の先頭ビットの値に基づいて前記データ長識別子のデータ長を判断して前記パラメータデータの開始位置を判定し、判定した前記パラメータデータの開始位置から前記データ長識別子を復号して得られるデータ長分のビット列を復号し、復号後のパラメータデータを抽出する不定受信データ復号化部とを有することを特徴とする情報処理装置。
【請求項2】
前記不定受信データ復号化部は、
前記不定受信データに含まれる前記データ長識別子の先頭ビットの値に基づいて前記データ長識別子のデータ長を判断して前記データ長識別子を復号し、復号結果から前記パラメータデータのデータ長を得ることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記データ受信部は、
パラメータデータの開始位置が所定の規則で定義されている基準位置に一致する定義受信データを受信する場合があり、
前記情報処理装置は、更に、
前記データ受信部により受信された受信データが定義受信データ及び不定受信データのいずれであるかを判別する受信データ判別部と、
前記受信データ判別部により受信データが定義受信データと判定された場合に、前記定義受信データにおいて前記基準位置から前記規則で定義されているデータ長分のビット列を復号し、復号後のパラメータデータを抽出する定義受信データ復号化部とを有し、
前記不定受信データ復号化部は、
前記受信データ判別部により受信データが不定受信データと判定された場合に、前記不定受信データにおいて前記データ長識別子の先頭ビットを抽出し、前記データ長識別子の先頭ビットの値に基づいて前記データ長識別子のデータ長を判断して前記パラメータデータの開始位置を判定し、判定した前記パラメータデータの開始位置から前記データ長識別子を復号して得られるデータ長分のビット列を復号し、復号後のパラメータデータを抽出することを特徴とする請求項1又は2に記載の情報処理装置。
【請求項4】
前記データ受信部は、
受信データ全体のデータ長が示される符号化されている全体データ長識別子が含まれている定義受信データと不定受信データとを受信し、
前記データ受信部により受信された受信データに含まれている全体データ長識別子を復号して得られる受信データ全体のデータ長が所定のデータ長以下の場合に受信データを定義受信データと判定し、全体データ長識別子を復号して得られる受信データ全体のデータ長が前記所定のデータ長を超える場合に受信データを不定受信データと判定することを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記受信データ判別部は、
前記データ受信部により受信された受信データ全体のデータ長を測定し、測定した受信データ全体のデータ長が所定のデータ長以下の場合に受信データを定義受信データと判定し、測定した受信データ全体のデータ長が前記所定のデータ長を超える場合に受信データを不定受信データと判定することを特徴とする請求項3又は4に記載の情報処理装置。
【請求項6】
前記データ受信部は、
受信データ全体のデータ長が示される符号化されている全体データ長識別子が含まれている定義受信データと不定受信データとを受信し、
前記受信データ判別部は、
前記データ受信部により受信された受信データに含まれている全体データ長識別子のビット値に基づいて、受信データが定義受信データ及び不定受信データのいずれであるかを判別することを特徴とする請求項3〜5のいずれかに記載の情報処理装置。
【請求項7】
前記定義受信データ復号化部は、
前記データ受信部により受信される定義受信データにおけるパラメータデータの開始位置の基準位置が示されている定義情報を入力し、
入力した定義情報に示されている基準位置から前記データ受信部により受信された定義受信データのパラメータデータの復号を行い、復号後のパラメータデータを抽出することを特徴とする請求項3〜6のいずれかに記載の情報処理装置。
【請求項8】
前記データ受信部は、
データ長識別子に続いてパラメータデータが配置され、前記パラメータデータの開始位置が所定の規則で定義されている基準位置に一致し、前記データ長識別子の先頭ビットの値により前記データ長識別子のデータ長が判別可能な定義受信データを受信する場合があり、
前記不定受信データ復号化部は、
前記データ受信部により受信された受信データが前記定義受信データ及び前記不定受信データのいずれであっても、受信データにおいて前記データ長識別子の先頭ビットを抽出し、前記データ長識別子の先頭ビットの値に基づいて前記データ長識別子のデータ長を判断して前記パラメータデータの開始位置を判定し、判定した前記パラメータデータの開始位置から前記データ長識別子を復号して得られるデータ長分のビット列を復号し、復号後のパラメータデータを抽出することを特徴とする請求項1〜7のいずれかに記載の情報処理装置。
【請求項9】
前記情報処理装置は、更に、
前記データ受信部による受信データの受信時刻、前記不定受信データ復号化部により抽出されたパラメータデータの少なくともいずれかが示されるログデータを生成し、生成したログデータを出力するログ制御部を有することを特徴とする請求項1〜8のいずれかに記載の情報処理装置。
【請求項10】
符号化されているパラメータデータと前記パラメータデータのデータ長が示される符号化されているデータ長識別子とが含まれ、前記データ長識別子に続いて前記パラメータデータが配置され、前記パラメータデータの開始位置が不定であり、前記データ長識別子の先頭ビットの値により前記データ長識別子のデータ長が判別可能な不定受信データをコンピュータが受信するデータ受信ステップと、
前記コンピュータが、前記不定受信データにおいて前記データ長識別子の先頭ビットを抽出し、前記データ長識別子の先頭ビットの値に基づいて前記データ長識別子のデータ長を判断して前記パラメータデータの開始位置を判定し、判定した前記パラメータデータの開始位置から前記データ長識別子を復号して得られるデータ長分のビット列を復号し、復号後のパラメータデータを抽出する不定受信データ復号化ステップとを有することを特徴とする情報処理方法。
【請求項11】
符号化されているパラメータデータと前記パラメータデータのデータ長が示される符号化されているデータ長識別子とが含まれ、前記データ長識別子に続いて前記パラメータデータが配置され、前記パラメータデータの開始位置が不定であり、前記データ長識別子の先頭ビットの値により前記データ長識別子のデータ長が判別可能な不定受信データを受信するデータ受信処理と、
前記不定受信データにおいて前記データ長識別子の先頭ビットを抽出し、前記データ長識別子の先頭ビットの値に基づいて前記データ長識別子のデータ長を判断して前記パラメータデータの開始位置を判定し、判定した前記パラメータデータの開始位置から前記データ長識別子を復号して得られるデータ長分のビット列を復号し、復号後のパラメータデータを抽出する不定受信データ復号化処理とをコンピュータに実行させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2010−287962(P2010−287962A)
【公開日】平成22年12月24日(2010.12.24)
【国際特許分類】
【出願番号】特願2009−138572(P2009−138572)
【出願日】平成21年6月9日(2009.6.9)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】