(57)【特許請求の範囲】
【請求項１】
データを記憶するメモリを備える通信装置と通信を行い、上記通信装置からデータを読み取るデータ読み取り装置であって、
上記通信装置から、第１のデータと、上記第１のデータの後に付加され上記第１のデータの正当性チェック処理のために算出されたチェックデータとからなる上記データを受信装置により受信する受信部と、
上記受信部が受信した上記データに対して、上記第１のデータのなかのエラーを検出する所定のエラー検出処理を処理装置により行い、上記第１のデータのなかにエラーを検出した場合に、上記第１のデータのなかでエラーが検出されたエラー検出位置を処理装置により特定して出力するエラー検出／エラー位置検出部と、
上記エラー検出／エラー位置検出部から上記エラー検出位置を入力し、上記通信装置に対して、上記データのなかの上記エラー検出位置から上記チェックデータの最終位置までの部分データの送信を要求する再送信要求コマンドを処理装置により生成する再送信制御部と、
上記再送信制御部が生成した再送信要求コマンドを上記通信装置に送信装置により送信する送信部と
を備え、
上記受信部は、
上記通信装置から、上記送信部が上記通信装置に送信した再送信要求コマンドに対する応答として送信された上記部分データを受信し、
上記エラー検出／エラー位置検出部は、
上記受信部が受信した上記部分データに対して上記所定のエラー検出処理を行い、上記部分データのなかにエラーを検出しない場合に、上記データのなかの先頭位置から上記エラー検出位置の手前までのデータと上記部分データとを結合して結合したデータとし、上記部分データに含まれた上記チェックデータに基づいて上記結合したデータのなかの上記第１のデータが正当なデータであるか否かという正当性チェック処理を処理装置により行い、上記第１のデータが正当なデータであると判定した場合に、上記結合したデータを上記通信装置から読み取ったデータとする
ことを特徴とするデータ読み取り装置。
【請求項２】
上記エラー検出／エラー位置検出部は、
上記第１のデータのなかにエラーを検出した場合に、上記第１のデータのなかでエラーが検出されたエラー検出位置を特定するとともに、上記第１のデータのなかでエラーとして検出されたエラーデータに対してエラーの修正を行い、上記受信部が受信した上記データに含まれる上記チェックデータに基づいて、上記修正したエラーデータを含む上記第１のデータが正当なデータであるか否かという正当性チェック処理を処理装置により行い、上記第１のデータが正当なデータでないと判定した場合に、上記第１のデータの上記エラー検出位置を出力する
ことを特徴とする請求項１に記載のデータ読み取り装置。
【請求項３】
データを記憶するメモリを備える通信装置と通信を行い、上記通信装置からデータを読み取るデータ読み取り装置のデータ読み取り方法であって、
受信部が、上記通信装置から、第１のデータと、上記第１のデータの後に付加され上記第１のデータの正当性チェック処理のために算出されたチェックデータとからなる上記データを受信装置により受信する受信ステップと、
エラー検出／エラー位置検出部が、上記受信ステップにより受信した上記データに対して、上記第１のデータのなかのエラーを検出する所定のエラー検出処理を処理装置により行い、上記第１のデータのなかにエラーを検出した場合に、上記第１のデータのなかでエラーが検出されたエラー検出位置を処理装置により特定して出力するエラー検出／エラー位置検出ステップと、
再送信制御部が、上記エラー検出／エラー位置検出ステップにより出力された上記エラー検出位置を入力し、上記通信装置に対して、上記データのなかの上記エラー検出位置から上記チェックデータの最終位置までの部分データの送信を要求する再送信要求コマンドを処理装置により生成する再送信制御ステップと、
送信部が、上記再送信制御ステップにより生成した再送信要求コマンドを上記通信装置に送信装置により送信する送信ステップと
を備え、
上記受信ステップは、
上記受信部が、上記通信装置から、上記送信ステップにより上記通信装置に送信した再送信要求コマンドに対する応答として送信された上記部分データを受信し、
上記エラー検出／エラー位置検出ステップは、
上記エラー検出／エラー位置検出部が、上記受信ステップにより受信した上記部分データに対して上記所定のエラー検出処理を行い、上記部分データのなかにエラーを検出しない場合に、上記データのなかの先頭位置から上記エラー検出位置の手前までのデータと上記部分データとを結合して結合したデータとし、上記部分データに含まれた上記チェックデータに基づいて上記結合したデータのなかの上記第１のデータが正当なデータであるか否かという正当性チェック処理を処理装置により行い、上記第１のデータが正当なデータであると判定した場合に、上記結合したデータを上記通信装置から読み取ったデータとする
ことを特徴とするデータ読み取り装置のデータ読み取り方法。
【請求項４】
上記エラー検出／エラー位置検出ステップは、
上記エラー検出／エラー位置検出部が、上記第１のデータのなかにエラーを検出した場合に、上記第１のデータのなかでエラーが検出されたエラー検出位置を特定するとともに、上記第１のデータのなかでエラーとして検出されたエラーデータに対してエラーの修正を行い、上記受信ステップにより受信した上記データに含まれる上記チェックデータに基づいて、上記修正したエラーデータを含む上記第１のデータが正当なデータであるか否かという正当性チェック処理を処理装置により行い、上記第１のデータが正当なデータでないと判定した場合に、上記第１のデータの上記エラー検出位置を出力する
ことを特徴とする請求項３に記載のデータ読み取り装置のデータ読み取り方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、ＩＣタグ等の通信装置からデータを読み取るデータ読み取り装置及びデータ読み取り装置のデータ読み取り方法に関する。
【背景技術】
【０００２】
従来技術では、コンピュータによる物品の個別管理や入退場管理の際に、非接触データ通信による自動認識（ＲＦＩＤ：Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ  Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）が行われている。非接触データ通信による自動認識（ＲＦＩＤ）では、例えば、個別管理や入退場管理等の対象となる識別対象物（物品や人物）に固有ＩＤ（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）を書き込んだＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）タグを貼付しておく。そして、データ読み取り装置は、例えば、ゲート（入り口、門等）やドアわき等に設置される。そこで、ＩＣタグを備えた識別対象物等が、そのゲートやドアわき等を通過するなどすると、ゲートやドアわき等に設置されたデータ読み取り装置が、電波を使ってＩＣタグに電力を供給するとともに、ＩＣタグから固有ＩＤを読み出すための読み出しのコマンドを送信する。
【０００３】
ＩＣタグは、データ読み取り装置からの電波により、内蔵されているシリコンチップが駆動される。ＩＣタグは、例えば、データ読み取り装置からの読み出しのコマンドに応じて、固有ＩＤなどのＩＣタグに記憶されている情報を、データ読み取り装置から発射されている電波に対する反射の有り／無しを利用して応答を返す。データ読み取り装置は、ＩＣタグからの応答である反射波の有無を識別し、固有ＩＤなどＩＣタグに記憶されている情報を読み出す。
【０００４】
ＩＣタグは、例えば、固有ＩＤ領域に加えて、ユーザーが書き換え可能なメモリ領域（ユーザーメモリともいう）を有する。ユーザーメモリに格納されているデータのデータ長は、固有ＩＤのデータ長に比べて長い。そのため、データ読み取り装置が、１回のコマンドでＩＣタグのユーザーメモリに記憶されているすべてのデータを読み取る場合には、読み取ったデータのエラー発生頻度が高くなる。
【０００５】
以上のような課題を回避するため、従来のデータ読み取り装置は、読み取るデータを複数の小さなパケットに分割し、それぞれのパケットを、複数の送信要求コマンドで順次読み出している。従来のデータ読み取り装置のデータ読み出し方式では、パケット読み出し中のエラーは、エラーが発生したパケットの再送信を要求することで、エラー発生に対するリカバリ処理を行っている。
【特許文献１】特開２００３−２９６６７４
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のデータ読み取り装置のデータ読み出し方式では、読み取るデータを小さなパケットに分割した場合に、個々のパケットを読み出すためのコマンド送信時の送信コマンドデータや、ＩＣタグからの応答（パケット）に付加されるリターンプリアンブル、ＣＲＣ等の情報がオーバーヘッドとしてあらわれてしまい、高速なデータ読み取りができないという課題がある。
【０００７】
本発明は、このような課題を解決するためになされたものであって、データ読み取り装置が、データ長の長いデータの通信を行うこと、また、データ長の長いデータの通信を行う際のエラー発生に対して、高速にリカバリ処理することを目的としている。
【課題を解決するための手段】
【０００８】
本発明に係るデータ読み取り装置は、
データを記憶するメモリを備える通信装置と通信を行い、上記通信装置からデータを読み取るデータ読み取り装置であって、
上記通信装置から上記データを受信装置により受信する受信部と、
上記受信部が受信したデータに対して、データのなかのエラーを検出する所定のエラー検出処理を処理装置により行い、上記データのなかにエラーを検出した場合に、上記データのなかでエラーが検出されたエラー検出位置を処理装置により特定して出力するエラー検出／エラー位置検出部と、
上記エラー検出／エラー位置検出部から上記エラー検出位置を入力し、上記通信装置に対して上記データのなかの上記エラー検出位置から上記データの最終位置までの部分データの送信を要求する再送信要求コマンドを処理装置により生成する再送信制御部と、
上記再送信制御部が生成した再送信要求コマンドを上記通信装置に送信装置により送信する送信部と
を備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、通信装置からデータを読み取るデータ読み取り装置において、受信部が、通信装置からデータを受信し、エラー検出／エラー位置検出部が、受信したデータに対し所定のエラー検出処理を行い、データのなかにエラーを検出した場合に、データのなかでエラーが検出されたエラー検出位置を特定して出力し、再送信制御部が、エラー検出／エラー位置検出部から上記エラー検出位置を入力し、通信装置に対して上記エラー検出位置から上記データの最終位置までの部分データの送信を要求する再送信要求コマンドを生成し、送信部が、再送信制御部が生成した再送信要求コマンドを上記通信装置に送信することにより、
例えば、データ読み取り装置が読み取るデータの受信中にエラーが発生した場合であっても、エラーを検出した位置からのデータの再送信を要求することができるので、データ読み取り装置の処理速度を向上させることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１０】
図１は、実施の形態１に係るデータ読み取り装置１のハードウェア資源の一例を示す図である。
【００１１】
図１において、データ読み取り装置１は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信ボード９１５（通信装置、送信装置、受信装置の一例）、表示装置９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、プリンタ装置９０６、スキャナ装置９０７、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
【００１２】
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信ボード９１５、キーボード９０２、スキャナ装置９０７、ＦＤＤ９０４などは、入力部、入力装置の一例である。
【００１３】
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力部、出力装置の一例である。
【００１４】
通信ボード９１５は、図示はないが、ファクシミリ機、電話器、ＬＡＮ等に接続されている。通信ボード９１５は、ＬＡＮに限らず、インターネット、ＩＳＤＮ等のＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。
【００１５】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。
【００１６】
上記プログラム群９２３には、以下に述べる実施の形態の説明において「〜部」、「〜手段」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【００１７】
ファイル群９２４には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明する情報やデータや信号値や変数値やパラメータが、「〜ファイル」、「〜データベース」、「〜データ」の各項目として記憶されている。「〜ファイル」、「〜データベース」、「〜データ」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリになどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００１８】
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｋ）等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００１９】
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「手段」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【００２０】
実施の形態１．
実施の形態１では、データを記憶するメモリを備えるＩＣタグ２０（通信装置の一例）と通信を行い、ＩＣタグ２０からデータを読み取るデータ読み取り装置１について説明する。
【００２１】
図２は、実施の形態１にかかるＲＦＩＤシステム８００のデータ読み取り装置１の構成を示す図である。実施の形態１に係るＲＦＩＤシステム８００は、データ読み取り装置１と、データ読み取り装置１を制御するコンピュータ５００と、データ読み取り装置１がデータを読み取る対象であるＩＣタグ２０から構成される。データ読み取り装置１は、データ読み取り装置１を制御するコンピュータ５００から、ＩＣタグ２０の保持するメモリに記憶されたデータの読み出しが指示され（データ読み出し指示）、データ読み出し指示に従ってＩＣタグ２０からデータの読み出しを行い、読み出したデータをデータ読み出し結果としてコンピュータ５００に送信する。
【００２２】
図２を用いて、実施の形態１に係るデータ読み取り装置１のブロック構成及びブロック機能の概略について説明する。
【００２３】
図２において、データ読み取り装置１は、送信制御部２と、送信部３と、受信処理部４と、受信制御部５と、再送信制御部６と、送信アンテナ１０ａと、受信アンテナ１０ｂとを備えている。
【００２４】
送信制御部２は、ＩＣタグ２０（通信装置の一例）に送信するコマンド（コマンド系列ともいう）を作成する。送信制御部２は、コンピュータ５００から入力されたデータの読み出し指示に従って、データ読み出し指示を実行するためのコマンド（送信要求コマンドの一例）を、処理装置を用いて生成する。
【００２５】
送信部３は、送信制御部２により生成されたコマンド（送信要求コマンドの一例）を、ＩＣタグ２０に送信する。また、後述する再送信制御部６により生成されたコマンド（再送信要求コマンドの一例）を、ＩＣタグ２０に送信する。
【００２６】
受信処理部４は、送信部３により送信されたコマンドに対する応答としてＩＣタグ２０から応答データを受信装置により受信して、受信した応答データに対してエラーチェック等の処理を処理装置により行い、エラーチェック等の結果に応じた処理を応答データに対して行う。受信処理部４の詳細については、後述する。
【００２７】
受信制御部５は、ＩＣタグ２０から受信した応答データにおいて、受信処理部４によりエラー検出しなかった場合に、受信結果（応答データ）を受信処理部４から受取り、コンピュータ５００にデータ読み出し結果として出力するとともに、次のコマンド送信（送信要求コマンドの送信）の起動を制御する。
【００２８】
再送信制御部６は、ＩＣタグ２０から受信した応答データにおいて、受信処理部４によりエラー検出した場合に、エラーの検出結果および応答データにおけるエラー検出位置を受信処理部４から受取り、コマンドの再送信を制御する。
【００２９】
また、データ読み取り装置１は、ＩＣタグに電波を送信する送信アンテナ１０ａ、ＩＣタグからの応答データを受信する受信アンテナ１０ｂに接続されている。
【００３０】
受信処理部４は、受信部４１と、エラー検出／エラー位置検出部７と、受信バッファ部８と、受信バッファ８１と、最適受信データ長判定部９とを備えている。
【００３１】
受信部４１は、送信部３により送信されたコマンドに対する応答としてＩＣタグ２０（通信装置）から応答データを受信アンテナ１０ｂ（受信装置）により受信する。エラー検出／エラー位置検出部７は、ＩＣタグ２０からの応答データのエラー検出及びエラー位置検出を行う。受信バッファ部８は、ＩＣタグ２０からの応答データを受信バッファ８１に一時的に保持する。最適受信データ長判定部９は、応答データにおけるエラー検出／エラー位置検出部７で検出したエラー位置の情報の履歴を監視し、最適な応答データ長を判定する。
【００３２】
さらに、図２を用いて、データ読み取り装置１における各機能ブロックのデータ読み取り機能について詳しく説明する。
【００３３】
データ読み取り装置１には、データ読み取り装置１を制御するコンピュータ５００から、ＩＣタグ２０が備えるメモリ（ユーザーメモリともいう）に記憶されたデータの読み出しをするための指示（データ読み出し指示）が、入力される。
【００３４】
送信制御部２は、コンピュータ５００からデータ読み出し指示が入力されると、コンピュータから要求されたデータ読み出し指示を実行するためのコマンド（送信要求コマンドの一例）を処理装置により生成し、生成したコマンドをＩＣタグ２０に送信するように制御する。送信制御部２は、コマンドを生成すると同時に、ＩＣタグ２０からの応答データとして受信すべき応答データのデータ長（応答データ長）が予めわかっている場合には、応答データ長を受信処理部４および受信制御部５に対して出力する（伝える）。応答データ長が予めわかっている場合とは、例えば、送信制御部２が入力したコンピュータからのデータ読み出し指示で、受信すべき応答データの応答データ長が指示されている場合等である。
【００３５】
送信部３は、送信制御部２で生成されてＩＣタグ２０に送信するように制御されたコマンドの変調を行い、ＩＣタグ２０に送信する。送信部３で変調されたコマンドは、送信アンテナ１０ａ（送信装置の一例）を介して、ＩＣタグ２０に電波として発射される。
【００３６】
ＩＣタグ２０は、送信アンテナ１０ａから発射された電波（コマンド）を復調し、コマンドの解析をし、発射されたコマンドに応じた応答（レスポンス）である応答データの電波を返信する。
【００３７】
受信部４１は、ＩＣタグ２０からの応答データである電波を受信アンテナ１０ｂ（受信装置の一例）で受信し、受信した応答データである電波を復調する。
【００３８】
エラー検出／エラー位置検出部７は、受信部４１により復調された応答データ（データの一例）を入力し、入力した応答データに対してエラー検出処理（所定のエラー検出処理の一例）を行う。
【００３９】
ここで、エラー検出／エラー位置検出部７が入力した応答データに対して行うエラー検出処理（所定のエラー検出処理）の具体例について説明する。図１１は、実施の形態１に係るＲＦＩＤシステム８００における無線通信において、データの符号化を行った結果のビット列の正常な周波数パターンを示す図である。実施の形態１に係るＲＦＩＤシステム８００における無線通信は、例えば、ＥＰＣグローバルにより標準化がなされている無線インタフェース仕様に基づく無線通信であるものとする。この場合、データの符号化を行った結果のビット列の正常な周波数パターンは、図１１に示す周波数パターンとなる。
【００４０】
エラー検出／エラー位置検出部７は、「００」のケースでは、ビット列の周波数パターンが「ＨＬＨＬ」である場合は正しいが、例えば、「ＨＨＨＬ」の場合はエラーであると判断する。また、あるいは、エラー検出／エラー位置検出部７は、「０１」のケースでは、ビット列の周波数パターンが「ＬＨＬＬ」である場合は正しいが、例えば、「ＬＨＨＬ」の場合はエラーであると判断する。このように、エラー検出／エラー位置検出部７は、所定のエラー検出処理として、例えば、図１１に示すビット列の周波数パターン以外のパターンを検出して、エラーとするエラー検出処理を行う。
【００４１】
エラー検出／エラー位置検出部７は、応答データのなかにエラーを検出した場合に、応答データのなかでエラーが検出されたエラー検出位置を処理装置により特定して再送信制御部６に出力する。また、エラー検出／エラー位置検出部７は、受信バッファ部８に対して、応答データのなかにエラーを検出したことを示すエラー結果報告を出力する。
【００４２】
エラー検出／エラー位置検出部７は、応答データのなかにエラーを検出しなかった場合には、ＩＣタグ２０からの応答データに自動的に付加されるＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ：巡回冗長検査）に基づいてＣＲＣチェックを行う。このとき、応答データに含まれるチェックデータ（後述する）に基づいて応答データの正当性チェック処理を行っても良い。ここで、応答データに自動的に付加されるＣＲＣとは、従来の通信方式により、通信データに付加される連続する誤りを検出するための誤り検出符号の一種である。
【００４３】
エラー検出／エラー位置検出部７は、応答データに対して、ＣＲＣチェック処理あるいはチェックデータによる正当性チェック処理を行った結果、応答データが正当なデータではないと判断した場合には、受信バッファ部８に対して、応答データが正当なデータではないことを示すエラー結果報告を出力する。
【００４４】
受信バッファ部８は、受信部４１が復調した応答データを、一時的に受信バッファ８１（記憶装置の一例）に蓄える。受信バッファ部８は、エラー検出／エラー位置検出部７から応答データに対するエラー結果報告がなく、かつ、応答データが送信制御部２から指示された応答データ長に達している場合に、受信制御部５に対して受信バッファ８１の内容（すなわち、応答データ）を出力する。ここでいうエラー結果報告とは、上述したエラー検出処理（所定のエラー検出処理の一例）によるエラーの報告やＣＲＣチェック処理あるいはチェックデータによる正当性チェック処理によるエラーの報告等を含むものである。
【００４５】
受信制御部５は、受信バッファ部８から入力されて送られてきた応答データのデータ長と、送信制御部２から指示された応答データ長との比較を処理装置により行い、一致している場合には、データ読み取り装置１を制御するコンピュータ５００に読み出し結果として応答データを出力する。
【００４６】
再送信制御部６は、エラー検出／エラー位置検出部７から応答データのなかのエラー検出位置を入力し、ＩＣタグ２０（通信装置）に対して、応答データのうちのエラー検出位置から応答データの最終位置までの部分である部分データの送信を要求する再送信要求コマンドを処理装置により生成する。例えば、再送信制御部６は、応答データの最終位置までの受信が完了（すなわち、ＩＣタグ２０からの応答が完了）したと判断すると、応答データにおけるエラー検出／エラー位置検出部７から報告されたエラー検出位置から未読み取りエリア分の長さを計算し、応答データのうちのエラー位置から未読み取りエリア分の長さのデータ（部分データ）の送信を要求するためのコマンド（再送信要求コマンド）を生成して送信部３に出力する。未読み取りエリア分の長さのデータ（部分データ）とは、応答データにおけるエラー検出／エラー位置検出部７から報告されたエラー検出位置から、応答データの最終位置までのデータのことである。
【００４７】
送信部３は、再送信制御部６により生成された再送信要求コマンドの変調を行い、ＩＣタグ２０に送信する。送信部３で変調された再送信要求コマンドは、送信アンテナ１０ａを介して、ＩＣタグ２０に再送信要求コマンドの電波として発射される。
【００４８】
ＩＣタグ２０は、送信アンテナ１０ａから発射された電波（部分データの送信を要求する再送信要求コマンド）を復調し、コマンド（部分データの送信を要求する再送信要求コマンド）を解析し、解析したコマンド（部分データの送信を要求する再送信要求コマンド）に応じた応答（すなわち、部分データ）として部分データの電波を返す。
【００４９】
受信部４１は、ＩＣタグ２０からの部分データ（すなわち、再送信要求コマンドに対する応答として受信した応答データ）の電波を受信アンテナ１０ｂ（受信装置の一例）により受信し、ＩＣタグ２０からの部分データの電波を復調する。
【００５０】
エラー検出／エラー位置検出部７は、受信部４１により復調された部分データを入力し、入力した部分データに対してエラー検出処理（所定のエラー検出処理の一例）を行う。
【００５１】
エラー検出／エラー位置検出部７は、部分データのなかにエラーを検出した場合に、部分データのなかでエラーが検出されたエラー検出位置を処理装置により特定して再送信制御部６に出力する。また、エラー検出／エラー位置検出部７は、受信バッファ部８に対して、部分データのなかにエラーを検出したことを示すエラー結果報告を出力する。
【００５２】
受信バッファ部８は、受信部４１が復調した部分データを、一時的に受信バッファ８１（記憶装置の一例）に蓄える。受信バッファ部８は、例えば、受信バッファ８１において、前にＩＣタグ２０から受信して既に格納されている応答データとは異なる領域に部分データを格納する。あるいは、受信バッファ部８は、受信バッファ８１において、既に格納されている応答データのエラー検出位置から、部分データを上書きして格納してもよい。
【００５３】
エラー検出／エラー位置検出部７は、部分データのなかにエラーを検出しない場合に、ＩＣタグ２０からの部分データに自動的に付加されるＣＲＣに基づいてＣＲＣチェック処理を行い部分データの正当性をチェックする。エラー検出／エラー位置検出部７は、部分データに対して、ＣＲＣチェック処理を行った結果、部分データが正当なデータではないと判断した場合には、受信バッファ部８に対して、部分データが正当なデータではないことを示すエラー結果報告を出力する。
【００５４】
エラー検出／エラー位置検出部７は、部分データに対して、ＣＲＣチェック処理を行った結果、部分データが正当なデータであると判断した場合には、受信バッファ部８により受信バッファ８１に保持されている応答データ（すなわち、１回目の送信要求コマンドに対する応答として受信した応答データ）のなかの先頭位置からエラー検出位置の手前までの応答データと部分データとを結合して結合したデータをＩＣタグ２０（通信装置）から読み取ったデータとする。例えば、エラー検出／エラー位置検出部７は、受信バッファ部８により受信バッファ８１に保持されている応答データ（すなわち、１回目の送信要求コマンドに対する応答として受信した応答データ）のエラーが検出されたエラー検出位置から、部分データ（すなわち、再送信要求コマンドに対する応答として受信した応答データ）を上書きすることにより、データの結合を行うことができる。
【００５５】
上述したように、エラー検出／エラー位置検出部７は、部分データのなかにエラーを検出した場合には、再び、部分データのなかのエラー検出位置を再送信制御部６に出力する。また、エラー検出／エラー位置検出部７は、受信バッファ部８に対して、部分データのなかにエラーを検出したことを示すエラー結果報告を出力する。そして、再送信制御部６は、部分データのなかのエラー検出位置からの未読み取り分のデータを再送信を要求するための再送信要求コマンド（２回目）を生成して、送信部３は、ＩＣタグ２０に再送信要求コマンド（２回目）を送信する。
【００５６】
データ読み取り装置１は、受信バッファ８１に保持されている応答データが、エラー検出のない正当なデータであると判断され、かつ、送信制御部２から指示された応答データ長に達したと判断されるまで、上述した処理を繰り返して再送信を要求する処理を繰り返してもよい。あるいは、データ読み取り装置１は、再送信を要求する処理を繰り返す回数の上限を設定しても良い。上限を設定した場合は、
最適受信データ長判定部９は、エラー検出／エラー位置検出部７により特定されたエラー検出位置の情報を監視し、最適な部分データ長（再送信すべきデータのデータ長）を処理装置により算出し、算出した最適な部分データ長（再送信すべきデータのデータ長）を再送信制御部６に出力して最適な部分データ長の指示をする。
【００５７】
再送信制御部６は、最適受信データ長判定部９より指示された最適な部分データ長（再送信すべきデータのデータ長）に基づいて、コマンド（再送信要求コマンド）の生成を行う。
【００５８】
図３は、実施の形態１に係るＩＣタグ２０（通信装置の一例）の備える（保持する）メモリ２１の構成図である。図３を用いて、実施の形態１に係るＩＣタグ２０（通信装置の一例）の備えるメモリ２１の構成図について説明する。
【００５９】
図３において、ＩＣタグ２０の保持するメモリ２１は、ユーザーが書き換え可能なメモリである。メモリ２１は、ブロック０〜Ｎに分割されている。ブロックｘ（ｘは０からＮの整数）には、ブロックｘのデータｘとチェックデータｘとが記憶される。すなわち、ブロックｘには、ブロックｘのデータｘと、ブロックｘのデータｘ後に格納されるチェックデータｘとが格納される。すなわち、ブロックｘに格納される全データであるブロックデータｘは、ブロックｘのデータｘと、ブロックｘのデータｘ後に付加されたチェックデータｘとから構成される。
【００６０】
チェックデータｘとは、ブロックｘのデータｘの正当性チェック処理を行うために算出されたデータである。チェックデータｘの生成ルールは、特に規定しておらず、ブロックｘのデータｘのビット誤りを検出できるルールであればよい。チェックデータｘの生成ルールは、例えば、ＩＳＯ／ＩＥＣ１８０００−６Ｃに記載されているようなＣＲＣ１６生成ルールでもかまわない。
【００６１】
図４は、データ読み取り装置１がＩＣタグ２０からチェックデータｘを含むブロックデータｘの読み出しを行い、所定のエラー検出処理の結果、ブロックデータｘのなかにエラーが未検出の場合の通信動作を示す図である。
【００６２】
図４において、データ読み取り装置１は、上述したＩＣタグ２０のメモリ２１に格納されているブロックデータｘ（上述した応答データの一例）を読み出すものとする。ブロックデータｘは、ブロックｘのデータｘとチェックデータｘとから構成されている。
【００６３】
データ読み取り装置１では、送信制御部２が、ＩＣタグ２０から、ブロックｘのデータｘ（第１のデータの一例）とブロックｘのデータｘの正当性チェック処理を行うために算出されたチェックデータｘ（チェックデータの一例）とを含むブロックデータｘ（データの一例）を読み出すための送信コマンドＣ１（送信要求コマンドの一例）を生成する。そして、送信部３が、ＩＣタグ２０に送信コマンドＣ１を送信する（Ｓ１）。受信部４１は、送信コマンドＣ１の応答としてブロックデータｘを含む受信データＤ１を受信する（Ｓ２）。
【００６４】
図５は、受信データＤ１のフォーマットを示す図である。図５に示すように、受信データＤ１は、従来の通信方式により、リターンプリアンブル５１、データ部５２，ＣＲＣ５３とから構成される。従って、図４の受信データＤ１は、ブロックデータｘの前にリターンプリアンブル５１が付加され、ブロックデータｘの後にＣＲＣ５３が付加され、データ部５２に読み取り対象であるブロックデータｘを有する。ブロックデータｘは、上述したように、ブロックｘのデータｘとチェックデータｘとから構成されている。従って、受信データＤ１は、リターンプリアンブル５１、ブロックｘのデータｘ（データ部５２）、チェックデータｘ、ＣＲＣ５３の順に構成されている。
【００６５】
図４に戻り、データ読み取り装置１では、エラー検出／エラー位置検出部７が、受信した受信データＤ１に対してエラー検出処理（所定のエラー検出処理の一例）を行うとともに、受信バッファ部８が、受信した受信データＤ１に対してブロックデータｘの読み取りを行い受信バッファ８１に格納する。
【００６６】
このとき、受信バッファ部８は、受信データＤ１をそのまま受信バッファ８１に格納しても良いし、受信データＤ１に対してブロックデータｘの読み取りを行い、ブロックデータｘを受信バッファ８１に格納しても良い。
【００６７】
エラー検出／エラー位置検出部７は、エラー検出処理（所定のエラー検出処理の一例）の結果、受信データＤ１のなかに（ブロックデータｘのなかに）エラーを検出しなかった場合には、チェックデータｘを含むブロックデータｘと、ＩＣタグ２０からの応答通信時に自動的に付加されるＣＲＣ５３とにより、通信エラーの確認を行う。つまり、エラー検出／エラー位置検出部７は、チェックデータｘを含むブロックデータｘから算出されるＣＲＣと、ＩＣタグ２０からの受信データＤ１に含まれるＣＲＣ５３との比較を処理装置により行う。エラー検出／エラー位置検出部７は、チェックデータｘを含むブロックデータｘから算出されるＣＲＣと、ＩＣタグ２０からの受信データＤ１に含まれるＣＲＣ５３とが一致していると判断した場合には、チェックデータｘを含むブロックデータｘはエラーのない正当な応答データであることが保障されたと判断する。そして、データ読み取り装置１では、受信バッファ部８が、正当な応答データとして保証されたブロックデータｘを受信バッファ８１から受信制御部５に出力する。この場合、受信バッファ部８は、チェックデータｘを破棄してもよい。
【００６８】
あるいは、エラー検出／エラー位置検出部７が受信データＤ１にエラーを検出しなかった場合には、データ読み取り装置１は、ＣＲＣによる正当性チェックではなく、ブロックデータｘに含まれるチェックデータｘに基づく正当性チェック処理を行っても良い。データ読み取り装置１では、エラー検出／エラー位置検出部７が、ブロックデータｘに含まれるチェックデータｘに基づいてブロックｘのデータｘ（第１のデータ）が正当なデータであるか否かという正当性チェック処理を処理装置により行い、ブロックｘのデータｘ（第１のデータ）が正当なデータであると判定した場合に、ブロックデータｘをＩＣタグ（通信装置）から読み取ったデータとして、受信制御部５に出力する。例えば、エラー検出／エラー位置検出部７は、ブロックデータｘのうちのブロックｘのデータｘから算出されるチェックデータと、受信した受信データＤ１に含まれるチェックデータｘとの比較を処理装置により行う等の処理をする。例えば、エラー検出／エラー位置検出部７は、ブロックデータｘのうちのブロックｘのデータｘから算出されるチェックデータと、受信した受信データＤ１に含まれるチェックデータｘとが一致していると判断した場合には、ブロックデータｘのうちのブロックｘのデータｘはエラーのない正当な応答データであることが保障されたと判断する。
【００６９】
図６は、データ読み取り装置１がＩＣタグ２０からチェックデータｘを含むブロックデータｘの読み出しを行い、所定のエラー検出処理の結果、ブロックデータｘのなかにエラーを検出した場合の通信動作を示す図である。
【００７０】
図６において、データ読み取り装置１は、上述したＩＣタグ２０のメモリ２１に格納されているブロックデータｘ（上述した応答データの一例）を読み出すものとする。ブロックデータｘは、ブロックｘのデータｘとチェックデータｘとから構成されている。
【００７１】
データ読み取り装置１では、送信制御部２が、ＩＣタグ２０から、ブロックｘのデータｘ（第１のデータの一例）とブロックｘのデータｘの正当性チェック処理を行うために算出されたチェックデータｘとを含むブロックデータｘ（データの一例）を読み出すための送信コマンドＣ１を生成する。そして、送信部３が、ＩＣタグ２０に送信コマンドＣ１を送信する（Ｓ１０：１回目の送信コマンド）。受信部４１は、送信コマンドＣ１の応答としてブロックデータｘを含む受信データＤ１を受信する（Ｓ１１：１回目の受信データＤ１）。
【００７２】
データ読み取り装置１では、受信バッファ部８が、受信した受信データＤ１に対してブロックデータｘの読み取りを行いブロックデータｘを受信バッファ８１に格納するとともに、エラー検出／エラー位置検出部７が、受信した受信データＤ１のブロックデータｘに対してエラー検出処理（所定のエラー検出処理の一例）を行う。
【００７３】
このとき、受信バッファ部８は、受信データＤ１をそのまま受信バッファ８１に格納しても良いし、受信データＤ１に対してブロックデータｘの読み取りを行い、ブロックデータｘを受信バッファ８１に格納しても良い。
【００７４】
エラー検出／エラー位置検出部７は、ブロックｘのデータｘ（第１のデータ）とチェックデータｘとからなるブロックデータｘ（データ）に対してエラー検出処理（所定のエラー検出処理）を行い、ブロックデータｘのなかにエラーを検出した場合に、ブロックデータｘのなかでエラーが検出されたエラー検出位置（エラー位置の一例）を特定して再送信制御部６へ出力する。エラー検出／エラー位置検出部７は、ブロックｘのデータｘ（第１のデータ）のなかにエラーを検出した場合に、ブロックｘのデータｘのなかでエラーが検出されたエラー検出位置（エラー位置の一例）を特定して再送信制御部６へ出力してもよい。
【００７５】
再送信制御部６は、エラー検出／エラー位置検出部７からブロックデータｘにおけるエラー検出位置を入力し、ＩＣタグ２０に対して、ブロックデータｘのなかのエラ検出ー位置からチェックデータｘの最終位置（すなわち、ブロックデータｘの最終位置）までの未読み取りデータ（部分データの一例）の送信を要求する送信コマンドＣ２（再送信要求コマンドの一例）を処理装置により生成する。そして、送信部３が、ＩＣタグ２０に送信コマンドＣ２（再送信要求コマンドの一例）を送信する（Ｓ１２：２回目の送信コマンド）。
【００７６】
受信部４１は、送信コマンドＣ２の応答として、ブロックデータｘのなかのエラー検出位置からチェックデータｘの最終位置（すなわち、ブロックデータｘの最終位置）までの未読み取りデータ（部分データの一例）を含む受信データＤ２を受信する（Ｓ１３：２回目の受信データ）。送信コマンドＣ２に対するＩＣタグ２０からの受信データＤ２は、リターンプリアンブル５１ａ、データ部５２ａとしてエラー検出位置からチェックデータｘの最終位置までのデータ（未読み取りデータ（部分データの一例））、ＣＲＣ５３ａとから構成されている。
【００７７】
次に、データ読み取り装置１では、１回目に受信した受信データＤ１に対する処理と同様に、エラー検出／エラー位置検出部７が、受信した受信データＤ２に対してエラー検出処理（所定のエラー検出処理の一例）を行う。
【００７８】
このとき、１回目に受信した受信データＤ１に対する処理と同様に、受信バッファ部８が、受信した受信データＤ２に対して未読み取りデータ（部分データ）の読み取りを行い、受信バッファ８１に未読み取りデータを格納しても良い。また、このとき、受信バッファ部８は、受信バッファ８１において、既に格納されている１回目で受信したブロックデータｘとは異なるエリアに未読み取りデータを格納しても良い。あるいは、受信バッファ部８は、受信バッファ８１において、既に格納されている１回目で受信したブロックデータｘのエラー検出位置から、未読み取りデータを上書きして格納しても良い。また、このとき、受信バッファ部８は、受信データＤ２をそのまま受信バッファ８１に格納しても良い。
【００７９】
エラー検出／エラー位置検出部７は、エラー検出処理（所定のエラー検出処理の一例）の結果、受信した受信データＤ２にエラーを検出しなかった場合には、受信データＤ１におけるエラー検出位置からチェックデータｘまでのデータ（未読み取りデータ（部分データ））と、ＩＣタグ２０からの応答である受信データＤ２に自動的に付加されるＣＲＣ５３ａとにより、ＣＲＣチェック処理を行い（Ｓ１４）、通信エラーの確認を行う。つまり、エラー検出／エラー位置検出部７は、受信データＤ２に含まれる未読み取りデータ（部分データ）から算出されるＣＲＣと、ＩＣタグ２０からの受信データＤ２に自動的に付加されるＣＲＣ５３ａとの比較を処理装置により行う。エラー検出／エラー位置検出部７は、受信データＤ２に含まれる未読み取りデータ（部分データ）から算出されるＣＲＣと、受信データＤ２に自動的に付加されているＣＲＣ５３ａとが一致していると判断した場合には、受信データＤ２に含まれる未読み取りデータ（部分データ）はエラーのない正当なデータ（未読み取りデータ（部分データ）であることが保障されたと判断する（Ｓ１４：受信データＤ２に対するＣＲＣチェック処理）。
【００８０】
データ読み取り装置１では、エラー検出／エラー位置検出部７は、受信データＤ２に含まれる未読み取りデータ（部分データ）がエラーのない正当なデータであることが保障されたと判断した場合に、ブロックデータｘ（データ）のなかの最初のデータ位置（先頭位置）からエラー検出位置の手前までのデータと未読み取りデータ（部分データ）とを結合して結合したデータをＩＣタグ２０から読み取ったデータとして受信制御部５に出力する。
【００８１】
すなわち、データ読み取り装置１では、エラー検出／エラー位置検出部７は、受信バッファ８１に格納されている１回目の受信データＤ１から、ブロックデータｘの最初のデータ位置からエラー検出位置の手前までの部分を処理装置により抽出し、受信バッファ８１に格納されている２回目の受信データＤ２から、未読み取りデータ（部分データ）を処理装置により抽出する。そして、エラー検出／エラー位置検出部７は、抽出した受信データＤ１からのブロックデータｘの最初のデータ位置からエラー検出位置の手前までの部分と、２回目の受信データＤ２からの未読み取りデータ（部分データ）との、２つのデータを処理装置により結合することにより、ブロックデータｘのデータを再生する（Ｓ１５：ブロックデータｘの再生）。このとき、エラー検出／エラー位置検出部７は、受信バッファ８１に格納されている１回目の受信データＤ１のブロックデータｘのエラー検出位置からの部分に対して、受信バッファ８１に格納されている２回目の受信データＤ２の未読み取りデータ（部分データ）を処理装置により上書きすることにより、受信データＤ１からのブロックデータｘの最初のデータ位置からエラー検出位置の手前までの部分と、２回目の受信データＤ２からの未読み取りデータ（部分データ）との、２つのデータを結合することができる。
【００８２】
次に、データ読み取り装置１では、エラー検出／エラー位置検出部７が、未読み取りデータ（部分データ）に含まれたチェックデータｘに基づいて結合したデータのなかのブロックデータｘのデータｘ（第１のデータ）が正当なデータであるか否かという正当性チェック処理を処理装置により行い（Ｓ１６：チェックデータｘによる正当性チェック処理）、ブロックｘのデータｘ（第１のデータ）が正当なデータであると判定した場合に、結合したデータをＩＣタグ（通信装置）から読み取ったデータとして、受信制御部５に出力する。例えば、エラー検出／エラー位置検出部７は、ブロックデータｘのうちのブロックｘのデータｘから算出されるチェックデータと、受信した受信データＤ２に含まれるチェックデータｘとの比較を処理装置により行う等の処理をする。例えば、エラー検出／エラー位置検出部７は、ブロックデータｘのうちのブロックｘのデータｘから算出されるチェックデータと、受信した受信データＤ２に含まれるチェックデータｘとが一致していると判断した場合には、ブロックデータｘのうちのブロックｘのデータｘはエラーのない正当な応答データであることが保障されたと判断する。
【００８３】
このとき、２回目の受信データＤ２は、ＣＲＣの確認を行って通信エラー等のない正当なデータであることが保障されている（図６のＳ１４）。しかし、１回目の受信データＤ１については、ブロックデータｘの先頭位置からエラー検出位置の手前までは、所定のエラー検出処理によるエラー検出はないものの、通信エラーのない正当なデータであることは保障されていない（ＣＲＣチェック処理等の正当性チェック処理をしていないため）。そのため、従来では、ブロックデータｘにエラーが検出された場合は、ブロックデータｘの先頭位置から再度、ブロックデータｘを読み出す必要があった。このため、従来では、データの読み取り処理の際の読み取り時間が、増加する等の課題があった。あるいは、従来のデータ読み取り装置では、データ長の長いデータの再読み取りを回避するために、ブロックデータｘをさらに細かなパケットに分割して読み取りを行うため、コマンド送信や、個々のパケットに付加されるリターンプリアンブル、ＣＲＣのオーバーヘッドによる読み取り時間増加に耐える必要があった。
【００８４】
本実施の形態によるデータ読み取り装置１では、ブロックデータ毎にチェックデータを設けていることで、再生したブロックデータ（受信データ）の正当性についてチェックデータを用いて検査を行うことができ、読み取り時間の短縮が可能となる。
【００８５】
また、本実施の形態によるデータ読み取り装置１では、ＩＣタグ２０が保持するメモリ２１のデータ読み出しにおいて、エラーが発生しても、エラー発生個所から再送信するようにＩＣタグ２０に要求することができ、データの再生を行うことができ、また、チェックデータにより再生したデータの正当性を保証することができるので、データの読み取り時間の短縮が可能となる。
【００８６】
実施の形態２．
実施の形態１に係るデータ読み取り装置１では、データ読み取り装置１がＩＣタグ２０のメモリ２１から読み取るデータは、チェックデータｘを含むブロックデータｘである場合について説明した。実施の形態２では、受信データにエラーを検出しない間は、ブロックｘのチェックデータｘを含まないデータ（すなわち、ブロックｘのデータｘ）の読み出しを行い、エラーを検出すると、エラー検出した位置から残りの部分のブロックｘのデータｘのデータに加えて、ブロックｘのチェックデータｘを読み出すことを特徴とするデータ読み取り装置１について説明する。
【００８７】
図７は、実施の形態２に係るデータ読み取り装置１がＩＣタグ２０からチェックデータｘを含まないブロックｘのデータｘの読み出しを行い、エラー未検出の場合の通信動作を示す図である。
【００８８】
図７において、データ読み取り装置１は、送信コマンドＣ１でチェックデータｘを含まないデータ（すなわち、ブロックｘのデータｘ）の読み出し要求を行い（Ｓ２０）、受信データＤ１を受信してブロックｘのデータｘの読み取りを行っている（Ｓ２１）。このときのデータ読み取り装置１の動作は、実施の形態１と同様である。ただし、データ読み取り装置１が読み出し要求をするデータが、ブロックｘのデータｘであるという点が相違する。
【００８９】
実施の形態２におけるデータ読み取り装置１では、受信データＤ１は、図７に示すように、リターンプリアンブル５１、データ部５２、ＣＲＣ５３で構成されている。データ部５２には、チェックデータｘを含まないブロックｘのデータｘが格納されている。
【００９０】
実施の形態２におけるデータ読み取り装置１では、エラー検出／エラー位置検出部７は、受信データＤ１にエラーを検出しなかった場合には、実施の形態１で説明したと同様に、ブロックデータｘと、ＩＣタグ２０からの応答である受信データＤ１に自動的に付加されるＣＲＣにより、通信エラーの確認を行う。ＣＲＣによる正当性チェック処理（ＣＲＣチェック処理）については、実施の形態１で説明したと同様の処理を行う。データ読み取り装置１は、ブロックｘのデータｘから生成されるＣＲＣとＩＣタグ２０からの応答である
受信データＤ１に付加されているＣＲＣとの比較を行い、一致している場合には、受信データＤ１は、エラーのない正当な応答データであることが保障されると処理装置により判断する。
【００９１】
図８は、実施の形態２におけるデータ読み取り装置１が、ＩＣタグ２０からチェックデータｘを含まないブロックｘのデータｘの読み出しを行い、エラーを検出した場合の通信動作を示す図である。
【００９２】
図８において、実施の形態２におけるデータ読み取り装置１は、送信コマンドＣ１でチェックデータｘを含まないデータ（すなわち、ブロックｘのデータｘ）の読み出し要求を行い（Ｓ３０）、受信データＤ１を受信してブロックｘのデータｘの読み取りを行っている（Ｓ３１）。このときのデータ読み取り装置１の動作は、実施の形態１と同様である。ただし、データ読み取り装置１が読み出し要求をするデータが、ブロックｘのデータｘであるという点が相違する。
【００９３】
実施の形態２におけるデータ読み取り装置１では、エラー検出／エラー位置検出部７は、受信データＤ１にエラーを検出した場合には、実施の形態１の動作と同様に、ブロックｘのデータｘにおけるエラー検出位置を特定し、再送信制御部６に出力する。
【００９４】
再送信制御部６は、エラー検出／エラー位置検出部７からブロックｘのデータｘにおけるエラー検出位置を入力し、ＩＣタグ２０に対して、ブロックｘのデータｘのなかのエラー検出位置からチェックデータｘの最終位置（すなわち、ブロックデータｘの最終位置）までのデータの送信を要求する送信コマンドＣ２（再送信要求コマンド）を処理装置により生成する。そして、送信部３が、ＩＣタグ２０に送信コマンドＣ２（再送信要求コマンド）を送信する（Ｓ３２：２回目の送信コマンド）。このとき、送信コマンドＣ１（送信要求コマンド）とは異なり、送信コマンドＣ２（再送信要求コマンド）ではチェックデータｘまでの読み出しが指示される。送信コマンドＣ２に対するＩＣタグの受信データＤ２は、リターンプリアンブル５１、エラー検出位置からチェックデータｘまでのデータ（データ部５２）、ＣＲＣ５３で構成されている（Ｓ３３：２回目の受信データＤ２）。
【００９５】
実施の形態１と同様に、実施の形態２におけるデータ読み取り装置１では、エラー検出／エラー位置検出部７が、受信した受信データＤ２に対してエラー検出処理（所定のエラー検出処理の一例）を行う。
【００９６】
エラー検出／エラー位置検出部７が、受信データＤ２でエラー検出しなかった場合には、エラー検出／エラー位置検出部７は、ブロックｘのデータｘのエラー検出位置からチェックデータｘまでのデータに対して、ＩＣタグ２０からの応答に自動的に付加されるＣＲＣ５３ｂにより、通信エラーの確認を行う。つまり、エラー検出／エラー位置検出部７は、ブロックｘのデータｘのエラー検出位置からチェックデータｘまでのデータから生成されるＣＲＣと、ＩＣタグ２０からの受信データＤ２に含まれるＣＲＣ５３ｂとの比較を行い、一致している場合には、受信データＤ２はエラーのない正当な受信データであることが保障され手いると判断する（Ｓ３４：受信データＤ２のＣＲＣチェック処理）。
【００９７】
実施の形態２におけるデータ読み取り装置１は、１回目の受信データＤ１から、ブロックｘのデータｘの最初のデータ位置（先頭位置）からブロックｘのデータｘのエラー検出位置の手前までの部分を抽出し、２回目の受信データＤ２から、ブロックｘのデータｘのエラー検出位置からチェックデータｘの最終位置までの部分を抽出する。
【００９８】
実施の形態２におけるデータ読み取り装置１は、この２つのデータを結合し、ブロックｘのデータｘのデータを再生する（Ｓ３５：ブロックデータｘの再生）。
【００９９】
次に、実施の形態２に係るデータ読み取り装置１では、実施の形態１の処理と同様に、エラー検出／エラー位置検出部７が、受信データＤ２に含まれたチェックデータｘに基づいて、結合したデータのなかのブロックｘのデータｘが正当なデータであるか否かという正当性チェック処理を処理装置により行い（Ｓ３６：チェックデータｘによる正当性チェック処理）、ブロックｘのデータｘが正当なデータであると判定した場合に、結合したデータをＩＣタグ（通信装置）から読み取ったデータとして、受信制御部５に出力する。
【０１００】
以上のように、実施の形態２に係るデータ読み取り装置１では、受信データについてエラーを検出しない間には、チェックデータｘの読み出しを行わないため、より読み取り時間の短縮が可能となる。
【０１０１】
実施の形態３．
図９は、実施の形態３に係るデータ読み取り装置１を用いたＲＦＩＤシステムのシステム構成を示す図である。図９において、実施に形態１の図２で説明した構成ブロックと同一の機能を有する構成ブロックには同一の符号を付し、その説明を一部省略する。
【０１０２】
図９において、データ読み取り装置１は、実施の形態１と同様に、送信制御部２、送信部３、受信処理部４、受信制御部５、再送信制御部６を有しており、ＩＣタグ２０に電波を送信する送信アンテナ１０ａ、ＩＣタグ２０からの電波を受信する受信アンテナ１０ｂに接続されている。また、受信処理部４は、実施の形態１と同様に、エラー検出／エラー位置検出部７、受信バッファ部８、受信バッファ８１、最適受信データ長判定部９を備えている。実施の形態３に係るデータ読み取り装置１において、実施の形態１と異なる点は、エラー検出／エラー位置検出部７が受信データ補正部１１を備えている点である。
【０１０３】
実施の形態３に係るデータ読み取り装置１の概略動作は、実施の形態１で説明した動作と同様である。ただし、エラー検出／エラー位置検出部７が、エラーを検出した場合の動作が実施の形態１と異なるため、その部分の動作について以下に説明する。
【０１０４】
図１０は、実施の形態３に係るＩＣタグ２０から受信した受信データにエラーを検出した場合のデータ読み取り装置１とＩＣタグ２０との通信動作を示す図である。
【０１０５】
まず、Ｓ４０では、データ読み取り装置１は、ＩＣタグ２０からブロックｘのデータｘとチェックデータｘとからなるブロックデータｘを読み取るための送信コマンドＣ１（送信要求コマンド）を生成してＩＣタグに送信する。
【０１０６】
Ｓ４１では、データ読み取り装置１は、送信コマンドＣ１に対する応答としてＩＣタグ２０から受信データＤ１を受信する。データ読み取り装置１では、エラー検出／エラー位置検出部７が、受信データＤ１に対してエラー検出処理（所定のエラー検出処理）を行う。
【０１０７】
Ｓ４２では、エラー検出／エラー位置検出部７の備える受信データ補正部１１は、受信データＤ１のなかにエラーを検出した場合、エラー検出ビット位置に０あるいは１を代入（図１０のエラー検出位置への０／１の代入）し、ブロックｘのデータｘのエラーデータのデータ補正（データの修正）を行う。例えば、受信データ補正部１１は、エラーとして検出されたエラーデータのビットが１の場合は０を代入し、エラーとして検出されたエラーデータのビットが０の場合は１を代入する処理を行い、エラーデータに対してエラー補正を行う。例えば、受信データ補正部１１は、エラーとして検出されたエラーデータが複数ある場合には、複数のエラーデータに対してエラー補正を行う。
【０１０８】
次に、Ｓ４３では、エラー検出／エラー位置検出部７は、データ補正を行った受信データＤ１（ブロックデータｘ）に対して、受信データＤ１に自動的に付加されているＣＲＣ５３ｃを用いてＣＲＣ５３ｃによるブロックデータｘのＣＲＣチェック処理を行う。あるいは、エラー検出／エラー位置検出部７は、チェックデータｘのなかにエラーを検出しなかった場合には、データ補正を行った受信データＤ１（ブロックデータｘ）に対して、チェックデータｘを用いたブロックｘのデータｘの正当性チェック処理を行ってもよい。
【０１０９】
エラー検出／エラー位置検出部７は、ＣＲＣチェック処理あるいはチェックデータによる正当性チェック処理の結果、受信データＤ１（ブロックデータｘ）が正当なデータであると判定した場合に、ブロックデータｘをＩＣタグ２０（通信装置）から読み取ったデータとして、受信制御部５に出力する。
【０１１０】
しかしながら、エラー検出／エラー位置検出部７は、ＣＲＣチェック処理あるいはチェックデータによる正当性チェック処理等の結果、受信データＤ１（ブロックデータｘ）が正当なデータでないと判定した場合、あるいは、チェックデータｘやＣＲＣ５３ｃにエラーが含まれる場合、あるいは、複数の受信データＤ１の組み合わせでチェックデータあるいはＣＲＣ一致がおきた場合は、補正されたデータの正当性が保障されなくなるため、実施の形態１で説明した再送信を要求する処理を用いて、データの再生を行う。
【０１１１】
ここで、上述した「複数の受信データＤ１の組み合わせでチェックデータあるいはＣＲＣ一致がおきた場合」とは、例えば、以下のような場合をいう。受信データＤ１の複数個所でエラーがおきた場合に、それぞれのエラー箇所に０または１をいれて、データの補正を行うため、補正された受信データＤ１の候補は、複数存在する。これらの複数の補正された受信データＤ１の候補に対する確認は、上述したようにＣＲＣチェック処理あるいはチェックデータによる正当性チェック処理により行う。このとき、元データ（受信データＤ１）が数百ビットに対して、チェックデータは３２ビット程度、ＣＲＣは１６ビットであるので、複数の補正された受信データＤ１のうちで、チェックデータやＣＲＣによるチェックをパスしてしまう受信データＤ１が複数存在してしまう可能性がある。この場合、複数の補正された受信データＤ１の候補のうち、どの補正データが正しいか、判断できなくなり、正当性が保障されなくなるため、実施の形態１で説明した再送信を要求する処理を用いて、データの再生を行う。
【０１１２】
また、実施の形態３に係るデータ読み取り装置１では、エラー検出したビット数が多い場合には、データ補正に必要な処理時間が多くなるため、データ補正を行わず、再送信を要求する処理を用いて、データの再生を行うようにしてもよい。
【０１１３】
すなわち、実施の形態３に係るデータ読み取り装置１では、エラー検出／エラー位置検出部７（あるいは、受信データ補正部１１でも良い）が、受信データＤ１（ブロックデータｘ）のなかのブロックｘのデータｘ（第１のデータ）のなかにエラーを検出した場合に、ブロックｘのデータｘのなかでエラーが検出されたエラー検出位置を特定するとともに、ブロックｘのデータｘのなかでエラーとして検出されたエラーデータに対してデータ補正を行う。そして、エラー検出／エラー位置検出部７は、データ補正を行ったブロックデータｘについてチェックデータｘに基づいて、ブロックｘのデータｘ（第１のデータ）が正当なデータであるか否かという正当性チェック処理を処理装置により行い、ブロックｘのデータｘが正当なデータでないと判定した場合に、ブロックｘのデータｘのエラー検出位置を再送信制御部６に出力する。
【０１１４】
以上のように、実施の形態３に係るデータ読み取り装置１では、ＩＣタグ２０が保持するメモリ２１のデータ読み出しにおいて、読み出し中のデータにエラーが発生しても、エラー発生個所を特定することにより、エラーデータの補正を行い、チェックデータやＣＲＣにより補正データの正当性を保証することができる。このため、実施の形態３に係るデータ読み取り装置１では、読み出し中のデータにエラーが発生しても、再読み取りを実行することなく、読み取り時間の短縮が可能となる。また、実施の形態３に係るデータ読み取り装置１では、エラーデータの補正が不完全の場合（チェックデータやＣＲＣにエラーが含まれる場合や、複数の組み合わせでチェックデータあるいはＣＲＣ一致がおきた場合）には、再送信を要求する処理を行うことで、読み取り時間の大幅な増加なく、データの正当性を保証することができる。
【０１１５】
実施の形態１〜３において、以下のような特徴を有するデータ読み取り装置１について説明した。
【０１１６】
実施の形態１〜３で説明したＲＦＩＤシステム８００は、ユーザーが書き換え可能なメモリ２１を有し、メモリ２１を複数のブロックに分割し、ブロック毎にチェックデータを保持するＩＣタグ２０と、ＩＣタグ２０と非接触データ通信を行うデータ読み取り装置１とを備え、ＩＣタグ２０が保持するメモリデータを読み出すＲＦＩＤシステム８００であって、データ読み取り装置１は、ＩＣタグ２０からのデータ受信において、エラー検出を行い、エラーを検出した場合にエラー検出したデータ位置を検出するエラー検出／エラー位置検出部７と、エラー検出及びエラー位置検出部でエラー検出した場合に、エラー検出したデータ位置から再送信を行う再送信制御部６とを備えることを特徴とする。
【０１１７】
実施の形態１〜３で説明したデータ読み取り装置１は、エラー検出しない間は、ブロック毎のチェックデータを含まないデータ読み出しを行い、エラー検出すると、エラー検出した位置から残りのデータに加えて、ブロック毎のチェックデータを読み出すことを特徴とする。
【０１１８】
実施の形態１〜３で説明したデータ読み取り装置１は、さらに、エラー検出／エラー位置検出部７で検出するエラー位置の履歴から、最適な受信データ長（応答データ長）を判断する最適受信データ長判定部９を有し、最適受信データ長判定部９で判断した受信データ長（応答データ長）でＩＣタグ２０とデータ通信することを特徴とする。
【０１１９】
実施の形態１〜３で説明したデータ読み取り装置１は、エラー検出／エラー位置検出部７から、エラー位置情報を受け取り、受信データを補正する受信データ補正部１１を備えることを特徴とする。
【０１２０】
実施の形態１〜３で説明したデータ読み取り装置１は、受信データ補正部１１で、エラー補正できなかった場合に、最初に検出したエラー位置から残りのデータを再送信することを特徴とする。
【０１２１】
以上、実施の形態１〜３について説明したが、これらのうち、２つ以上の実施の形態を組み合わせて実施しても構わない。あるいは、これらのうち、１つの実施の形態を部分的に実施しても構わない。あるいは、これらのうち、２つ以上の実施の形態を部分的に組み合わせて実施しても構わない。
【０１２２】
また、実施の形態１〜３の説明において、データ読み取り装置１における送信制御部２と、送信部３と、受信処理部４と、受信制御部５と、再送信制御部６とはそれぞれ独立した機能ブロックとして構成されているが、ひとつの機能ブロックとしてもよい。また、受信処理部４は、受信部４１とエラー検出／エラー位置検出部７と受信バッファ部８と受信データ補正部１１と最適受信データ長判定部９との独立した機能ブロックから構成されているが、まとめてひとつの機能ブロックとしてもよい。あるいは、全ての機能ブロックを独立した機能ブロックとしても良い。あるいは、これらの機能ブロックを、他のどのような組み合わせで構成しても構わない。
【０１２３】
実施の形態１に係るデータ読み取り装置及びデータ読み取り装置のデータ読み取り方法は、処理装置、記憶装置等のハードウェアが用いられており、ソフトウェアによる情報処理がハードウェアを用いて具体的に実現されたものである。すなわち、上述した実施の形態１のデータ読み取り装置及びデータ読み取り装置のデータ読み取り方法は、自然法則を利用したハードウェアの動作によりデータ読み取り装置及びデータ読み取り装置のデータ読み取り方法の実現を図っているものであり、自然法則を利用した技術的創作に該当するものである。
【図面の簡単な説明】
【０１２４】
【図１】実施の形態１におけるデータ読み取り装置１のハードウェア資源の一例を示す図である。
【図２】実施の形態１におけるＲＦＩＤシステム８００のデータ読み取り装置１の構成を示す図である。
【図３】実施の形態１におけるＩＣタグ２０（通信装置の一例）の備える（保持する）メモリ２１の構成図である。
【図４】実施の形態１におけるデータ読み取り装置１がＩＣタグ２０からチェックデータｘを含むブロックデータｘの読み出しを行い、ブロックデータｘのなかにエラーが未検出の場合の通信動作を示す図である。
【図５】実施の形態１における受信データＤ１のフォーマットを示す図である。
【図６】実施の形態１におけるデータ読み取り装置１がＩＣタグ２０からチェックデータｘを含むブロックデータｘの読み出しを行い、ブロックデータｘのなかにエラーを検出した場合の通信動作を示す図である。
【図７】実施の形態２におけるデータ読み取り装置１がＩＣタグ２０からチェックデータｘを含まないブロックｘのデータｘの読み出しを行い、エラー未検出の場合の通信動作を示す図である。
【図８】実施の形態２におけるデータ読み取り装置１が、ＩＣタグ２０からチェックデータｘを含まないブロックｘのデータｘの読み出しを行い、エラーを検出した場合の通信動作を示す図である。
【図９】実施の形態３におけるデータ読み取り装置１を用いたＲＦＩＤシステムのシステム構成を示す図である。
【図１０】実施の形態３におけるＩＣタグ２０から受信した受信データにエラーを検出した場合のデータ読み取り装置１とＩＣタグ２０との通信動作を示す図である。
【図１１】実施の形態１に係るＲＦＩＤシステム８００における無線通信において、データの符号化を行った結果のビット列の正常な周波数パターンを示す図である。
【符号の説明】
【０１２５】
１  データ読み取り装置、２  送信制御部、３  送信部、４  受信処理部、５  受信制御部、６  再送信制御部、７  エラー検出／エラー位置検出部、８  受信バッファ部、９  最適受信データ長判定部、１０ａ  送信アンテナ、１０ｂ  受信アンテナ、１１  受信データ補正部、２０  ＩＣタグ、２１  メモリ、４１  受信部、５１  リターンプリアンブル、５２  データ部、５３，５３ａ，５３ｂ，５３ｃ  ＣＲＣ、８１  受信バッファ、５００  コンピュータ、８００  ＲＦＩＤシステム、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ装置、９０７  スキャナ装置、９１０  システムユニット、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群、Ｃ１，Ｃ２  送信コマンド、Ｄ１，Ｄ２  受信データ。
【図１】
0005111122.tif 000002
【図２】
0005111122.tif 000003
【図３】
0005111122.tif 000004
【図４】
0005111122.tif 000005
【図５】
0005111122.tif 000006
【図６】
0005111122.tif 000007
【図７】
0005111122.tif 000008
【図８】
0005111122.tif 000009
【図９】
0005111122.tif 000010
【図１０】
0005111122.tif 000011
【図１１】
0005111122.tif 000012