JP5202230B2 - データ操作装置及びデータ操作システム及びコンピュータプログラム及びデータ操作方法 - Google Patents

データ操作装置及びデータ操作システム及びコンピュータプログラム及びデータ操作方法 Download PDF

Info

Publication number
JP5202230B2
JP5202230B2 JP2008278430A JP2008278430A JP5202230B2 JP 5202230 B2 JP5202230 B2 JP 5202230B2 JP 2008278430 A JP2008278430 A JP 2008278430A JP 2008278430 A JP2008278430 A JP 2008278430A JP 5202230 B2 JP5202230 B2 JP 5202230B2
Authority
JP
Japan
Prior art keywords
command
unit
extended
data
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008278430A
Other languages
English (en)
Other versions
JP2010108157A (ja
Inventor
英俊 舩倉
敏久 亀丸
智史 荒川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2008278430A priority Critical patent/JP5202230B2/ja
Priority to US12/435,012 priority patent/US20100106873A1/en
Publication of JP2010108157A publication Critical patent/JP2010108157A/ja
Application granted granted Critical
Publication of JP5202230B2 publication Critical patent/JP5202230B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/0008General problems related to the reading of electronic memory record carriers, independent of its reading method, e.g. power transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/10009Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation sensing by radiation using wavelengths larger than 0.1 mm, e.g. radio-waves or microwaves
    • G06K7/10297Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation sensing by radiation using wavelengths larger than 0.1 mm, e.g. radio-waves or microwaves arrangements for handling protocols designed for non-contact record carriers such as RFIDs NFCs, e.g. ISO/IEC 14443 and 18092

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Toxicology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Electromagnetism (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer And Data Communications (AREA)

Description

この発明は、IC(Integrated Circuit)タグなどの記憶装置と通信をして、記憶装置が記憶したデータを操作するデータ操作装置に関する。
イーピーシーグローバル(EPC Global)は、ICタグとの通信に用いる通信プロトコルを規格化している。このうち、非特許文献1に記載されている規格(以下「C1G2」と呼ぶ。)が、よく使われている。
C1G2において、ICタグは、TIDなどを記憶する通常のメモリ領域のほかに、ユーザが自由に書き込むことができるメモリ領域(ユーザメモリ)を持つことができる。近年、数キロビット〜数百キロビットのユーザメモリを有する大容量のIDタグが販売されるようになっている。C1G2では、このような大容量のユーザメモリを効率的に操作することのできるエアコマンドが用意されていないため、ICタグを製造するメーカーなどが独自にエアコマンドを拡張している。拡張されたエアコマンドは、統一されておらず、同一あるいは類似の機能を実現するものであっても、メーカーごとに異なっている。
特開2008−90405号公報 特開2007−318323号公報 特開2005−284455号公報 特開平11−184649号公報 「EPC Radio−Frequency Identity Protocols Class−1 Generation−2 UHF RFID Protocol for Communications at 860MHz−960MHz Version 1.1.0」EPCglobal、2006年。
ICタグを利用した流通システムなどにおいては、大量のICタグが必要となる。このようなシステムにおいて、特定のメーカーが拡張したエアコマンドを使うアプリケーションを使用すると、他のメーカー製のICタグを利用することができない。このため、ひとたびシステムを構築した後は、特定のメーカーから大量のICタグを購入する必要が生じ、自由な価格競争によるシステムのコストダウンを期待することができない。
この発明は、例えば、上記のような課題を解決するためになされたものであり、アプリケーションなどを実行する制御装置からの指示にしたがって、ICタグなどの記憶装置に対してコマンドを送信することにより、記憶装置が記憶したデータを操作するデータ操作装置において、理解するコマンドが異なる複数種類の記憶装置が混在した状況であっても、制御装置の側ではそのことを意識せずに、データを操作できるようにすることを目的とする。
この発明にかかるデータ操作装置は、
制御装置からの指示にしたがって記憶装置と通信し、上記記憶装置が記憶したデータを操作するデータ操作装置において、
データを処理する処理装置と、上記記憶装置に対してデータを送信する送信装置と、上記記憶装置からデータを受信する受信装置と、共通コマンド取得部と、識別取得指示部と、識別受信部と、コマンド群判定部と、拡張コマンド変換部と、拡張コマンド送信部と、応答受信部と、応答変換部と、応答通知部とを有し、
上記共通コマンド取得部は、上記処理装置を用いて、上記制御装置からの指示を表わす共通コマンドを取得し、
上記識別取得指示部は、上記送信装置を用いて、上記記憶装置に対して、上記記憶装置の識別情報を送信するよう指示する識別取得コマンドを送信し、
上記識別受信部は、上記受信装置を用いて、上記識別取得指示部が送信した識別取得コマンドに対する応答として、上記記憶装置が送信した識別情報を受信し、
上記コマンド群判定部は、上記処理装置を用いて、上記識別受信部が受信した識別情報に基づいて、複数の拡張コマンド群のなかから、上記記憶装置が理解する拡張コマンド群を判定し、
上記拡張コマンド変換部は、上記処理装置を用いて、上記コマンド群判定部が判定した拡張コマンド群に基づいて、上記共通コマンド取得部が取得した共通コマンドを、上記記憶装置が理解する拡張コマンドに変換し、
上記拡張コマンド送信部は、上記送信装置を用いて、上記記憶装置に対して、上記拡張コマンド変換部が変換した拡張コマンドを送信し、
上記応答受信部は、上記受信装置を用いて、上記拡張コマンド送信部が送信した拡張コマンドに対する応答として、上記記憶装置が送信した応答データを受信し、
上記応答変換部は、上記処理装置を用いて、上記応答受信部が受信した応答データのデータ形式を、所定の形式に変換して、変換データを生成し、
上記応答通知部は、上記処理装置を用いて、上記共通コマンド取得部が取得した共通コマンドに対する応答として、上記応答変換部が生成した変換データを、上記制御装置に対して通知することを特徴とする。
この発明にかかるデータ操作装置によれば、異なる拡張コマンド群を理解する記憶装置が混在する場合であっても、そのことを制御装置の側で意識する必要がなく、同じ共通コマンドで、異なる拡張コマンド群を理解する記憶装置が記憶したデータを操作することができる。
実施の形態1.
実施の形態1について、図1〜図11を用いて説明する。
図1は、この実施の形態におけるICタグ読取システム800の全体構成の一例を示すシステム構成図である。
ICタグ読取システム800(データ操作システムの一例)は、PC810、RFIDリーダライタ装置100、複数のICタグ820を有する。
RFID(Radio Frequancy Identification)リーダライタ装置100(データ操作装置の一例)は、アンテナから送信した電波によりICタグ820に対して電力を供給するとともに、ICタグ820に対してコマンドを送信し、ICタグ820からの応答を受信する装置である。
RFIDリーダライタ装置100は、PC(パーソナルコンピュータ)810(制御装置の一例)と接続している。RFIDリーダライタ装置100は、PC810からの指示にしたがって、ICタグ820に対してコマンドを送信し、ICタグ820からの応答をPC810に通知する。
ICタグ820(記憶装置の一例)は、ICタグ820自身の識別情報や、その他のデータを記憶する記憶領域を有する。ICタグ820は、RFIDリーダライタ装置100が発信した電波により電力の供給を受けて動作する。ICタグ820は、RFIDリーダライタ装置100が発信した電波を復調して、RFIDリーダライタ装置100が送信したコマンドを受信し、受信したコマンドにしたがって、要求されたデータをRFIDリーダライタ装置100に対して送信したり、RFIDリーダライタ装置100から受信したデータを指定された記憶領域に記憶したりなどの動作をする。
ICタグ820は、例えばC1G2などの規格により定められたコマンド(以下「基本コマンド」と呼ぶ。)を理解するほか、ICタグ820のメーカーごとに独自に拡張したコマンド(以下「拡張コマンド」と呼ぶ。)を理解して、理解したコマンドが指示する動作をする。
基本コマンドには、例えば、通信するICタグのグループを選択する「Selectコマンド」、通信対象となるICタグを一つのICタグに決定する「Queryコマンド」、ICタグのIDを読み出す「Ackコマンド」などがある。
図2は、この実施の形態におけるRFIDリーダライタ装置100のハードウェア構成の一例を示すハードウェア構成図である。
RFIDリーダライタ装置100は、ROM913、RAM914、フラッシュメモリ920、CPU911、通信装置915、送信装置917、受信装置918、アンテナ919を有する。
ROM(Read Only Memory)913、RAM(Random Access Memory)914、フラッシュメモリ920は、プログラムやデータなどを記憶する装置である。
CPU(Central Processing Unit)911(処理装置の一例)は、例えばROM913などが記憶したプログラムを実行することにより、例えばRAM914などが記憶したデータを処理する装置である。
通信装置915は、CPU911からの指示により、PC810と通信する装置である。通信装置915は、例えばRAM914などが記憶したデータをPC810に対して送信し、PC810からデータを受信して、例えばRAM914などに記憶させる。
送信装置917は、CPU911からの指示により、アンテナ919を介して、ICタグ820に対してコマンドやその他のデータを送信する装置である。送信装置917は、例えばRAM914などが記憶したデータをICタグ820に対して送信する。
受信装置918は、CPU911からの指示により、アンテナ919を介して、ICタグ820が送信したデータを受信する装置である。送信装置917は、受信したデータを、例えばRAM914などに記憶させる。
図3は、この実施の形態におけるRFIDリーダライタ装置100の機能ブロックの構成の一例を示すブロック構成図である。
以下に説明する機能ブロックは、例えばROM913が記憶したプログラムを、CPU911が実行することにより実現する。あるいは、専用のデジタル回路やアナログ回路を用いて実現してもよい。特に、速い処理速度が要求されるブロックは、CPU911を用いてソフトウェア的に実現するよりも、専用の回路を用いて実現するほうが好ましい。
RFIDリーダライタ装置100は、コマンド判定部110、基本コマンド変換部115、プロトコル記憶部120、プロトコル判定部130、拡張コマンド変換部140、応答変換部150、共通コマンド取得部161、応答通知部162、識別取得指示部171、コマンド送信部172、識別受信部181、応答受信部182を有する。
共通コマンド取得部161は、通信装置915を用いて、PC810が送信した共通コマンドを取得する。「共通コマンド」には、ICタグ820に対する指示などを表わすコマンドである。共通コマンドによる指示は、RFIDリーダライタ装置100が、ICタグ820が理解する一以上のコマンドに変換することにより実現される。共通コマンドには、基本コマンドにより提供される機能だけで実現可能なコマンドだけでなく、拡張コマンドにより提供される機能を使う必要のあるコマンドも含まれる。共通コマンド取得部161は、CPU911を用いて、取得した共通コマンドを出力する。
例えば、メーカーAのICタグ820は、256バイトを一つのブロックとして、256×16=4096バイトの記憶領域を有する。メーカーAのICタグ820は、0〜15のブロック番号を指定して、ブロック単位でデータを読み出す拡張コマンド「ブロック読み出しA」や、0〜15のブロック番号を指定して、ブロック単位でデータを書き込む拡張コマンド「ブロック書き込みA」を理解する。
これに対し、メーカーBのICタグ820は、128バイトを一つのブロックとして、128×50=6400バイトの記憶領域を有する。メーカーBのICタグ820は、1〜50のブロック番号を指定して、ブロック単位でデータを読み出す拡張コマンド「ブロック読み出しB」や、1〜50のブロック番号を指定して、ブロック単位でデータを書き込む拡張コマンド「ブロック書き込みB」を理解する。
更に、メーカーCのICタグ820は、1024バイトを一つのブロックとして、1024×8=8192バイトの記憶領域を有する。メーカーCのICタグ820は、0〜7のブロック番号を指定して、ブロック単位でデータを読み出す拡張コマンド「ブロック読み出しC」や、0〜7のブロック番号を指定して、ブロック単位でデータを読み出す拡張コマンド「ブロック書き込みC」を理解する。
これらメーカーの違いによる拡張コマンドの違いを吸収するため、共通コマンドには、例えば、ブロックサイズと0から始まるブロック番号とを指定して、ブロック単位でデータを読み出す「共通ブロック読み出し」コマンドや、ブロックサイズと0から始まるブロック番号とを指定して、ブロック単位でデータを読み出す「共通ブロック書き込み」コマンドが含まれる。
プロトコル記憶部120は、フラッシュメモリ920を用いて、あらかじめ、プロトコルテーブルを記憶している。プロトコルテーブルとは、各メーカー独自の拡張コマンドのプロトコルを表わすテーブルである。
図4は、この実施の形態における共通コマンドと各メーカー独自の拡張コマンドとにおけるブロック操作コマンドのブロック番号の対応の一例を示す図である。
この例において、三種類のICタグがあるものとする。一つは、メーカーAが製造し、TIDが「TID」であるICタグ。もう一つは、メーカーBが製造し、TIDが「TID」であるICタグ、他の一つは、メーカーCが製造し、TIDが「TID」であるICタグである。三種類のICタグは、それぞれ異なる拡張コマンドを理解する。
ブロックサイズとして128を指定した場合、TIDが「TID」のICタグが理解する拡張コマンド(以下「拡張コマンドA」と呼ぶ。)のブロックサイズは256であるから、共通コマンドにおけるブロック番号0及び1が、拡張コマンドAにおけるブロック番号0に対応する。TIDが「TID」のICタグが理解する拡張コマンド(以下「拡張コマンドB」と呼ぶ。)のブロックサイズは128だが、開始番号が1なので、共通コマンドにおけるブロック番号0は、拡張コマンドBにおけるブロック番号1に対応する。TIDが「TID」のICタグが理解する拡張コマンド(以下「拡張コマンドC」と呼ぶ。)のブロックサイズは1024なので、共通コマンドにおけるブロック番号0〜7が、メーカーCの拡張コマンドにおけるブロック番号0に対応する。
ブロックサイズとして512を指定した場合は、共通コマンドにおけるブロック番号0が、拡張コマンドAにおけるブロック番号0及び1に対応し、拡張コマンドBにおけるブロック番号1〜8に対応する。また、共通コマンドにおけるブロック番号0及び1が、拡張コマンドCにおけるブロック番号0に対応する。
図5は、この実施の形態におけるプロトコル記憶部120が記憶したプロトコルテーブル520の一例を示す図である。
プロトコルテーブル520は、例えば、共通コマンド521、プロトコル522、拡張コマンド523、ブロックサイズ524、ブロック数525、開始ブロック番号526からなるデータの組(レコード)を複数有する。
共通コマンド521は、拡張コマンドにより提供される機能に相当する共通コマンドを表わす。
プロトコル522は、ICタグ820が理解する拡張コマンド群を表わすデータであり、例えばICタグ820のTIDである。あるいは、プロトコル522は、ICタグ820のメーカーを表わす識別情報であってもよい。ICタグのメーカーを表わす識別情報は、ICタグ820のTIDのうち、ICタグのメーカーを表わす部分以外をマスクすることにより抽出することができる。
拡張コマンド523は、各メーカーが独自に拡張した拡張コマンドを表わす。ブロックサイズ524は、拡張コマンドがブロック操作コマンドである場合に、1つのコマンドで操作できる記憶領域の大きさを表わす。ブロック数525は、ブロック操作コマンドで操作できる記憶領域のブロックの数を表わす。開始ブロック番号526は、最初のブロックのブロック番号を表わす。
なお、ICタグの種別にかかわらず、最初のブロック番号が「0」である場合には、プロトコルテーブル520は、開始ブロック番号526がなくてもよい。
図3に戻り、RFIDリーダライタ装置100の機能ブロックの説明を続ける。
コマンド判定部110は、CPU911を用いて、共通コマンド取得部161が出力した共通コマンドを入力する。コマンド判定部110は、CPU911を用いて、入力した共通コマンドが、基本コマンドにより提供される機能だけで実現可能なコマンドであるか、拡張コマンドにより提供される機能を使うコマンドであるかを判定する。コマンド判定部110は、CPU911を用いて、判定した判定結果を出力する。
基本コマンド変換部115は、CPU911を用いて、コマンド判定部110が出力した判定結果を入力する。基本コマンド変換部115は、入力した判定結果に基づいて、共通コマンド取得部161が取得した共通コマンドが、基本コマンドにより実現できるコマンドであるとコマンド判定部110が判定した場合、CPU911を用いて、共通コマンド取得部161が出力した共通コマンドを入力する。基本コマンド変換部115は、CPU911を用いて、入力した共通コマンドを、一以上の基本コマンドに変換する。基本コマンド変換部115は、CPU911を用いて、変換した基本コマンドを出力する。
識別取得指示部171は、CPU911を用いて、コマンド判定部110が出力した判定結果を入力する。識別取得指示部171は、入力した判定結果に基づいて、共通コマンド取得部161が取得した共通コマンドが、拡張コマンドを使うコマンドであるとコマンド判定部110が判定した場合、送信装置917を用いて、ICタグ820に対して、識別取得コマンドを送信する。識別取得コマンドとは、ICタグ820に対して、TID(タグID、識別情報の一例)を送信するよう指示するコマンドであり、例えば、基本コマンドである「Selectコマンド」「Queryコマンド」「Ackコマンド」「ReqRNコマンド(ハンドルナンバーの取得)」「Readコマンド(読み出し)」を組み合わせたものである。したがって、ICタグ820のメーカー如何に関わらず、ICタグ820は、識別取得コマンドを理解する。
識別受信部181は、受信装置918を用いて、識別取得指示部171が送信した識別取得コマンドに対する応答として、ICタグ820が送信したTIDを受信する。識別受信部181は、CPU911を用いて、受信したTIDを出力する。
プロトコル判定部130(コマンド群判定部の一例)は、CPU911を用いて、識別受信部181が出力したTIDを入力する。プロトコル判定部130は、CPU911を用いて、入力したTIDを、そのICタグ820のプロトコルとして取得する。あるいは、プロトコル判定部130は、CPU911を用いて、TIDからICタグ820のメーカーを表わす識別情報を取得する。
プロトコル判定部130は、CPU911を用いて、共通コマンド取得部161が出力した共通コマンドを入力する。プロトコル判定部130は、取得したプロトコルと、入力した共通コマンドとに基づいて、プロトコル記憶部120が記憶したプロトコルテーブル520のなかから、共通コマンド521が、入力した共通コマンドと一致し、かつ、プロトコル522が、取得したプロトコルと一致するレコードを検索して、拡張コマンド523、ブロックサイズ524、ブロック数525、開始ブロック番号526を取得する。プロトコル判定部130は、CPU911を用いて、入力した共通コマンドと、取得したプロトコルと、取得した拡張コマンド523とブロックサイズ524とブロック数525と開始ブロック番号526とを出力する。
拡張コマンド変換部140は、CPU911を用いて、プロトコル判定部130が出力した共通コマンドとプロトコルと拡張コマンド523とブロックサイズ524とブロック数525と開始ブロック番号526とを入力する。拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドを、入力したプロトコルにおける拡張コマンドに変換する。拡張コマンド変換部140は、CPU911を用いて、変換した拡張コマンドを出力する。
コマンド送信部172は、CPU911を用いて、コマンド判定部110が出力した判定結果を入力する。コマンド送信部172は、入力した判定結果に基づいて、共通コマンド取得部161が取得した共通コマンドが基本コマンドで実現できるコマンドであるとコマンド判定部110が判定した場合、基本コマンド変換部115が出力した基本コマンドを入力する。コマンド送信部172は、CPU911を用いて、共通コマンド取得部161が取得した共通コマンドが拡張コマンドを使うコマンドであるとコマンド判定部110が判定した場合、拡張コマンド変換部140が出力した拡張コマンドを入力する。
コマンド送信部172は、送信装置917を用いて、ICタグ820に対して、入力したコマンドを送信する。
応答受信部182は、受信装置918を用いて、コマンド送信部172が送信したコマンドに対する応答として、ICタグ820が送信したデータ(以下「応答データ」と呼ぶ。)を受信する。コマンド送信部172は送信したコマンドが読み出しコマンドであれば、応答データは、例えば、記憶領域から読み出したデータである。あるいは、コマンド送信部172が送信したコマンドが書き込みコマンドであれば、応答データは、例えば、書き込みに成功したか否かを表わすステータスデータである。応答受信部182は、CPU911を用いて、受信した応答データを出力する。
応答変換部150は、CPU911を用いて、プロトコル判定部130が共通コマンド等を出力した場合、プロトコル判定部130が出力した共通コマンド、プロトコル、拡張コマンド523、ブロックサイズ524、ブロック数525、開始ブロック番号526を入力する。
応答変換部150は、CPU911を用いて、応答受信部182が出力した応答データを入力する。応答変換部150は、CPU911を用いて、応答データの形式を、共通コマンドに対する応答としてあらかじめ定められている所定の形式に変換する。応答変換部150は、CPU911を用いて、変換した応答データ(以下「変換データ」と呼ぶ。)を出力する。
応答通知部162は、CPU911を用いて、応答変換部150が出力した変換データを入力する。応答通知部162は、CPU911を用いて、入力した変換データを、共通コマンド取得部161が取得した共通コマンドに対する応答として、PC810に対して通知する。
次に、動作の詳細について、具体的なコマンドの例をいくつか挙げて、説明する。
図6は、この実施の形態における拡張コマンド変換部140が、ブロック読み出しコマンドを変換するブロック読み出しコマンド変換処理の流れの一例を示すフローチャート図である。
拡張コマンド変換部140は、入力した共通コマンドが、ブロック読み出しコマンドである場合に、ブロック読み出しコマンド変換処理をする。
ブロック読み出しコマンド変換処理は、例えば、ブロックサイズ比算出工程S612、ブロック番号算出工程S613、拡張コマンド生成工程S614、読み出しサイズ判定工程S615を有する。
ブロックサイズ比算出工程S612において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドにおけるブロックサイズを、入力したブロックサイズ524で割った比を算出する。
ブロック番号算出工程S613において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドにおけるブロック番号と、ブロックサイズ比算出工程S612で算出した比との積を算出する。拡張コマンド変換部140は、CPU911を用いて、算出した積と、入力したブロック数525とを比較する。算出した積がブロック数525以上の場合、そのブロックはICタグ820に存在しないので、拡張コマンド変換部140は、CPU911を用いて、ブロック読み出しコマンド変換処理を終了する。
算出した積がブロック数525より小さい場合、拡張コマンド変換部140は、CPU911を用いて、算出した積と、入力した開始ブロック番号526との和を算出し、ブロック番号とする。
拡張コマンド生成工程S614において、拡張コマンド変換部140は、CPU911を用いて、入力した拡張コマンド523と、ブロック番号算出工程S613で算出したブロック番号とに基づいて、変換した拡張コマンドを生成する。拡張コマンド変換部140は、CPU911を用いて、生成した拡張コマンドを出力する。
読み出しサイズ判定工程S615において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドにおけるブロックサイズと、拡張コマンド生成工程S614で生成した拡張コマンドにおけるブロックサイズの累計とを比較する。
共通コマンドのブロックサイズが、拡張コマンドのブロックサイズの累計以下である場合、拡張コマンド変換部140は、CPU911を用いて、ブロック読み出しコマンド変換処理を終了する。
共通コマンドのブロックサイズが、拡張コマンドのブロックサイズの累計より大きい場合、拡張コマンド変換部140は、ブロック番号増加工程S616へ進む。
ブロック番号増加工程S616において、拡張コマンド変換部140は、CPU911を用いて、ブロック番号算出工程S613で算出したブロック番号と1との和を算出し、新しいブロック番号とする。
その後、拡張コマンド変換部140は、拡張コマンド生成工程S614に戻る。
図7は、この実施の形態における共通コマンド取得部161が取得する共通コマンドと、拡張コマンド変換部140が変換する拡張コマンドとの関係の具体例を示す図である。
例えば、共通コマンド取得部161が入力した共通コマンドが、256バイトを1ブロックとして、5番ブロックの読み出しを指示するブロック読み出しコマンドであるとする。また、プロトコル記憶部120は、図5に示したプロトコルテーブル520を記憶しているものとする。
識別受信部181が受信したTIDからプロトコル判定部130が判定したプロトコルが、例えば「TID」である場合、拡張コマンド変換部140は、CPU911を用いて、プロトコル判定部130が出力した共通コマンド「ブロック読み出し」、プロトコル「TID」、拡張コマンド523「ブロック読み出しA」、ブロックサイズ524「256」、ブロック数525「16」、開始ブロック番号526「0」を入力する。
ブロックサイズ比算出工程S612において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロックサイズ「256」と、入力したブロックサイズ524「256」との比「1」を算出する。
ブロック番号算出工程S613において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロック番号「5」と、算出した比「1」との積「5」を算出する。拡張コマンド変換部140は、CPU911を用いて、算出した積「5」が、入力したブロック数525「16」より小さいことを判定する。拡張コマンド変換部140は、CPU911を用いて、算出した積「5」と、入力した開始ブロック番号526「0」とを加算して、ブロック番号「5」を算出する。
拡張コマンド生成工程S614において、拡張コマンド変換部140は、CPU911を用いて、入力した拡張コマンド523「ブロック読み出しA」と、算出したブロック番号「5」とに基づいて、拡張コマンド「ブロック読み出しA #5」を生成して、出力する。
読み出しサイズ判定工程S615において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロックサイズ「256」が、生成した拡張コマンドのブロックサイズの累計「256」以下であることを判定して、ブロック読み出しコマンド変換処理を終了する。
識別受信部181が受信したTIDからプロトコル判定部130が判定したプロトコルが、例えば「TID」である場合、拡張コマンド変換部140は、CPU911を用いて、プロトコル判定部130が出力した共通コマンド「ブロック読み出し」、プロトコル「TID」、拡張コマンド523「ブロック読み出しB」、ブロックサイズ524「128」、ブロック数525「50」、開始ブロック番号526「1」を入力する。
ブロックサイズ比算出工程S612において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロックサイズ「256」と、入力したブロックサイズ524「128」との比「2」を算出する。
ブロック番号算出工程S613において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロック番号「5」と、算出した比「2」との積「10」を算出する。拡張コマンド変換部140は、CPU911を用いて、算出した積「10」が、入力したブロック数525「50」より小さいことを判定する。拡張コマンド変換部140は、CPU911を用いて、算出した積「10」と、入力した開始ブロック番号526「1」とを加算して、ブロック番号「11」を算出する。
拡張コマンド生成工程S614において、拡張コマンド変換部140は、CPU911を用いて、入力した拡張コマンド523「ブロック読み出しB」と、算出したブロック番号「11」とに基づいて、拡張コマンド「ブロック読み出しB #11」を生成する。
読み出しサイズ判定工程S615において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロックサイズ「256」が、生成した拡張コマンドのブロックサイズの累計「128」より大きいことを判定し、ブロック番号増加工程S616へ進む。
ブロック番号増加工程S616において、拡張コマンド変換部140は、CPU911を用いて、算出したブロック番号「11」に1を加えて、ブロック番号「12」を算出する。
拡張コマンド生成工程S614において、拡張コマンド変換部140は、CPU911を用いて、入力した拡張コマンド523「ブロック読み出しB」と、算出したブロック番号「12」とに基づいて、拡張コマンド「ブロック読み出しB #12」を生成して、出力する。
読み出しサイズ判定工程S615において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロックサイズ「256」が、生成した拡張コマンドのブロックサイズの累計「256」以下であることを判定し、ブロック読み出しコマンド変換処理を終了する。
識別受信部181が受信したTIDからプロトコル判定部130が判定したプロトコルが、例えば「TID」である場合、拡張コマンド変換部140は、CPU911を用いて、プロトコル判定部130が出力した共通コマンド521「ブロック読み出し」、プロトコル「TID」、拡張コマンド523「ブロック読み出しC」、ブロックサイズ524「1024」、ブロック数525「8」、開始ブロック番号526「0」を入力する。
ブロックサイズ比算出工程S612において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロックサイズ「256」と、入力したブロックサイズ524「1024」との比「1/4」を算出する。
ブロック番号算出工程S613において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロック番号「5」と、算出した比「1/4」との積「5/4」を算出し、小数部分を切り捨てて「1」とする。拡張コマンド変換部140は、CPU911を用いて、算出した積「1」が、入力したブロック数525「8」より小さいことを判定する。拡張コマンド変換部140は、CPU911を用いて、算出した積「1」と、入力した開始ブロック番号526「0」とを加算して、ブロック番号「1」を算出する。
拡張コマンド生成工程S614において、拡張コマンド変換部140は、CPU911を用いて、入力した拡張コマンド523「ブロック読み出しC」と、算出したブロック番号「1」とに基づいて、拡張コマンド「ブロック読み出しC #1」を生成し、出力する。
読み出しサイズ判定工程S615において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロックサイズ「256」が、生成した拡張コマンドのブロックサイズの累計「1024」以下であることを判定し、ブロック読み出しコマンド変換処理を終了する。
図8は、この実施の形態における拡張コマンド変換部140が、ブロック書き込みコマンドを変換するブロック書き込みコマンド変換処理の流れの一例を示すフローチャート図である。
拡張コマンド変換部140は、入力した共通コマンドが、ブロック書き込みコマンドである場合に、ブロック書き込みコマンド変換処理をする。
ブロック書き込みコマンド変換処理は、例えば、ブロックサイズ比算出工程S622、ブロック番号算出工程S623、ブロックサイズ比較工程S624、読み出しコマンド生成工程S625、書き込みデータ生成工程S626、拡張コマンド生成工程S627、書き込みサイズ判定工程S628、ブロック番号増加工程S629を有する。
ブロックサイズ比算出工程S622において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドにおけるブロックサイズを、入力したブロックサイズ524で割った比を算出する。
ブロック番号算出工程S623において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドにおけるブロック番号と、ブロックサイズ比算出工程S622で算出した比との積を算出する。拡張コマンド変換部140は、CPU911を用いて、算出した積と、入力したブロック数525とを比較する。算出した積がブロック数525以上の場合、そのブロックはICタグ820に存在しないので、拡張コマンド変換部140は、CPU911を用いて、ブロック書き込みコマンド変換処理を終了する。
算出した積がブロック数525より小さい場合、拡張コマンド変換部140は、CPU911を用いて、算出した積と、入力した開始ブロック番号526との和を算出し、ブロック番号とする。
ブロックサイズ比較工程S624において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドにおけるブロックサイズと、入力したブロックサイズ524とを比較する。拡張コマンド変換部140は、CPU911を用いて、共通コマンドにおけるブロックサイズが、入力したブロックサイズ524以上である場合、拡張コマンド生成工程S627へ進む。
なお、拡張コマンド変換部140は、CPU911を用いて、ブロックサイズ比算出工程S622で算出した比が1以上であるか否かに基づいて、共通コマンドにおけるブロックサイズが、入力したブロックサイズ524以上であるか否かを判定してもよい。
読み出しコマンド生成工程S625において、拡張コマンド変換部140は、CPU911を用いて、入力したプロトコルにおける拡張コマンドを生成する。ここで生成する拡張コマンドは、データをブロックに書き込む際、書き換えない部分のデータを、ICタグ820から読み出すためのブロック読み出しコマンドである。
拡張コマンド変換部140は、CPU911を用いて、プロトコル記憶部120が記憶したプロトコルテーブル520のなかから、共通コマンド521が「ブロック読み出し」と一致し、プロトコル522が、入力したプロトコルと一致するレコードを検索して、拡張コマンド523を取得する。拡張コマンド変換部140は、CPU911を用いて、取得した拡張コマンド523と、ブロック番号算出工程S623で算出したブロック番号とに基づいて、拡張コマンドを生成する。
書き込みデータ生成工程S626において、拡張コマンド変換部140は、CPU911を用いて、読み出しコマンド生成工程S625で生成した拡張コマンドに対する応答としてICタグ820が送信し、応答受信部182が受信して出力した応答データを入力する。拡張コマンド変換部140は、CPU911を用いて、入力した応答データのうち、入力した共通コマンドにより書き換えられるべき部分に、入力した共通コマンドにおける書き込みデータを上書きして、書き込みデータを生成する。
拡張コマンド生成工程S627において、拡張コマンド変換部140は、CPU911を用いて、入力した拡張コマンド523と、ブロック番号算出工程S623で算出したブロック番号と、書き込みデータとに基づいて、変換した拡張コマンドを生成する。拡張コマンド変換部140は、CPU911を用いて、生成した拡張コマンドを出力する。
書き込みサイズ判定工程S628において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドにおけるブロックサイズと、拡張コマンド生成工程S627で生成した拡張コマンドにおけるブロックサイズの累計とを比較する。
共通コマンドのブロックサイズが、拡張コマンドのブロックサイズの累計以下である場合、拡張コマンド変換部140は、CPU911を用いて、ブロック読み出しコマンド変換処理を終了する。
共通コマンドのブロックサイズが、拡張コマンドのブロックサイズの累計より大きい場合、拡張コマンド変換部140は、ブロック番号増加工程S629へ進む。
ブロック番号増加工程S629において、拡張コマンド変換部140は、CPU911を用いて、ブロック番号算出工程S623で算出したブロック番号と1との和を算出し、新しいブロック番号とする。
その後、拡張コマンド変換部140は、拡張コマンド生成工程S627に戻る。
図9は、この実施の形態における共通コマンド取得部161が取得する共通コマンドと、拡張コマンド変換部140が変換する拡張コマンドとの関係の具体例を示す図である。
例えば、共通コマンド取得部161が入力した共通コマンドが、256バイトを1ブロックとして、6番ブロックへの書き込みを指示するブロック書き込みコマンドであるとする。また、プロトコル記憶部120は、図5に示したプロトコルテーブル520を記憶しているものとする。
識別受信部181が受信したTIDからプロトコル判定部130が判定したプロトコルが、例えば「TID」である場合、拡張コマンド変換部140は、CPU911を用いて、プロトコル判定部130が出力した共通コマンド「ブロック書き込み」、プロトコル「TID」、拡張コマンド523「ブロック書き込みA」、ブロックサイズ524「256」、ブロック数525「16」、開始ブロック番号526「0」を入力する。
ブロックサイズ比算出工程S622において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロックサイズ「256」と、入力したブロックサイズ524「256」との比「1」を算出する。
ブロック番号算出工程S623において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロック番号「6」と、算出した比「1」との積「6」を算出する。拡張コマンド変換部140は、CPU911を用いて、算出した積「6」が、入力したブロック数525「16」より小さいことを判定する。拡張コマンド変換部140は、CPU911を用いて、算出した積「6」と、入力した開始ブロック番号526「0」とを加算して、ブロック番号「6」を算出する。
ブロックサイズ比較工程S624において、拡張コマンド変換部140は、入力した共通コマンドのブロックサイズ「256」が、入力したブロックサイズ524「256」以上であることを判定する。
拡張コマンド生成工程S627において、拡張コマンド変換部140は、CPU911を用いて、入力した拡張コマンド523「ブロック書き込みA」と、算出したブロック番号「6」と、入力した共通コマンドにおける256バイトの書き込みデータとに基づいて、拡張コマンド「ブロック書き込みA #6」を生成し、出力する。
書き込みサイズ判定工程S628において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロックサイズ「256」が、生成した拡張コマンドのブロックサイズの累計「256」以下であることを判定して、ブロック書き込みコマンド変換処理を終了する。
識別受信部181が受信したTIDからプロトコル判定部130が判定したプロトコルが、例えば「TID」である場合、拡張コマンド変換部140は、CPU911を用いて、プロトコル判定部130が出力した共通コマンド「ブロック書き込み」、プロトコル「TID」、拡張コマンド523「ブロック書き込みB」、ブロックサイズ524「128」、ブロック数525「50」、開始ブロック番号526「1」を入力する。
ブロックサイズ比算出工程S622において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロックサイズ「256」と、入力したブロックサイズ524「128」との比「2」を算出する。
ブロック番号算出工程S623において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロック番号「6」と、算出した比「2」との積「12」を算出する。拡張コマンド変換部140は、CPU911を用いて、算出した積「12」が、入力したブロック数525「50」より小さいことを判定する。拡張コマンド変換部140は、CPU911を用いて、算出した積「10」と、入力した開始ブロック番号526「1」とを加算して、ブロック番号「13」を算出する。
ブロックサイズ比較工程S624において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロックサイズ「256」が、入力したブロックサイズ524「128」以上であることを判定する。
拡張コマンド生成工程S627において、拡張コマンド変換部140は、CPU911を用いて、入力した拡張コマンド523「ブロック書き込みB」と、算出したブロック番号「13」と、入力した共通コマンドにおける256バイトの書き込みデータのうち最初の128バイトの書き込みデータとに基づいて、拡張コマンド「ブロック書き込みB #13」を生成し、出力する。
書き込みサイズ判定工程S628において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロックサイズ「256」が、生成した拡張コマンドのブロックサイズの累計「128」より大きいことを判定し、ブロック番号増加工程S629へ進む。
ブロック番号増加工程S629において、拡張コマンド変換部140は、CPU911を用いて、算出したブロック番号「13」に1を加えて、ブロック番号「14」を算出する。
拡張コマンド生成工程S627において、拡張コマンド変換部140は、CPU911を用いて、入力した拡張コマンド523「ブロック書き込みB」と、算出したブロック番号「14」と、入力した共通コマンドにおける256バイトの書き込みデータのうち後の128バイトの書き込みデータとに基づいて、拡張コマンド「ブロック書き込みB #14」を生成し、出力する。
書き込みサイズ判定工程S628において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロックサイズ「256」が、生成した拡張コマンドのブロックサイズの累計「256」以下であることを判定し、ブロック書き込みコマンド変換処理を終了する。
識別受信部181が受信したTIDからプロトコル判定部130が判定したプロトコルが、例えば「TID」である場合、拡張コマンド変換部140は、CPU911を用いて、プロトコル判定部130が出力した共通コマンド「ブロック書き込み」、プロトコル「TID」、拡張コマンド523「ブロック書き込みC」、ブロックサイズ524「1024」、ブロック数525「8」、開始ブロック番号526「0」を入力する。
ブロックサイズ比算出工程S622において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロックサイズ「256」と、入力したブロックサイズ524「1024」との比「1/4」を算出する。
ブロック番号算出工程S623において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロック番号「6」と、算出した比「1/4」との積「3/2」を算出し、小数部分を切り捨てて「1」とする。拡張コマンド変換部140は、CPU911を用いて、小数部分を切り捨てた積「1」が、入力したブロック数525「8」より小さいことを判定する。拡張コマンド変換部140は、CPU911を用いて、算出した積「1」と、入力した開始ブロック番号526「0」とを加算して、ブロック番号「1」を算出する。
ブロックサイズ比較工程S624において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロックサイズ「256」が、入力したブロックサイズ524「1024」より小さいことを判定する。
読み出しコマンド生成工程S625において、拡張コマンド変換部140は、CPU911を用いて、プロトコル記憶部120が記憶したプロトコルテーブル520のなかから、共通コマンド521が「ブロック読み出し」であり、かつ、プロトコル522が「TID」であるレコードを検索して、拡張コマンド523「ブロック読み出しC」を取得する。拡張コマンド変換部140は、CPU911を用いて、取得した拡張コマンド523「ブロック読み出しC」と、算出したブロック番号「1」とに基づいて、拡張コマンド「ブロック読み出しC #1」を生成し、出力する。
書き込みデータ生成工程S626において、拡張コマンド変換部140は、CPU911を用いて、生成した拡張コマンド「ブロック読み出しC #1」に対する応答として、ICタグ820が送信した1024バイトのデータを入力する。拡張コマンド変換部140は、CPU911を用いて、ブロック番号算出工程S623で算出した積「3/2」のうち小数部分のみを取り出して「1/2」とする。拡張コマンド変換部140は、CPU911を用いて、入力した1024バイトのデータのうち、「1/2」の位置に当たる513バイト目から始まる768バイト目までの256バイトのデータを、入力した共通コマンドにおける256バイトの書き込みデータで上書きして、1024バイトの書き込みデータを生成する。
拡張コマンド生成工程S627において、拡張コマンド変換部140は、CPU911を用いて、入力した拡張コマンド523「ブロック書き込みC」と、算出したブロック番号「1」と、生成した1024バイトの書き込みデータとに基づいて、拡張コマンド「ブロック書き込みC #1」を生成し、出力する。
書き込みサイズ判定工程S628において、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンドのブロックサイズ「256」が、拡張コマンド生成工程S627で生成した拡張コマンドのブロックサイズの累計「1024」以下であることを判定し、ブロック書き込みコマンド変換処理を終了する。
図10は、この実施の形態における応答変換部150が、ブロック読み出しコマンドに対する応答を変換するブロック読み出し応答変換処理の流れの一例を示すフローチャート図である。
応答変換部150は、入力した共通コマンドが、ブロック読み出しコマンドである場合に、ブロック読み出し応答変換処理をする。
ブロック読み出し応答変換処理は、例えば、応答データ入力工程S631、読み出し異常判定工程S632、ブロックサイズ比較工程S633、応答データ蓄積工程S634、読み出しサイズ判定工程S635、応答データ抽出工程S636、変換データ出力工程S637を有する。
応答データ入力工程S631において、応答変換部150は、CPU911を用いて、応答受信部182が出力した応答データを入力する。
読み出し異常判定工程S632において、応答変換部150は、CPU911を用いて、応答データ入力工程S631で入力した応答データを解析して、読み出し異常か否かを判定する。応答変換部150は、例えば、CPU911を用いて、入力した応答データの誤り検出符号を検査し、読み出し異常か否かを判定する。
応答変換部150は、CPU911を用いて、読み出し異常であると判定した場合、ブロック読み出し応答変換処理を終了する。
応答変換部150は、CPU911を用いて、読み出し異常でないと判定した場合、ブロックサイズ比較工程S633へ進む。
なお、応答変換部150が読み出し異常であると判定した場合、応答変換部150は、CPU911を用いて、読み出し異常であることを表わすデータを生成し、出力する構成としてもよい。あるいは、コマンド送信部172が拡張コマンドをICタグ820に対して再送し、応答受信部182が応答データを再び受信する構成としてもよい。
ブロックサイズ比較工程S633において、応答変換部150は、CPU911を用いて、入力した共通コマンドにおけるブロックサイズと、入力したブロックサイズ524とを比較する。
応答変換部150は、CPU911を用いて、入力した共通コマンドのブロックサイズが、入力したブロックサイズ524より大きいと判定した場合、応答データ蓄積工程S634へ進む。
応答変換部150は、CPU911を用いて、入力した共通コマンドのブロックサイズが、入力したブロックサイズ524より小さいと判定した場合、応答データ抽出工程S636へ進む。
応答変換部150は、CPU911を用いて、入力した共通コマンドのブロックサイズが、入力したブロックサイズ524と等しいと判定した場合、応答データ入力工程S631で入力した応答データを変換前データとして、変換データ出力工程S637へ進む。
応答データ蓄積工程S634において、応答変換部150は、CPU911を用いて、応答データ入力工程S631で入力した応答データを蓄積する。
読み出しサイズ判定工程S635において、応答変換部150は、CPU911を用いて、入力した共通データにおけるブロックサイズと、応答データ蓄積工程S634で蓄積した読み出しデータのサイズの累計とを比較する。
応答変換部150は、CPU911を用いて、入力した共通データにおけるブロックサイズが、蓄積した読み出しデータのサイズの累計より大きいと判定した場合、応答データ入力工程S631に戻る。
応答変換部150は、CPU911を用いて、入力した共通データにおけるブロックサイズが、蓄積した読み出しデータのサイズの累計以下であると判定した場合、蓄積した応答データを変換前データとして、変換データ出力工程S637へ進む。
応答データ抽出工程S636において、応答変換部150は、CPU911を用いて、応答データ入力工程S631で入力した応答データのなかから、出力すべき部分を抽出して、変換前データとする。
例えば、応答変換部150は、CPU911を用いて、入力したブロックサイズ524を、入力した共通コマンドにおけるブロックサイズで割った商を算出する。応答変換部150は、CPU911を用いて、入力した共通コマンドにおけるブロック番号を、算出した商で割った余りを算出する。応答変換部150は、CPU911を用いて、入力した応答データを、入力した共通コマンドにおけるブロックサイズごとに分割する。応答変換部150は、CPU911を用いて、分割した応答データのなかから、「算出した余り+1」番目の応答データを選択して、変換前データとする。
変換データ生成工程S637において、応答変換部150は、CPU911を用いて、変換前データを所定の形式に変換して、変換データを生成する。
変換データ出力工程S638において、応答変換部150は、CPU911を用いて、変換データを出力する。
図11は、この実施の形態における応答受信部182が受信した応答データと、応答変換部150が変換した変換データとの関係の具体例を示す図である。
拡張コマンド変換部140が、256バイトを1つのブロックとして5番ブロックを読み出す共通コマンド「ブロック読み出し 256,#5」を、256バイトを1つのブロックとして5番ブロックを読み出す拡張コマンド「ブロック読み出しA #5」に変換した場合、ICタグ820は、これに対する応答データとして、読み出した256バイトのデータを送信する。応答変換部150は、CPU911を用いて、応答受信部182が受信した応答データを変換前データとし、変換前データを所定の形式に変換して変換データとする。
拡張コマンド変換部140が共通コマンド「ブロック読み出し 256,#5」を、128バイトを1つのブロックとして11番ブロックを読み出す拡張コマンド「ブロック読み出しB #11」と、12番ブロックを読み出す拡張コマンド「ブロック読み出しB #12」とに変換した場合、ICタグ820は、「ブロック読み出しB #11」に対する応答データとして、読み出した128バイトのデータを送信し、「ブロック読み出しB #12」に対する応答データとして、読み出した128バイトのデータを送信する。応答変換部150は、CPU911を用いて、応答受信部182が受信した2つの応答データを蓄積して結合して256バイトのデータを生成して変換前データとし、変換前データを所定の形式に変換して変換データとする。
拡張コマンド変換部140が共通コマンド「ブロック読み出し 256,#5」を、1024バイトを1つのブロックとして1番ブロックを読み出す拡張コマンド「ブロック読み出しC #1」に変換した場合、ICタグ820は、これに対する応答データとして、読み出した1024バイトのデータを送信する。応答変換部150は、CPU911を用いて、応答受信部182が受信した応答データのなかから、5番ブロックに相当する256バイトのデータを抽出して変換前データとし、変換前データを所定の形式に変換して変換データとする。
なお、以上の説明では、1つのプロトコルに「ブロック読み出しコマンド」や「ブロック書き込みコマンド」が1種類しかない場合について説明したが、1つのプロトコルに複数種類の「ブロック読み出しコマンド」や「ブロック書き込みコマンド」がある場合も想定される。例えば、ブロックサイズが256バイトのブロック読み出しコマンド「ブロック読み出し小」と、ブロックサイズが1024バイトのブロック読み出しコマンド「ブロック読み出し大」とを含むプロトコルがあってもよい。
その場合、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンド「ブロック読み出し」を、効率のよいほうの拡張コマンドに変換する。例えば、拡張コマンド変換部140は、共通コマンドのブロックサイズが512バイト以下である場合、拡張コマンド「ブロック読み出し小」に変換する。拡張コマンド「ブロック読み出し大」に変換すると、1024バイトを読み出すため、通信時間が長くなり、読み出したデータのうち512バイト以上が無駄になるからである。逆に、共通コマンドのブロックサイズが512バイトより大きい場合、拡張コマンド「ブロック読み出し大」に変換する。拡張コマンド「ブロック読み出し小」に変換すると、ICタグ820に対してコマンドを3回以上送信するので、コマンド送信応答受信に時間がかかり、逆に通信時間が長くなるからである。
また、以上の説明では、「ブロック読み出しコマンド」「ブロック書き込みコマンド」について説明したが、共通コマンド・拡張コマンドは、これに限らず、他の機能を実現するコマンドであってもよい。
この実施の形態におけるデータ操作装置(RFIDリーダライタ装置100)は、制御装置(PC810)からの指示にしたがって記憶装置(ICタグ820)と通信し、上記記憶装置(ICタグ820)が記憶したデータを操作するデータ操作装置である。
データ操作装置(RFIDリーダライタ装置100)は、データを処理する処理装置(CPU911)と、上記記憶装置(ICタグ820)に対してデータを送信する送信装置917と、上記記憶装置(ICタグ820)からデータを受信する受信装置918と、共通コマンド取得部161と、識別取得指示部171と、識別受信部181と、コマンド群判定部(プロトコル判定部130)と、拡張コマンド変換部140と、拡張コマンド送信部(コマンド送信部172)と、応答受信部182と、応答変換部150と、応答通知部162とを有する。
上記共通コマンド取得部161は、上記処理装置(CPU911)を用いて、上記制御装置(PC810)からの指示を表わす共通コマンドを取得する。
上記識別取得指示部171は、上記送信装置917を用いて、上記記憶装置(ICタグ820)に対して、上記記憶装置の識別情報(TID)を送信するよう指示する識別取得コマンドを送信する。
上記識別受信部181は、上記受信装置918を用いて、上記識別取得指示部171が送信した識別取得コマンドに対する応答として、上記記憶装置(ICタグ820)が送信した識別情報(TID)を受信する。
上記コマンド群判定部(プロトコル判定部130)は、上記処理装置(CPU911)を用いて、上記識別受信部181が受信した識別情報(TID)に基づいて、複数の拡張コマンド群(プロトコル)のなかから、上記記憶装置(ICタグ820)が理解する拡張コマンド群(プロトコル)を判定する。
上記拡張コマンド変換部140は、上記処理装置(CPU911)を用いて、上記コマンド群判定部(プロトコル判定部130)が判定した拡張コマンド群(プロトコル)に基づいて、上記共通コマンド取得部161が取得した共通コマンドを、上記記憶装置(ICタグ820)が理解する拡張コマンドに変換する。
上記拡張コマンド送信部(コマンド送信部172)は、上記送信装置917を用いて、上記記憶装置(ICタグ820)に対して、上記拡張コマンド変換部140が変換した拡張コマンドを送信する。
上記応答受信部182は、上記受信装置918を用いて、上記拡張コマンド送信部(コマンド送信部172)が送信した拡張コマンドに対する応答として、上記記憶装置(ICタグ820)が送信した応答データを受信する。
上記応答変換部150は、上記処理装置(CPU911)を用いて、上記応答受信部182が受信した応答データのデータ形式を、所定の形式に変換して、変換データを生成する。
上記応答通知部162は、上記処理装置(CPU911)を用いて、上記共通コマンド取得部161が取得した共通コマンドに対する応答として、上記応答変換部150が生成した変換データを、上記制御装置(PC810)に対して通知する。
この実施の形態におけるデータ操作装置(RFIDリーダライタ装置100)によれば、異なる拡張コマンド群(プロトコル)を理解する記憶装置(ICタグ820)が混在する場合であっても、そのことを制御装置(PC810)の側で意識する必要がなく、同じ共通コマンドで、異なる拡張コマンド群を理解する記憶装置が記憶したデータを操作することができる。
この実施の形態におけるデータ操作装置(RFIDリーダライタ装置100)は、更に、コマンド判定部110と、基本コマンド変換部115とを有する。
上記コマンド判定部110は、上記処理装置(CPU911)を用いて、上記共通コマンド取得部161が取得した共通コマンドが、上記記憶装置(ICタグ820)の種別にかかわらず理解する基本コマンドに変換可能なコマンドか否かを判定する。
上記基本コマンド変換部115は、上記共通コマンド取得部161が取得した共通コマンドが上記基本コマンドに変換可能なコマンドであると、上記コマンド判定部110が判定した場合に、上記処理装置(CPU911)を用いて、上記共通コマンド取得部161が取得した共通コマンドを、上記基本コマンドに変換する。
上記拡張コマンド送信部(コマンド送信部172)は、上記共通コマンド取得部161が取得した共通コマンドが基本コマンドに変換可能なコマンドであると、上記コマンド判定部110が判定した場合に、上記送信装置917を用いて、上記記憶装置(ICタグ820)に対して、上記基本コマンド変換部115が変換した基本コマンドを送信し、上記共通コマンド取得部161が取得した共通コマンドが基本コマンドに変換可能なコマンドでないと、上記コマンド判定部110が判定した場合に、上記送信装置917を用いて、上記記憶装置(ICタグ820)に対して、上記拡張コマンド変換部140が変換した拡張コマンドを送信する。
この実施の形態におけるデータ操作装置(RFIDリーダライタ装置100)によれば、記憶装置(ICタグ820)が理解するコマンドに、規格などにより定められ、記憶装置の種別にかかわらずすべての記憶装置が理解する基本コマンドと、記憶装置の製造メーカーなどが独自に拡張したコマンドとがある場合において、基本コマンドにより実現される機能を使う場合は、記憶装置(ICタグ820)の種別にかかわらず、基本コマンド変換部115が、共通コマンドを基本コマンドに変換するので、既存のアプリケーションなどに変更を加える必要がない。
この実施の形態におけるデータ操作装置(RFIDリーダライタ装置100)は、更に、データを記憶する内部記憶装置(フラッシュメモリ920)と、プロトコル記憶部120とを有する。
上記プロトコル記憶部120は、上記内部記憶装置を用いて、上記コマンド群判定部(プロトコル判定部130)が判定する拡張コマンド群(プロトコル)のそれぞれについて、上記記憶装置(ICタグ820)が記憶したデータを複数まとめて操作する単位である一つの操作ブロックに含まれるデータの数を表わすブロックサイズ524を記憶する。
上記拡張コマンド変換部140は、上記処理装置(CPU911)を用いて、上記共通コマンド取得部161が取得した共通コマンドが、上記記憶装置(ICタグ820)が記憶したデータを複数まとめて操作するよう指示する共通ブロック操作コマンド(ブロック読み出しコマンド・ブロック書き込みコマンド)であるか否かを判定し、上記共通コマンドが上記共通ブロック操作コマンドであると判定した場合に、上記コマンド群判定部(プロトコル判定部130)が判定した拡張コマンド群(プロトコル)について上記プロトコル記憶部120が記憶したブロックサイズ524に基づいて、上記共通コマンドを拡張コマンドに変換する。
この実施の形態におけるデータ操作装置(RFIDリーダライタ装置100)によれば、記憶装置(ICタグ820)の種別によって、複数のデータをまとめて操作する単位であるブロックサイズが異なる場合であっても、制御装置(PC810)の側は、ブロックサイズを意識する必要がなく、同じ共通ブロック操作コマンドで、異なる拡張コマンド群を理解する記憶装置が記憶したデータを複数まとめて操作することができる。
この実施の形態におけるデータ操作装置(RFIDリーダライタ装置100)において、上記拡張コマンド変換部140は、上記処理装置(CPU911)を用いて、上記共通コマンド取得部161が取得した一つの共通コマンドを一以上の拡張コマンドに変換する。
上記応答変換部150は、上記処理装置(CPU911)を用いて、上記拡張コマンド変換部140が一つの共通コマンドを変換した一以上の拡張コマンドのそれぞれに対して上記応答受信部182が受信した応答データに基づいて、一つの変換データを生成する。
この実施の形態におけるデータ操作装置(RFIDリーダライタ装置100)によれば、制御装置(PC810)から取得した一つの共通コマンドを、拡張コマンド変換部140が複数の拡張コマンドに変換した場合であっても、記憶装置(ICタグ820)が複数の拡張コマンドそれぞれに対して送信した応答データに基づいて、応答変換部150が一つの変換データを生成するので、制御装置(PC810)の側から見ると、記憶装置(ICタグ820)が一つの共通コマンドに対して、一つの応答をしているように見え、異なる拡張コマンド群(プロトコル)を理解する記憶装置(ICタグ820)が混在する場合であっても、そのことを制御装置(PC810)の側で意識する必要がなく、同じ共通コマンドで、異なる拡張コマンド群を理解する記憶装置が記憶したデータを操作することができる。
この実施の形態におけるデータ操作システム(ICタグ読取システム800)は、複数の記憶装置(ICタグ820)と、上記データ操作装置(RFIDリーダライタ装置100)とを有する。
上記複数の記憶装置(ICタグ820)は、それぞれ、複数の拡張コマンド群(プロトコル)のうちいずれかの拡張コマンド群を理解する。
この実施の形態におけるデータ操作システム(ICタグ読取システム800)によれば、異なる拡張コマンド群(プロトコル)を理解する記憶装置(ICタグ820)が混在する場合であっても、そのことを制御装置(PC810)の側で意識する必要がなく、同じ共通コマンドで、異なる拡張コマンド群を理解する記憶装置が記憶したデータを操作することができる。
この実施の形態におけるデータ操作装置(RFIDリーダライタ装置100)は、データを処理する処理装置(CPU911)を有するコンピュータが実行することにより、上記コンピュータが、上記データ操作装置として機能するコンピュータプログラムを用いて、実現することができる。
この実施の形態におけるコンピュータプログラムによれば、異なる拡張コマンド群(プロトコル)を理解する記憶装置(ICタグ820)が混在する場合であっても、そのことを制御装置(PC810)の側で意識する必要がなく、同じ共通コマンドで、異なる拡張コマンド群を理解する記憶装置が記憶したデータを操作することができるデータ操作装置(RFIDリーダライタ装置100)を実現することができる。
この実施の形態におけるデータ操作装置(RFIDリーダライタ装置100)が、制御装置(PC810)からの指示にしたがって上記記憶装置(ICタグ820)と通信し、上記記憶装置が記憶したデータを操作するデータ操作方法は、以下の工程を有する。
上記処理装置(CPU911)が、上記制御装置(PC810)からの指示を表わす共通コマンドを取得する。
上記送信装置917が、上記記憶装置(ICタグ820)に対して、上記記憶装置の識別情報(TID)を送信するよう指示する識別取得コマンドを送信する。
上記受信装置918が、上記送信装置917が送信した識別取得コマンドに対する応答として、上記記憶装置(ICタグ820)が送信した識別情報(TID)を受信する。
上記処理装置(CPU911)が、上記受信装置918が受信した識別情報(TID)に基づいて、複数の拡張コマンド群(プロトコル)のなかから、上記記憶装置(ICタグ820)が理解する拡張コマンド群(プロトコル)を判定する。
上記処理装置(CPU911)が、判定した拡張コマンド群(プロトコル)に基づいて、取得した共通コマンドを、上記記憶装置(ICタグ820)が理解する拡張コマンドに変換する。
上記送信装置917が、上記記憶装置(ICタグ820)に対して、上記処理装置(CPU911)が変換した拡張コマンドを送信する。
上記受信装置918が、上記送信装置917が送信した拡張コマンドに対する応答として、上記記憶装置(ICタグ820)が送信した応答データを受信する。
上記処理装置(CPU911)が、上記受信装置918が受信した応答データのデータ形式を、所定の形式に変換して、変換データを生成する。
上記処理装置(CPU911)が、取得した共通コマンドに対する応答として、生成した変換データを、上記制御装置(PC810)に対して通知する。
この実施の形態におけるデータ操作方法によれば、異なる拡張コマンド群(プロトコル)を理解する記憶装置(ICタグ820)が混在する場合であっても、そのことを制御装置(PC810)の側で意識する必要がなく、同じ共通コマンドで、異なる拡張コマンド群を理解する記憶装置が記憶したデータを操作することができる。
以上説明したRFIDリーダライタ装置100は、アンテナ919、ユーザコマンド送受信制御部(通信装置915)、ユーザコマンド取得部(共通コマンド取得部161)、拡張エアコマンド判定部(コマンド判定部110)、TID取得指示部(識別取得指示部171)、エアコマンド送受信制御部(送信装置917、受信装置918)、TID取得部(識別受信部181)、プロトコル選択部(プロトコル判定部130)、エアコマンド整形部(拡張コマンド変換部140)、プロトコルテーブル(プロトコル記憶部120)、タグレスポンス取得部(応答受信部182)、レスポンス整形部(応答変換部150)を有する。
以上説明したICタグ読取システム800の動作の概要は、次のとおりである。
PC810で動作するアプリケーションで使用したユーザコマンド(共通コマンド)を、リーダ(RFIDリーダライタ装置100)が受信する。リーダは、そのユーザコマンドを、標準エアコマンド(基本コマンド)を実行するためのものか、拡張エアコマンド(拡張コマンド)を実行するものかで、分類する。
拡張エアコマンドを実行するためのものであれば、リーダは、まず標準エアコマンドを利用してC1G2のタグ(ICタグ820)が標準で記憶している情報であるTID(識別情報)を取得する。TIDは、タグメーカID、モデルIDなどで構成される情報である。
リーダは、取得したTIDに基づき、当該タグに適したエアコマンド(拡張コマンド)を選択する。リーダは、タグに対してこのエアコマンドを送信して、ユーザが実行したい機能を実現する。
リーダは、送信したエアコマンドに対するタグからの応答信号(タグレスポンス)(応答データ)から、情報を抽出・整形して、送信されたユーザコマンドに対する応答(ユーザコマンドレスポンス)を作成し、PC810に返信する。
PC810とリーダ(RFIDリーダライタ装置100)とは、ネットワークケーブルなどにより接続されている。リーダ(RFIDリーダライタ装置100)とタグ(ICタグ820)とは、無線により通信を行う。
PC810において動作するアプリケーションが、拡張エアコマンドを実行することで機能を実現するようなユーザコマンド(共通コマンド)を実行する。例えば、ユーザメモリの特定ブロックを保護するための「BlockLock」がある。
PC810においてユーザコマンドが実行されると、PC810は、ネットワークケーブルなどを介してリーダ(RFIDリーダライタ装置100)にユーザコマンドを送信する。
リーダは、ユーザコマンドを、ユーザコマンド送受信制御部(通信装置915)にて、受信する。
ユーザコマンド取得部(共通コマンド取得部161)は、ユーザコマンド送受信制御部からユーザコマンドを取得し、保持する。ユーザコマンド取得部は、拡張エアコマンド判定部(コマンド判定部110)に対して、ユーザコマンドを送信する。
拡張エアコマンド判定部(コマンド判定部110)は、ユーザコマンド(共通コマンド)が拡張エアコマンド(拡張コマンド)の実行を指示するものであるか否かを判定する。ユーザコマンドが拡張エアコマンドの実行を指示するものであれば、拡張エアコマンド判定部は、TID取得指示部(識別取得指示部171)に対して通知する。拡張エアコマンドの実行を指示するものでなければ、標準エアコマンド(基本コマンド)を実行するためのユーザコマンドなので、コマンド送信部172は、タグ(ICタグ820)と通信し、応答受信部182が受信したユーザコマンドレスポンス(応答データ)を、応答通知部162がアプリケーションに応答する。
TID取得指示部(識別取得指示部171)は、拡張エアコマンド判定部(コマンド判定部110)からユーザコマンドが拡張エアコマンドを実行するものであることを通知されると、タグ(ICタグ820)からTIDを取得するようにエアコマンド送受信制御部(送信装置917)に指示を送る。
エアコマンド送受信制御部(送信装置917)は、標準エアコマンドをタグに送信して、タグのTIDが保持されている領域を読み出す。タグが読み出したTIDを、エアコマンド送受信制御部(受信装置918)が受信する。
TID取得部(識別受信部181)は、エアコマンド送受信制御部(受信装置918)からTIDを取得し、保持する。
プロトコル選択部(プロトコル判定部130)は、ユーザコマンド取得部(共通コマンド取得部161)からユーザコマンドを入力し、TID取得部(識別受信部181)からTIDを入力する。プロトコル選択部は、それらにより、プロトコルテーブル520からエアコマンド(拡張コマンド)を選択する。例えば、プロトコル選択部は、ユーザコマンドB、TID_Bならば、エアコマンドB1、タグのメモリブロックサイズ256ビット、タグのメモリブロック数12を設定する。
エアコマンド整形部(拡張コマンド変換部140)は、プロトコル選択部(プロトコル判定部130)から入力したエアコマンド、タグのメモリブロックサイズ、タグのメモリブロック数と、ユーザコマンド取得部から入力したエアコマンドで使用するパラメータを入力し、エアコマンドを整形し、エアコマンド送受信制御部(送信装置917)に送信する。
エアコマンド送受信制御部(送信装置917)は、送信されたエアコマンド(拡張コマンド)を、タグ(ICタグ820)に対して送信する。
タグ(ICタグ820)は、リーダ(RFIDリーダライタ装置100)から送信されたエアコマンド(拡張コマンド)を受けると、エアコマンドで規定される処理を実行し、タグレスポンス(応答データ)を応答する。
エアコマンド送受信制御部(受信装置918)は、タグレスポンスを受信する。
タグレスポンス取得部(応答受信部182)は、エアコマンド送受信制御部(受信装置918)からタグレスポンス(応答データ)を取得し、保持する。
レスポンス整形部(応答変換部150)は、プロトコル選択部(プロトコル判定部130)から選択したエアコマンド(拡張コマンド)が何であるかの通知を受ける。それに基づき、レスポンス整形部は、タグレスポンスからユーザコマンドレスポンスに必要な情報を切り出す。レスポンス整形部は、あわせてフィールドの順序の入れ替え、ビット数あわせなどを行い、ユーザコマンドレスポンスデータを生成する。
レスポンス整形部(応答変換部150)は、生成したユーザコマンドレスポンスデータ(変換データ)をユーザコマンド送受信制御部(通信装置915)に対して送信する。
ユーザコマンド送受信制御部(通信装置915)は、レスポンス整形部(応答変換部150)から送信されたデータを、ユーザコマンドレスポンスとして、PC810に対して送信する。
これにより、タグ(ICタグ820)の種類により、類似または同一機能のエアコマンドが、同一でない場合であっても、ユーザはタグの種類を意識せずに、タグとの通信を行うことが可能となる。これにより、システムに数種類のタグが混在することも可能となり、システムの構築が容易になる。
以上説明したRFIDリーダライタ装置100において、プロトコル記憶部120は、プロトコルテーブル520を、不揮発性の記憶装置(フラッシュメモリ920)上に設ける。プロトコル判定部130は、エアコマンド(拡張コマンド)を選択する場合、プロトコル記憶部120が不揮発性の記憶装置上に記憶したプロトコルテーブル520を参照する。
なお、プロトコル記憶部120は、RAM914などの揮発性の記憶装置を用いて、プロトコルテーブル520を記憶する構成であってもよい。例えば、プロトコル記憶部120は、起動時などに、CPU911を用いて、フラッシュメモリ920などの不揮発性の記憶装置が記憶したプロトコルテーブルを読み込み、RAM914などの揮発性の記憶装置に複製する。プロトコル判定部130などは、プロトコル記憶部120がRAM914などに記憶したプロトコルテーブルを検索する。
以上説明したRFIDリーダライタ装置100において、プロトコルテーブル520が不揮発性の記憶装置(フラッシュメモリ920など)上に設けられ、プロトコル記憶部120は、起動時または指示のあったときに、プロトコルテーブルを、揮発性の記憶装置(RAM914など)上にコピーする。プロトコル判定部130は、エアコマンド(拡張コマンド)を選択する場合、プロトコル記憶部120が揮発性の記憶装置上にコピーしたプロトコルテーブルを参照する。
いずれの構成の場合であっても、プロトコルテーブル520を更新するだけで、すでに実装してある拡張エアプロトコルを使用するタグを追加することができる。
以上説明したRFIDリーダライタ装置100によれば、拡張エアコマンド(拡張コマンド)を判別して、ユーザコマンド(共通コマンド)を、標準エアコマンド(基本コマンド)と拡張エアコマンドとに分類するので、それぞれ異なる処理をすることができる。
また、プロトコルテーブル(プロトコル記憶部120)がブロックサイズ524を記憶しているので、タグ(ICタグ820)の種類ごとにブロックサイズが異なる場合であっても、制御装置(PC810)の側は、ブロックサイズを意識する必要がなく、RFIDリーダライタ装置100が、タグのブロックサイズに適合したコマンドを生成することができる。また、プロトコルテーブル(プロトコル記憶部120)がブロック数525も備えているので、RFIDリーダライタ装置100は、不正な空間指定に対処することができる。
TIDは、すべてのICタグ820が有し、標準エアコマンドで読み出すことができ、タグの種類によりユニークなので、これを識別情報として利用し、プロトコル判定部130が、TIDに基づいて、テーブルを引くなどして、ICタグ820がどの拡張エアコマンドを理解するかを判定する。したがって、ICタグ820からどの種類の拡張コマンドを使うかという情報を取得する必要がなく、ICタグ820に特別な機能を準備する必要がないので、既存のICタグ820をそのまま使用することができ、ICタグ読取システム800(データ操作システム)を、安価に実現することができる。
また、拡張コマンド変換部140が、1つのユーザコマンド(共通コマンド)を受けて複数のエアコマンド(拡張コマンド)に展開し、レスポンス整形部(応答変換部150)が、戻ってきたレスポンス(応答データ)のうち必要なレスポンスだけを切り出してユーザコマンドレスポンス(変換データ)を生成するので、ユーザは、一つのユーザコマンド(共通コマンド)が、実際にはいくつのエアコマンド(拡張コマンド)に展開されているのかを意識する必要がない。
なお、プロトコル記憶部120は、ICタグ820が理解するすべての拡張コマンドを記憶する必要はなく、ICタグ820が理解する拡張コマンドのうちの一部だけを記憶する構成としてもよい。これにより、例えばライセンス制限などにより、ICタグ820が理解する独自の拡張エアコマンドを実行してはいけない場合には、プロトコル記憶部120が、実行してはいけない拡張コマンドをプロトコルテーブルから削除すれば、容易に、通信の制約を行うことができる。
実施の形態2.
実施の形態2について、図12〜図13を用いて説明する。
なお、実施の形態1で説明したICタグ読取システム800と共通する部分については、同一の符号を付し、説明を省略する。
図12は、この実施の形態におけるRFIDリーダライタ装置100の機能ブロックの構成の一例を示すブロック構成図である。
RFIDリーダライタ装置100は、実施の形態1で説明した機能ブロックに加えて、更に、プロトコル更新部190を有する。
この実施の形態におけるRFIDリーダライタ装置100は、共通コマンドとして、基本コマンドなどICタグ820に対する指示を表わすコマンドのほか、RFIDリーダライタ装置100自身に対する指示を表わす制御コマンドを処理する。
コマンド判定部110は、CPU911を用いて、共通コマンド取得部161が出力した共通コマンドを入力する。コマンド判定部110は、CPU911を用いて、入力した共通コマンドが制御コマンドか、基本コマンドか、拡張コマンドに対応するコマンドかを判定する。コマンド判定部110は、CPU911を用いて、判定した判定結果を出力する。
プロトコル更新部190は、CPU911を用いて、コマンド判定部110が出力した判定結果を入力する。プロトコル更新部190は、CPU911を用いて、共通コマンド取得部161が取得した共通コマンドが制御コマンドであると、コマンド判定部110が判定した場合に、共通コマンド取得部161が出力した共通コマンドを入力する。プロトコル更新部190は、CPU911を用いて、入力した共通コマンドがプロトコルテーブル520の更新を指示するコマンド(以下「更新コマンド」と呼ぶ。)か否かを判定する。
プロトコル更新部190は、CPU911を用いて、入力した共通コマンドが更新コマンドであると判定した場合、プロトコル更新部190は、プロトコル記憶部120が記憶したプロトコルテーブル520を更新する。
図13は、この実施の形態におけるプロトコル記憶部120の詳細ブロックの構成の一例を示すブロック構成図である。
プロトコル記憶部120は、マスター記憶部121、二つのテーブル記憶部122,123、有効フラグ記憶部124、テーブル検索部125、テーブル更新部126、テーブル切替部127を有する。
マスター記憶部121は、フラッシュメモリ920を用いて、プロトコルテーブルを記憶する。
二つのテーブル記憶部122,123は、それぞれ、RAM914を用いて、プロトコルテーブルを記憶する。
有効フラグ記憶部124は、RAM914を用いて、二つのテーブル記憶部122,123のうちどちらが有効であるかを表わすフラグ(以下「有効フラグ」と呼ぶ。)を記憶する。
テーブル検索部125は、CPU911を用いて、プロトコル判定部130などからの要求にしたがって、二つのテーブル記憶部122,123のうち有効なほうのテーブル記憶部が記憶したプロトコルテーブルを検索し、検索した結果を返す。
テーブル検索部125は、CPU911を用いて、有効フラグ記憶部124が記憶した有効フラグを入力する。テーブル検索部125は、CPU911を用いて、入力した有効フラグに基づいて、二つのテーブル記憶部122,123のうち、どちらが有効であるかを判定する。テーブル検索部125は、CPU911を用いて、有効であると判定したほうのテーブル記憶部が記憶したプロトコルテーブルを検索する。
テーブル更新部126は、CPU911を用いて、プロトコル更新部190からの指示にしたがって、マスター記憶部121やテーブル記憶部122,123が記憶したプロトコルテーブルを更新する。
テーブル更新部126は、CPU911を用いて、マスター記憶部121が記憶したプロトコルテーブルを入力する。テーブル更新部126は、CPU911を用いて、マスター記憶部121が記憶したプロトコルテーブルを、プロトコル更新部190からの指示にしたがって更新する。マスター記憶部121は、フラッシュメモリ920を用いて、更新されたプロトコルテーブルを記憶する。
テーブル更新部126は、CPU911を用いて、有効フラグ記憶部124が記憶した有効フラグを入力する。テーブル更新部126は、CPU911を用いて、入力した有効フラグに基づいて、二つのテーブル記憶部122,123のうち、どちらが有効であるかを判定する。テーブル更新部126は、CPU911を用いて、有効でないと判定したほうのテーブル記憶部122が記憶したプロトコルテーブルを、マスター記憶部121が記憶したプロトコルテーブルと同じ内容に更新する。有効でないと判定されたほうのテーブル記憶部は、RAM914を用いて、更新されたプロトコルテーブルを記憶する。
テーブル切替部127は、CPU911を用いて、テーブル更新部126によるプロトコルテーブルの更新が完了した場合に、有効フラグ記憶部124が記憶した有効フラグを書き換えて、有効と無効とを反転させる。すなわち、テーブル切替部127は、それまでテーブル記憶部122が有効だった場合であれば、テーブル記憶部123が有効であることを表わす有効フラグに書き換え、逆に、テーブル記憶部123が有効だった場合であれば、テーブル記憶部122が有効であることを表わす有効フラグに書き換える。有効フラグ記憶部124は、RAM914を用いて、書き換えられた有効フラグを記憶する。
なお、テーブル切替部127は、CPU911を用いて、テーブル検索部125がプロトコルテーブルを検索中であるか否かを判定し、テーブル検索部125がプロトコルテーブルを検索中であると判定した場合、テーブル検索部125による検索が完了するのを待ってから、有効フラグ記憶部124が記憶した有効フラグを書き換える構成としてもよい。
また、テーブル更新部126は、CPU911を用いて、電源投入直後など初期化が必要な場合に、テーブル記憶部122が記憶したプロトコルテーブルを初期化する。
テーブル更新部126は、CPU911を用いて、マスター記憶部121が記憶したプロトコルテーブルを入力する。テーブル更新部126は、CPU911を用いて、テーブル記憶部122が記憶したプロトコルテーブルを、入力したプロトコルテーブルと同じ内容に初期化する。テーブル記憶部122は、RAM914を用いて、初期化されたプロトコルテーブルを記憶する。
テーブル切替部127は、CPU911を用いて、テーブル更新部126によるプロトコルテーブルの初期化が完了した場合に、有効フラグ記憶部124が記憶した有効フラグを、テーブル記憶部122が有効であることを表わす有効フラグに初期化する。有効フラグ記憶部124は、RAM914を用いて、初期化された有効フラグを記憶する。
プロトコルテーブルの更新の途中の時点において、更新途中のテーブル記憶部が記憶したプロトコルテーブルは、整合が取れていない可能性がある。しかし、テーブル検索部125は、テーブル更新部126が更新しているプロトコルテーブルを記憶しているテーブル記憶部とは異なるテーブル記憶部を検索するので、整合が取れていないプロトコルテーブルにはアクセスしない。
テーブル更新部126によるプロトコルテーブルの更新が完了したのち、有効フラグ記憶部124が記憶した有効フラグを、テーブル切替部127が書き換えると、テーブル検索部125は、その後、更新されたプロトコルテーブルを検索する。
これにより、ICタグ読取システム800の運用中であっても、プロトコル記憶部120が記憶したプロトコルテーブルを更新することができる。
例えば、ICタグ読取システム800に、異なるメーカーのICタグ820や、同じメーカーのバージョンアップされたICタグ820を導入したことにより、ICタグ820が理解するプロトコルが増えた場合、プロトコル記憶部120が記憶したプロトコルテーブルを更新する必要が生じる。そのような場合であっても、ICタグ読取システム800の運用を停止する必要はなく、PC810が、RFIDリーダライタ装置100に対して、プロトコルテーブルの更新を指示する制御コマンドを共通コマンドとして与えることにより、プロトコルテーブルを更新することができる。
なお、プロトコルテーブルの更新が完了したらすぐに有効フラグを書き換えるのではなく、共通コマンド取得部161が、プロトコルテーブルの切り替えを指示する制御コマンドを、共通コマンドとして取得した場合に、有効フラグを書き換える構成としてもよい。
また、二つのテーブル記憶部122,123が、RAM914などの揮発性の記憶装置を用いてプロトコルテーブルを記憶するのではなく、フラッシュメモリ920などの不揮発性の記憶装置を用いてプロトコルテーブルを記憶する構成としてもよい。その場合、マスター記憶部121は、なくてもよい。
この実施の形態におけるデータ操作装置(RFIDリーダライタ装置100)において、上記プロトコル記憶部120は、複数のテーブル記憶部122,123と、有効フラグ記憶部124と、テーブル更新部126と、テーブル切替部127とを有する。
上記複数のテーブル記憶部122,123のそれぞれは、上記内部記憶装置(RAM914)を用いて、上記コマンド群判定部(プロトコル判定部130)が判定する拡張コマンド群(プロトコル)のそれぞれについて、上記記憶装置(ICタグ820)が理解する拡張コマンド523と、上記ブロックサイズ524とを含むプロトコルテーブル520を記憶する。
上記有効フラグ記憶部124は、上記内部記憶装置(RAM914)を用いて、上記複数のテーブル記憶部122,123のうち、いずれが有効であるかを表わす有効フラグを記憶する。
上記テーブル更新部126は、上記処理装置(CPU911)を用いて、上記共通コマンド取得部161が取得した共通コマンドが、プロトコルテーブル520の更新を指示するコマンド(テーブル更新コマンド)である場合に、上記有効フラグ記憶部124が記憶した有効フラグに基づいて、有効でないテーブル記憶部が記憶したプロトコルテーブル520を更新する。
上記テーブル切替部127は、上記処理装置(CPU911)を用いて、上記有効フラグ記憶部124が記憶した有効フラグを更新して、上記テーブル更新部126が更新したテーブル記憶部を有効にする。
これにより、データ操作システム(ICタグ読取システム800)で使用する記憶装置(ICタグ820)の種類を増やした場合など、プロトコル記憶部120が記憶したプロトコルテーブル520を更新する必要が生じた場合、データ操作システムの運用を続けたままの状態で、プロトコルテーブル520を更新することができる。
以上説明したRFIDリーダライタ装置100は、ユーザコマンド送受信部(通信装置915)、ユーザコマンド取得部(共通コマンド取得部161)、テーブル更新コマンド判定部(プロトコル更新部190)、プロトコルテーブルA有効フラグ及びプロトコルテーブルB有効フラグ(有効フラグ記憶部124)、生成テーブル選択部及びテーブル生成部(テーブル更新部126)、テーブルフラグ有効化部(テーブル切替部127)、プロトコルテーブルA(テーブル記憶部122)、プロトコルテーブルB(テーブル記憶部123)、レスポンス整形部(応答変換部150)を有する。
以上説明したICタグ読取システム800の動作の概要は、次のとおりである。
PC810は、更新するプロトコルテーブルをテーブル更新用ファイルとして、あらかじめ保存しておく。
PC810は、プロトコルテーブルを更新するため、テーブル更新コマンドを実行する。
テーブル更新コマンドが実行されると、PC810は、リーダ(RFIDリーダライタ装置100)に対して、ネットワークケーブルなどを介して、テーブル更新コマンドと指定されたファイルとを送信する。
リーダ(RFIDリーダライタ装置100)は、受信したコマンドがテーブル更新コマンドであると判定すると、受信したファイルから新しいプロトコルテーブルを生成する。
PC810は、更新に使用するプロトコルテーブルを、テーブル更新用ファイルとして保存する。
PC810は、プロトコルテーブルを更新するため、ユーザコマンド(共通コマンド)として、テーブル更新コマンド(更新コマンド)を実行する。
テーブル更新コマンドは、テーブル更新用ファイルを指定する引数を備えている。
PC810は、ネットワークケーブルなどを介して、リーダ(RFIDリーダライタ装置100)に対して、テーブル更新コマンドを送信する。PC810は、テーブル更新用ファイルを、テーブル更新コマンドと一緒に送信する。
テーブル更新コマンドおよびテーブル更新用ファイルは、ユーザコマンド送受信制御部(通信装置915)が受信する。
ユーザコマンド取得部(共通コマンド取得部161)は、ユーザコマンド送受信制御部(通信装置915)からユーザコマンド(共通コマンド)を取得し、保持する。ユーザコマンド取得部は、ユーザコマンドを、テーブル更新コマンド判定部(プロトコル更新部190)に対して、送信する。
テーブル更新コマンド判定部(プロトコル更新部190)は、ユーザコマンドがテーブル更新コマンドであるか否かを判定する。テーブル更新コマンド判定部は、ユーザコマンドがテーブル更新コマンドである場合、生成テーブル選択部(テーブル更新部126)に通知し、プロトコルテーブルの更新処理を開始する。ユーザコマンドがテーブル更新コマンドでない場合は、通常通り、当該コマンドの機能を実行し、プロトコルテーブル更新の処理を実行しない。
プロトコルテーブルの更新処理を開始すると、生成テーブル選択部(テーブル更新部126)は、プロトコルテーブルA有効フラグおよびプロトコルテーブルB有効フラグの状態を確認する。
これらのフラグは、2つあるプロトコルテーブル(テーブル記憶部122,123)のどちらが有効になっているかを示す。
例えば、プロトコルテーブルAが有効であり、プロトコルテーブルA有効フラグが有意になっている場合について説明する。
生成テーブル選択部(テーブル更新部126)は、プロトコルテーブルBが無効であると判定し、新しいプロトコルテーブル(以下「新プロトコルテーブル」と呼ぶ。)をプロトコルテーブルBに生成するように、テーブル生成部(テーブル更新部126)に指示する。
テーブル生成部(テーブル更新部126)は、ユーザコマンド送受信制御部(通信装置915)が保持しているテーブル更新用ファイルを順次読み出して、プロトコルテーブルBに新プロトコルテーブルを生成する。新しいプロトコルテーブルの生成を完了すると、テーブル生成部(テーブル更新部126)は、テーブルフラグ有効化部(テーブル切替部127)に通知する。
テーブルフラグ有効化部(テーブル切替部127)は、プロトコルテーブルA有効フラグを無意にして古いプロトコルテーブル(以下旧プロトコルテーブル)を無効にし、続いて、プロトコルテーブルB有効フラグを有意にして新プロトコルテーブルを有効にする。これにより、プロトコルテーブルの更新が行われる。
テーブル更新コマンド判定部(プロトコル更新部190)は、レスポンス整形部(応答変換部150)に対して、ユーザコマンドがテーブル更新コマンドであることを通知する。テーブルフラグ有効化部(テーブル切替部127)は、レスポンス整形部に対して、プロトコルテーブルの更新完了を通知する。レスポンス整形部は、更新完了の通知を受信すると、正常に完了していれば処理完了コードを、異常終了であれば異常終了コードをユーザコマンドレスポンスに組み込み、整形して、ユーザコマンド送受信制御部(通信装置915)に送信する。
ユーザコマンド送受信制御部(通信装置915)は、ネットワークケーブルなどを介して、PC810に対して、ユーザコマンドレスポンスを送信する。
これにより、ICタグ読取システム800がサポートするタグの種類が増えても、ハードウェアやソフトウェアを作り直す必要がなく、プロトコルテーブルを更新すればよいので、開発の効率が上がる。また、専用コマンドを設けることで、フィールドでも、容易にプロトコルテーブルを更新することができる。
実施の形態3.
実施の形態3について、図14を用いて説明する。
なお、実施の形態2で説明したICタグ読取システム800と共通する部分については、同一の符号を付し、説明を省略する。
図14は、この実施の形態におけるプロトコル記憶部120の詳細ブロックの構成の一例を示すブロック構成図である。
プロトコル記憶部120は、二つのマスター記憶部121a,121b、テーブル記憶部122、有効フラグ記憶部124、テーブル検索部125、テーブル更新部126、テーブル切替部127、テーブル読込部128を有する。
二つのマスター記憶部121a,121bは、それぞれ、フラッシュメモリ920を用いて、プロトコルテーブルを記憶する。
テーブル記憶部122は、RAM914を用いて、プロトコルテーブルを記憶する。
テーブル検索部125は、CPU911を用いて、プロトコル判定部130などからの要求にしたがって、テーブル記憶部122が記憶したプロトコルテーブルを検索し、検索した結果を返す。
有効フラグ記憶部124(マスター有効フラグ記憶部)は、フラッシュメモリ920を用いて、二つのマスター記憶部121a,121bのうち、どちらが有効であるかを表わす有効フラグ(マスター有効フラグ)を記憶する。
テーブル更新部126は、CPU911を用いて、プロトコル更新部190からの指示にしたがって、マスター記憶部121a,121bが記憶したプロトコルテーブルを更新する。
テーブル更新部126は、CPU911を用いて、有効フラグ記憶部124が記憶した有効フラグを入力する。テーブル更新部126は、CPU911を用いて、入力した有効フラグに基づいて、二つのマスター記憶部121a,121bのうち、どちらが有効であるかを判定する。テーブル更新部126は、CPU911を用いて、有効でないと判定したほうのマスター記憶部が記憶したプロトコルテーブルを入力する。テーブル更新部126は、CPU911を用いて、入力したプロトコルテーブルを、プロトコル更新部190からの指示にしたがって更新する。有効でないと判定されたほうのマスター記憶部は、フラッシュメモリ920を用いて、更新されたプロトコルテーブルを記憶する。
テーブル切替部127は、CPU911を用いて、テーブル更新部126によるプロトコルテーブルの更新が完了した場合に、有効フラグ記憶部124が記憶した有効フラグを書き換えて、有効と無効とを反転させる。有効フラグ記憶部124は、フラッシュメモリ920を用いて、書き換えられた有効フラグを記憶する。
テーブル読込部128は、CPU911を用いて、電源投入直後など初期化が必要な場合や、有効フラグ記憶部124が記憶した有効フラグが書き換えられた場合に、マスター記憶部が記憶したプロトコルテーブルを、テーブル記憶部122に読み込む。
テーブル読込部128は、CPU911を用いて、有効フラグ記憶部124が記憶した有効フラグを入力する。テーブル読込部128は、CPU911を用いて、入力した有効フラグに基づいて、二つのマスター記憶部121a,121bのうち、どちらが有効かを判定する。テーブル読込部128は、CPU911を用いて、有効であると判定したほうのマスター記憶部が記憶したプロトコルテーブルを入力する。テーブル読込部128は、CPU911を用いて、テーブル記憶部122が記憶したプロトコルテーブルを、入力したプロトコルテーブルと同じ内容に書き換える。テーブル記憶部122は、RAM914を用いて、書き換えられたプロトコルテーブルを記憶する。
このように、マスター記憶部を二つ備えることにより、プロトコルテーブルの更新中に、RFIDリーダライタ装置100が異常終了するなどして、プロトコルテーブルの更新が完了しなかった結果、更新中だったマスター記憶部が記憶しているプロトコルテーブルが整合の取れていないものになった場合であっても、有効なほうのマスター記憶部は、更新前のプロトコルテーブルを記憶しているので、復帰後、テーブル読込部128は、更新前のプロトコルテーブルをテーブル記憶部122に読み込み、RFIDリーダライタ装置100は、正常に動作する。
なお、実施の形態2と同様、二つのテーブル記憶部を備える構成としてもよい。例えば、テーブル検索部125は、二つのテーブル記憶部のうち、有効なほうのテーブル記憶部が記憶したプロトコルテーブルを検索し、テーブル読込部128は、二つのテーブル記憶部のうち、有効でないほうのテーブル記憶部にプロトコルテーブルを読み込んで、有効なテーブル記憶部を切り替える。
この実施の形態におけるデータ操作装置(RFIDリーダライタ装置100)は、更に、データを記憶する不揮発性の不揮発内部記憶装置(フラッシュメモリ920)を有する。
上記プロトコル記憶部120は、複数のマスター記憶部121a,121bと、マスター有効フラグ記憶部(有効フラグ記憶部124)と、テーブル更新部126と、テーブル切替部127と、テーブル記憶部122とを有する。
上記複数のマスター記憶部121a,121bのそれぞれは、上記不揮発内部記憶装置(フラッシュメモリ920)を用いて、上記コマンド群判定部(プロトコル判定部130)が判定する拡張コマンド群(プロトコル)のそれぞれについて、上記記憶装置(ICタグ820)が理解する拡張コマンド523と、上記ブロックサイズ524とを含むプロトコルテーブル520を記憶する。
上記マスター有効フラグ記憶部(有効フラグ記憶部124)は、上記内部記憶装置(RAM914)を用いて、上記複数のマスター記憶部121a,121bのうち、いずれが有効であるかを表わすマスター有効フラグ(有効フラグ)を記憶する。
上記テーブル更新部126は、上記処理装置(CPU911)を用いて、上記共通コマンド取得部161が取得した共通コマンドが、プロトコルテーブルの更新を指示するコマンド(テーブル更新コマンド)である場合に、上記マスター有効フラグ記憶部(有効フラグ記憶部124)が記憶したマスター有効フラグ(有効フラグ)に基づいて、有効でないマスター記憶部が記憶したプロトコルテーブル520を更新する。
上記テーブル切替部127は、上記処理装置(CPU911)を用いて、上記マスター有効フラグ記憶部(有効フラグ記憶部124)が記憶したマスター有効フラグ(有効フラグ)を更新して、上記テーブル更新部126が更新したマスター記憶部を有効にする。
上記テーブル記憶部122は、上記内部記憶装置(RAM914)を用いて、上記マスター有効フラグ記憶部(有効フラグ記憶部124)が記憶したマスター有効フラグ(有効フラグ)に基づいて、有効なマスター記憶部が記憶したプロトコルテーブル520を読み込んで、記憶する。
これにより、データ操作システム(ICタグ読取システム800)で使用する記憶装置(ICタグ820)の種類を増やした場合など、プロトコル記憶部120が記憶したプロトコルテーブル520を更新する必要が生じた場合、データ操作システムの運用を続けたままの状態で、プロトコルテーブル520を更新することができる。
以上説明したRFIDリーダライタ装置100は、ユーザコマンド送受信部(通信装置915)、ユーザコマンド取得部(共通コマンド取得部161)、テーブル更新コマンド判定部(プロトコル更新部190)、プロトコルテーブルAマスタ有効フラグ及びプロトコルテーブルBマスタ有効フラグ(有効フラグ記憶部124)、生成テーブルマスタ選択部及びテーブルマスタ生成部(テーブル更新部126)、テーブルマスタフラグ有効化部(テーブル切替部127)、プロトコルテーブルAマスタ(マスター記憶部121a)、プロトコルテーブルBマスタ(マスター記憶部121b)、プロトコルテーブルロード部(テーブル読込部128)、プロトコルテーブル(テーブル記憶部122)、レスポンス整形部(応答変換部150)を有する。
以上説明したICタグ読取システム800の動作の概要は、次のとおりである。
不揮発性の記憶装置(フラッシュメモリ920や磁気ディスク装置など)にプロトコルテーブルのマスターファイルを置き、起動時または指示があったときに、揮発性の記憶装置(RAM914など)にコピー(例えば、プログラム変数として扱い、DRAM上の変数領域にコピー)をして、エアコマンドを選択するときには、揮発性の記憶装置にコピーしたプロトコルテーブルを参照する。
プロトコルテーブルの更新処理を開始すると、生成テーブルマスタ選択部(テーブル更新部126)は、プロトコルテーブルAマスタ有効フラグおよびプロトコルテーブルBマスタ有効フラグの状態を確認する。
これらのフラグは、2つあるプロトコルテーブルマスタ(マスター記憶部121a,121b)のどちらが有効になっているかを示す。
例えば、プロトコルテーブルAマスタが有効であり、プロトコルテーブルAマスタ有効フラグが有意になっている場合について説明する。
生成テーブルマスタ選択部(テーブル更新部126)は、プロトコルテーブルBマスタが無効であると判定し、新しいプロトコルテーブルマスタ(以下「新プロトコルテーブルマスタ」と呼ぶ。)をプロトコルテーブルBマスタに生成するように、テーブルマスタ生成部(テーブル更新部126)に指示する。
テーブルマスタ生成部(テーブル更新部126)は、ユーザコマンド送受信制御部(共通コマンド取得部161)が保持しているテーブル更新用ファイルを順次読み出して、プロトコルテーブルBマスタに新プロトコルテーブルマスタを生成する。新しいプロトコルテーブルマスタの生成を完了すると、テーブルマスタ生成部(テーブル更新部126)は、テーブルマスタフラグ有効化部(テーブル切替部127)に通知する。
テーブルマスタフラグ有効化部(テーブル切替部127)は、プロトコルテーブルAマスタ有効フラグを無意にして古いプロトコルテーブルマスタ(以下「旧プロトコルテーブル」と呼ぶ。)を無効にし、続いて、プロトコルテーブルBマスタ有効フラグを有意にして新プロトコルテーブルマスタを有効にする。これにより、プロトコルテーブルマスタの更新が行われる。
テーブルマスタフラグ有効化部(テーブル切替部127)は、プロトコルテーブルBマスタ有効フラグを有意にすると、プロトコルテーブルロード部(テーブル読込部128)に通知する。プロトコルテーブルロード部は、プロトコルテーブルAマスタ有効フラグとプロトコルテーブルBマスタ有効フラグとを参照し、プロトコルテーブルBマスタが有効であると判定し、プロトコルテーブルBマスタを読み出して、プロトコルテーブルを更新する。
これにより、ICタグ読取システム800がサポートするタグの種類が増えても、ハードウェアやソフトウェアを作り直す必要がなく、プロトコルテーブルを更新すればよいので、開発の効率が上がる。また、専用コマンドを設けることで、フィールドでも、容易にプロトコルテーブルを更新することができる。
実施の形態4.
実施の形態4について、図15〜図17を用いて説明する。
なお、実施の形態1〜実施の形態3で説明したICタグ読取システム800と共通する部分については、同一の符号を付し、説明を省略する。
この実施の形態では、ICタグ820が、記憶ブロック全体を読み書きする拡張コマンドだけでなく、記憶ブロックの一部を読み書きする拡張コマンド(以下「拡張ブロック操作コマンド」と呼ぶ。)を理解する場合について説明する。
また、それに対応して、共通コマンドの仕様にも少し変更を加え、ICタグ820の記憶領域の任意の範囲を指定して読み書きする共通コマンド(以下「共通ブロック操作コマンド」と呼ぶ。)を加える。
共通ブロック操作コマンドでは、操作対象となる記憶領域を指定して、データの読み出しあるいは書き込みを行う。操作対象となる記憶領域の指定方式には、様々なものがあるが、ここでは、操作対象となる記憶領域の開始アドレス(以下「共通開始アドレス」と呼ぶ。)と、操作対象となる記憶領域の大きさ(以下「共通操作サイズ」と呼ぶ。)とを指定する場合を例として説明する。
拡張ブロック操作コマンドの仕様は、ICタグ820が理解するプロトコルごとに異なるが、操作対象となる記憶領域を指定して、データの読み出しあるいは書き込みを行う点は、共通ブロック操作コマンドと同様である。ここでは、操作対象となる記憶領域の指定方式として、操作対象となる記憶領域を含むブロックのブロック番号と、そのブロック内における操作対象となる記憶領域の開始アドレス(以下「拡張開始アドレス」と呼ぶ。)と、操作対象となる記憶領域の大きさ(以下「拡張操作サイズ」と呼ぶ。)とを指定する場合を例として説明する。
図15は、この実施の形態における拡張コマンド変換部140の詳細ブロックの構成の一例を示すブロック構成図である。
なお、この図には、プロトコル判定部130が出力した共通コマンドが共通ブロック操作コマンドである場合に関係する部分のみを示している。
拡張コマンド変換部140は、共通操作サイズ取得部141、共通開始アドレス取得部142、拡張コマンド取得部143、ブロックサイズ取得部144、ブロック数取得部145、開始ブロック番号取得部146、残りサイズ記憶部241、拡張開始アドレス算出部242、拡張操作サイズ算出部243、残りサイズ算出部244、ブロック番号算出部245、ブロック番号記憶部246、ブロック番号判定部247、ブロック番号更新部248、拡張コマンド生成部249を有する。
共通操作サイズ取得部141は、CPU911を用いて、プロトコル判定部130が出力した共通ブロック操作コマンドにおいて指定された共通操作サイズを取得する。共通操作サイズ取得部141は、CPU911を用いて、取得した共通操作サイズを出力する。
共通開始アドレス取得部142は、CPU911を用いて、プロトコル判定部130が出力した共通ブロック操作コマンドにおいて指定された共通開始アドレスを取得する。共通開始アドレス取得部142は、CPU911を用いて、取得した共通開始アドレスを出力する。
拡張コマンド取得部143は、CPU911を用いて、プロトコル判定部130が出力した拡張コマンド523を入力する。拡張コマンド取得部143は、CPU911を用いて、入力した拡張コマンド523を出力する。
ブロックサイズ取得部144は、CPU911を用いて、プロトコル判定部130が出力したブロックサイズ524を入力する。ブロックサイズ取得部144は、CPU911を用いて、入力したブロックサイズ524を出力する。
ブロック数取得部145は、CPU911を用いて、プロトコル判定部130が出力したブロック数525を入力する。ブロック数取得部145は、CPU911を用いて、入力したブロック数525を出力する。
開始ブロック番号取得部146は、CPU911を用いて、プロトコル判定部130が出力した開始ブロック番号526を入力する。開始ブロック番号取得部146は、CPU911を用いて、入力した開始ブロック番号を出力する。
残りサイズ記憶部241は、CPU911を用いて、共通操作サイズ取得部141が出力した共通操作サイズを入力する。残りサイズ記憶部241は、RAM914を用いて、入力した共通操作サイズを、残りサイズとして記憶する。
また、残りサイズ記憶部241は、CPU911を用いて、後述する残りサイズ算出部244が出力した残りサイズを入力する。残りサイズを入力した場合、残りサイズ記憶部241は、RAM914を用いて、入力した残りサイズを、上書きして記憶する。
拡張開始アドレス算出部242は、CPU911を用いて、共通開始アドレス取得部142が出力した共通開始アドレスと、ブロックサイズ取得部144が出力したブロックサイズとを入力する。拡張開始アドレス算出部242は、CPU911を用いて、入力した開始アドレスと、ブロックサイズとに基づいて、一つの共通ブロック操作コマンドに対する最初の拡張ブロック操作コマンドの拡張開始アドレスを算出する。拡張開始アドレス算出部242は、CPU911を用いて、算出した拡張開始アドレスを出力する。
例えば、拡張開始アドレス算出部242は、入力した共通開始アドレスを、入力したブロックサイズで割った余りを算出して、拡張開始アドレスとする。
拡張操作サイズ算出部243は、CPU911を用いて、ブロックサイズ取得部144が出力したブロックサイズと、残りサイズ記憶部241が出力した残りサイズと、拡張開始アドレス算出部242が出力した拡張開始アドレスとを入力する。拡張操作サイズ算出部243は、入力したブロックサイズと、残りサイズと、拡張開始アドレスとに基づいて、拡張ブロック操作コマンドの拡張操作サイズを算出する。拡張操作サイズ算出部243は、CPU911を用いて、算出した拡張操作サイズを出力する。
例えば、拡張操作サイズ算出部243は、CPU911を用いて、算出する拡張操作サイズが、一つの共通ブロック操作コマンドに対する最初の拡張ブロック操作コマンドについてのものか、二つ目以降の拡張ブロック操作コマンドについてのものかを判定し、最初の拡張ブロック操作コマンドについてのものであると判定した場合、入力したブロックサイズから、入力した拡張開始アドレスを差し引いて、最初のブロックの残りサイズ(以下「ブロック残りサイズ」と呼ぶ。)を算出する。二つ目以降の拡張ブロック操作コマンドについてのものであると判定した場合、拡張操作サイズ算出部243は、CPU911を用いて、入力したブロックサイズを、二つ目以降のブロックのブロック残りサイズとする。拡張操作サイズ算出部243は、CPU911を用いて、算出したブロック残りサイズと、入力した残りサイズとを比較して、小さいほうを拡張操作サイズとする。
残りサイズ算出部244は、CPU911を用いて、残りサイズ記憶部241が記憶した残りサイズと、拡張操作サイズ算出部243が出力した拡張操作サイズとを入力する。残りサイズ算出部244は、CPU911を用いて、入力した残りサイズから、入力した拡張操作サイズを差し引いて、新しい残りサイズを算出する。残りサイズ算出部244は、CPU911を用いて、算出した残りサイズを出力する。
ブロック番号算出部245は、CPU911を用いて、共通開始アドレス取得部142が出力した共通開始アドレスと、ブロックサイズ取得部144が出力したブロックサイズと、開始ブロック番号取得部146が出力した開始ブロック番号とを入力する。ブロック番号算出部245は、CPU911を用いて、入力した共通開始アドレスと、ブロックサイズと、開始ブロック番号とに基づいて、最初の拡張ブロック操作コマンドのブロック番号を算出する。ブロック番号算出部245は、CPU911を用いて、算出したブロック番号を出力する。
例えば、ブロック番号算出部245は、CPU911を用いて、入力した共通開始アドレスを、入力したブロックサイズで割った商(余りは切り捨て)を算出し、算出した商と、入力した開始ブロック番号との和を算出して、ブロック番号とする。
ブロック番号記憶部246は、CPU911を用いて、ブロック番号算出部245が出力したブロック番号を入力する。ブロック番号記憶部246は、RAM914を用いて、入力したブロック番号を記憶する。
また、ブロック番号記憶部246は、CPU911を用いて、後述するブロック番号更新部248が出力したブロック番号を入力する。ブロック番号更新部248が出力したブロック番号を入力した場合、ブロック番号記憶部246は、RAM914を用いて、入力したブロック番号を、上書きして記憶する。
ブロック番号判定部247は、CPU911を用いて、ブロック番号記憶部246が記憶したブロック番号と、ブロック数取得部145が出力したブロック数と、開始ブロック番号取得部146が出力した開始ブロック番号とを入力する。ブロック番号判定部247は、CPU911を用いて、入力したブロック数と、開始ブロック番号とに基づいて、入力したブロック番号のブロックがICタグ820に存在するか否かを判定する。ブロック番号判定部247は、CPU911を用いて、入力したブロック番号のブロックがICタグ820に存在すると判定した場合、入力したブロック番号を出力する。
例えば、ブロック番号判定部247は、CPU911を用いて、入力したブロック数と、入力した開始ブロック番号との和を算出し、算出した和と、入力したブロック番号とを比較する。ブロック番号判定部247は、CPU911を用いて、算出した和が、入力したブロック番号より大きい場合、入力したブロック番号のブロックがICタグ820に存在すると判定し、算出した和が、入力したブロック番号以下である場合、入力したブロック番号のブロックがICタグ820に存在しないと判定する。
ブロック番号更新部248は、CPU911を用いて、ブロック番号判定部247が出力したブロック番号と、残りサイズ算出部244が出力した残りサイズとを入力する。ブロック番号更新部248は、CPU911を用いて、入力した残りサイズが0か否かを判定する。入力した残りサイズが0でないと判定した場合、ブロック番号更新部248は、CPU911を用いて、入力したブロック番号に1を加えて、新しいブロック番号とする。ブロック番号更新部248は、CPU911を用いて、算出したブロック番号を出力する。
拡張コマンド生成部249は、CPU911を用いて、拡張コマンド取得部143が出力した拡張コマンドと、ブロック番号判定部247が出力したブロック番号と、拡張開始アドレス算出部242が出力した拡張開始アドレスと、拡張操作サイズ算出部243が出力した拡張操作サイズとを入力する。拡張コマンド生成部249は、CPU911を用いて、入力した拡張コマンドと、ブロック番号と、拡張開始アドレスと、拡張操作サイズとに基づいて、ブロック番号と拡張開始アドレスと拡張操作サイズとを指定した拡張ブロック操作コマンドを生成する。拡張コマンド生成部249は、CPU911を用いて、生成した拡張ブロック操作コマンドを出力する。
例えば、拡張コマンド生成部249は、CPU911を用いて、生成する拡張ブロック操作コマンドが、一つの共通ブロック操作コマンドに対する最初の拡張ブロック操作コマンドか、二つ目以降の拡張ブロック操作コマンドかを判定し、最初の拡張ブロック操作コマンドであると判定した場合、入力したブロック番号をブロック番号として指定し、入力した拡張開始アドレスを拡張開始アドレスとして指定し、入力した拡張操作サイズを拡張操作サイズとして指定した拡張ブロック操作コマンドを生成する。二つ目以降の拡張ブロック操作コマンドであると判定した場合、拡張コマンド生成部249は、CPU911を用いて、入力したブロック番号をブロック番号として指定し、「0」を拡張開始アドレスとして指定し、入力した拡張操作サイズを拡張操作サイズとして指定した拡張ブロック操作コマンドを生成する。
図16は、この実施の形態における拡張コマンド変換部140がブロック操作コマンドを変換するブロック操作コマンド変換処理の流れの一例を示すフローチャート図である。
拡張コマンド変換部140は、CPU911を用いて、プロトコル判定部130が出力した共通コマンドの種別を判定する。拡張コマンド変換部140は、CPU911を用いて、判定した共通コマンドの種別に基づいて、共通コマンドの種別に対応するコマンド変換処理を実行する。ブロック操作コマンド変換処理は、プロトコル判定部130が出力した共通コマンドが、共通ブロック操作コマンドである場合に実行される。
ブロック操作コマンド変換処理は、例えば、共通操作サイズ等取得工程S641、拡張開始アドレス算出工程S642、ブロック番号算出工程S643、ブロック番号判定工程S644、拡張操作サイズ算出工程S645、拡張コマンド生成工程S646、残りサイズ算出工程S647、ブロック番号更新工程S648を有する。
共通操作サイズ等取得工程S641において、共通操作サイズ取得部141は、CPU911を用いて、プロトコル判定部130が出力した共通ブロック操作コマンドにおいて指定された共通操作サイズを取得する。共通開始アドレス取得部142は、CPU911を用いて、プロトコル判定部130が出力した共通ブロック操作コマンドにおいて指定された共通開始アドレスを取得する。拡張コマンド取得部143は、CPU911を用いて、プロトコル判定部130が出力した拡張コマンド523を入力する。ブロックサイズ取得部144は、CPU911を用いて、プロトコル判定部130が出力したブロックサイズ524を入力する。ブロック数取得部145は、CPU911を用いて、プロトコル判定部130が出力したブロック数525を入力する。開始ブロック番号取得部146は、CPU911を用いて、プロトコル判定部130が出力した開始ブロック番号526を入力する。残りサイズ記憶部241は、RAM914を用いて、共通操作サイズ取得部141が取得した共通操作サイズを記憶する。
拡張開始アドレス算出工程S642において、拡張開始アドレス算出部242は、CPU911を用いて、共通操作サイズ等取得工程S641で共通開始アドレス取得部142が取得した共通開始アドレスと、ブロックサイズ取得部144が入力したブロックサイズとに基づいて、最初のブロックの拡張開始アドレスを算出する。
ブロック番号算出工程S643において、ブロック番号算出部245は、CPU911を用いて、共通操作サイズ等取得工程S641で共通開始アドレス取得部142が取得した共通開始アドレスと、ブロックサイズ取得部144が入力したブロックサイズと、開始ブロック番号取得部146が入力した開始ブロック番号とに基づいて、最初のブロックのブロック番号を算出する。ブロック番号記憶部246は、RAM914を用いて、ブロック番号算出部245が算出したブロック番号を記憶する。
ブロック番号判定工程S644において、ブロック番号判定部247は、CPU911を用いて、共通操作サイズ等取得工程S641でブロック数取得部145が入力したブロック数と、開始ブロック番号取得部146が入力した開始ブロック番号とに基づいて、ブロック番号記憶部246が記憶したブロック番号のブロックが、ICタグ820に存在するか否かを判定する。
ブロック番号記憶部246が記憶したブロック番号のブロックがICタグ820に存在するとブロック番号判定部247が判定した場合、拡張コマンド変換部140は、CPU911を用いて、拡張操作サイズ算出工程S645へ進む。
ブロック番号記憶部246が記憶したブロック番号のブロックがICタグ820に存在しないとブロック番号判定部247が判定した場合、拡張コマンド変換部140は、ブロック操作コマンド変換処理を終了する。
拡張操作サイズ算出工程S645において、拡張操作サイズ算出部243は、CPU911を用いて、共通操作サイズ等取得工程S641でブロックサイズ取得部144が入力したブロックサイズと、拡張開始アドレス算出工程S642で拡張開始アドレス算出部242が算出した拡張開始アドレスと、残りサイズ記憶部241が記憶した残りサイズとに基づいて、拡張操作サイズを算出する。
拡張コマンド生成工程S646において、拡張コマンド生成部249は、CPU911を用いて、共通操作サイズ等取得工程S641で拡張コマンド取得部143が入力した拡張コマンドと、ブロック番号記憶部246が記憶したブロック番号と、拡張開始アドレス算出工程S642で拡張開始アドレス算出部242が算出した拡張開始アドレスと、拡張操作サイズ算出工程S645で拡張操作サイズ算出部243が算出した拡張操作サイズとに基づいて、拡張ブロック操作コマンドを生成する。
残りサイズ算出工程S647において、残りサイズ算出部244は、CPU911を用いて、残りサイズ記憶部241が記憶した残りサイズと、拡張操作サイズ算出工程S645で拡張操作サイズ算出部243が算出した拡張操作サイズとに基づいて、新しい残りサイズを算出する。残りサイズ記憶部241は、RAM914を用いて、残りサイズ算出部244が算出した新しい残りサイズを記憶する。
残りサイズ算出部244が算出した残りサイズが「0」より大きい場合、拡張コマンド変換部140は、CPU911を用いて、ブロック番号更新工程S648へ進む。
残りサイズ算出部244が算出した残りサイズが「0」と等しい場合、拡張コマンド変換部140は、CPU911を用いて、ブロック操作コマンド変換処理を終了する。
ブロック番号更新工程S648において、ブロック番号更新部248は、CPU911を用いて、ブロック番号記憶部246が記憶したブロック番号に1を加えて、ブロック番号を更新する。ブロック番号記憶部246は、RAM914を用いて、更新されたブロック番号を記憶する。
その後、拡張コマンド変換部140は、CPU911を用いて、ブロック番号判定工程S644に戻る。
図17は、この実施の形態における拡張コマンド変換部140が変換する共通ブロック操作コマンドと拡張ブロック操作コマンドとの関係、及び、応答変換部150が変換する応答データと変換データとの関係の具体例を示す図である。
この例では、共通ブロック操作コマンドとして、共通開始アドレス「1500」番地から共通操作サイズ「500」バイトのデータを読み出すことを指示する共通コマンド「ブロック読み出し’ 1500,500」を、共通コマンド取得部161が取得したものとする。
TIDが「TID」のICタグ820は、拡張ブロック操作コマンドとして、ブロック番号と、拡張開始アドレスと、拡張操作サイズとを指定して、指定したブロック番号が示す記憶領域のうち、拡張開始アドレスと拡張操作サイズとが示す記憶領域が記憶した複数のデータをまとめて読み出すことを指示する「ブロック読み出しD1」を理解するものとする。また、TIDが「TID」のICタグ820は、ブロック番号のみを指定して、指定したブロック番号が示す記憶領域が記憶したすべてのデータをまとめて読み出すことを指示する「ブロック読み出しD2」を理解するものとする。なお、メーカーDのICタグ820におけるブロックサイズは256バイト、ブロック数は16、開始ブロック番号は0であるものとする。
TIDが「TID」のICタグ820も同様に、ブロック番号と、拡張開始アドレスと拡張操作サイズを指定して、複数のデータをまとめて読み出す「ブロック読み出しE1」を理解するものとする。なお、メーカーEのICタグ820におけるブロックサイズは1024バイト、ブロック数は8、開始ブロック番号は0であるものとする。
識別受信部181が受信したTIDからプロトコル判定部130が判定したプロトコルが、例えば「TID」である場合、共通操作サイズ取得部141は、CPU911を用いて、共通操作サイズ「500」を取得し、共通開始アドレス取得部142は、CPU911を用いて、共通開始アドレス「1500」を取得し、拡張コマンド取得部143は、CPU911を用いて、拡張ブロック操作コマンド「ブロック読み出しD1」及び「ブロック読み出しD2」を入力し、ブロックサイズ取得部144は、CPU911を用いて、ブロックサイズ「256」を入力し、ブロック数取得部145は、CPU911を用いて、ブロック数「16」を入力し、開始ブロック番号取得部146は、CPU911を用いて、開始ブロック番号「0」を入力する。残りサイズ記憶部241は、RAM914を用いて、共通操作サイズ「500」を、残りサイズとして記憶する。
拡張開始アドレス算出部242は、CPU911を用いて、共通開始アドレス「1500」をブロックサイズ「256」で割った余り「220」を、拡張開始アドレスとする。ブロック番号算出部245は、CPU911を用いて、共通開始アドレス「1500」をブロックサイズ「256」で割った商「5」と開始ブロック番号「0」との和「5」を、ブロック番号とする。ブロック番号判定部247は、CPU911を用いて、ブロック数「16」と開始ブロック番号「0」との和「16」が、ブロック番号「5」より大きいので、そのブロックがICタグ820に存在すると判定する。
拡張操作サイズ算出部243は、CPU911を用いて、ブロックサイズ「256」から拡張開始アドレス「220」を差し引いた差「36」と、残りサイズ「500」とを比較し、小さいほうの「36」を、拡張操作サイズとする。
拡張コマンド生成部249は、CPU911を用いて、ブロック番号「5」と、拡張開始アドレス「220」と、拡張操作サイズ「36」とに基づいて、拡張ブロック操作コマンド「ブロック読み出しD1 #5,220,36」を生成し、出力する。
残りサイズ算出部244は、CPU911を用いて、残りサイズ「500」から拡張操作サイズ「36」を差し引いた差「464」を算出し、残りサイズ記憶部241が、残りサイズとして記憶する。
残りサイズ「464」が「0」より大きいので、ブロック番号更新部248は、CPU911を用いて、ブロック番号「5」に「1」を加えて「6」とし、ブロック番号記憶部246が、ブロック番号として記憶する。
ブロック番号判定部247は、CPU911を用いて、ブロック番号「6」のブロックがICタグ820に存在すると判定する。拡張操作サイズ算出部243は、CPU911を用いて、ブロックサイズ「256」と残りサイズ「464」とを比較して、小さいほうの「256」を拡張操作サイズとする。
拡張コマンド生成部249は、CPU911を用いて、ブロック番号「6」と、拡張操作サイズ「256」とに基づいて、拡張ブロック操作コマンド「ブロック読み出しD2 #6」を生成し、出力する。なお、この例において、拡張コマンド生成部249は、拡張ブロック操作コマンド「ブロック読み出しD1 #6,0,256」を生成する構成であってもよいが、1つのブロックのデータを全部読み出すため、より効率のよい「ブロック読み出しD2 #6」を選択して、生成する。
残りサイズ算出部244は、CPU911を用いて、残りサイズ「464」から拡張操作サイズ「256」を差し引いた差「208」を算出し、残りサイズ記憶部241が、残りサイズとして記憶する。
残りサイズ「208」が「0」より大きいので、ブロック番号更新部248は、CPU911を用いて、ブロック番号「6」に「1」を加えて「7」とし、ブロック番号記憶部246が、ブロック番号として記憶する。
ブロック番号判定部247は、CPU911を用いて、ブロック番号「7」のブロックがICタグ820に存在すると判定する。拡張操作サイズ算出部243は、CPU911を用いて、ブロックサイズ「256」と残りサイズ「208」とを比較して、小さいほうの「208」を拡張操作サイズとする。
拡張コマンド生成部249は、CPU911を用いて、ブロック番号「7」と、拡張操作サイズ「208」とに基づいて、拡張ブロック操作コマンド「ブロック読み出しD1 #7,0,208」を生成し、出力する。
残りサイズ算出部244は、CPU911を用いて、残りサイズ「208」から拡張操作サイズ「208」を差し引いた差「0」を算出し、残りサイズ記憶部241が、残りサイズとして記憶する。
残りサイズが「0」なので、拡張コマンド変換部140は、ブロック操作コマンド変換処理を終了する。
拡張コマンド変換部140が生成した三つの拡張ブロック操作コマンドを、コマンド送信部172がICタグ820に対して送信し、ICタグ820が、それぞれの拡張ブロック操作コマンドに対する応答データを送信する。ICタグ820が送信した三つの応答データを、応答受信部182が受信し、応答変換部150が入力する。
例えば、応答変換部150は、CPU911を用いて、入力した三つの応答データを結合して変換前データとし、データ形式を整えて、一つの変換データを生成する。応答通知部162は、通信装置915を用いて、応答変換部150が生成した変換データを、共通コマンド取得部161が取得した共通ブロック操作コマンド「ブロック読み出し’ 1500,500」に対する応答として、PC810に対して通知する。
識別受信部181が受信したTIDからプロトコル判定部130が判定したプロトコルが、例えば「TID」である場合、共通操作サイズ取得部141は、CPU911を用いて、共通操作サイズ「500」を取得し、共通開始アドレス取得部142は、CPU911を用いて、共通開始アドレス「1500」を取得し、拡張コマンド取得部143は、CPU911を用いて、拡張ブロック操作コマンド「ブロック読み出しE1」を入力し、ブロックサイズ取得部144は、CPU911を用いて、ブロックサイズ「1024」を入力し、ブロック数取得部145は、CPU911を用いて、ブロック数「8」を入力し、開始ブロック番号取得部146は、CPU911を用いて、開始ブロック番号「0」を入力する。残りサイズ記憶部241は、RAM914を用いて、共通操作サイズ「500」を、残りサイズとして記憶する。
拡張開始アドレス算出部242は、CPU911を用いて、共通開始アドレス「1500」をブロックサイズ「1024」で割った余り「476」を、拡張開始アドレスとする。ブロック番号算出部245は、CPU911を用いて、共通開始アドレス「1500」をブロックサイズ「1024」で割った商「1」と開始ブロック番号「0」との和「1」を、ブロック番号とする。ブロック番号判定部247は、CPU911を用いて、ブロック数「8」と開始ブロック番号「0」との和「8」が、ブロック番号「1」より大きいので、そのブロックがICタグ820に存在すると判定する。
拡張操作サイズ算出部243は、CPU911を用いて、ブロックサイズ「1024」から拡張開始アドレス「476」を差し引いた差「548」と、残りサイズ「500」とを比較し、小さいほうの「500」を、拡張操作サイズとする。
拡張コマンド生成部249は、CPU911を用いて、ブロック番号「1」と、拡張開始アドレス「476」と、拡張操作サイズ「500」とに基づいて、拡張ブロック操作コマンド「ブロック読み出しE1 #1,476,500」を生成し、出力する。
残りサイズ算出部244は、CPU911を用いて、残りサイズ「500」から拡張操作サイズ「500」を差し引いた差「0」を算出し、残りサイズ記憶部241が、残りサイズとして記憶する。
残りサイズが「0」なので、拡張コマンド変換部140は、ブロック操作コマンド変換処理を終了する。
拡張コマンド変換部140が生成した拡張ブロック操作コマンドを、コマンド送信部172がICタグ820に対して送信し、ICタグ820が、それぞれの拡張ブロック操作コマンドに対する応答データを送信する。ICタグ820が送信した応答データを、応答受信部182が受信し、応答変換部150が入力する。
例えば、応答変換部150は、CPU911を用いて、入力した応答データを変換前データとし、データ形式を整えて、変換データを生成する。応答通知部162は、通信装置915を用いて、応答変換部150が生成した変換データを、共通コマンド取得部161が取得した共通ブロック操作コマンド「ブロック読み出し’ 1500,500」に対する応答として、PC810に対して通知する。
ICタグ820は、記憶領域を複数のブロックに分けて管理しているので、ICタグ820が、複数の操作対象データをまとめて操作するブロック操作コマンドを理解する場合であっても、ブロックの境界を跨ぐ領域をまとめて操作することはできない場合がある。
また、ICタグ820の種別(メーカーや型式)によって、ブロックサイズが異なる場合がある。
この実施の形態におけるRFIDリーダライタ装置100は、取得した共通コマンドが共通ブロック操作コマンドである場合、ICタグ820のTIDに基づいてICタグ820のブロックサイズを求め、操作対象データの記憶領域がブロック境界を跨ぐ場合、一つの共通ブロック操作コマンドを複数の拡張ブロック操作コマンドに変換する。変換された拡張ブロック操作コマンドは、ブロック境界を跨がない記憶領域のデータを操作する。
したがって、ICタグ820のブロックサイズにかかわらず、一つの共通ブロック操作コマンドで、複数の操作対象データをまとめて操作することができる。
この実施の形態におけるデータ操作装置(RFIDリーダライタ装置100)において、上記拡張コマンド変換部140は、上記処理装置(CPU911)を用いて、上記共通コマンド取得部161が取得した共通コマンドが上記共通ブロック操作コマンドであると判定した場合に、上記共通コマンド取得部161が取得した共通コマンドから、まとめて操作する対象となる複数の操作対象データを指示する操作指示データ(共通開始アドレス、共通操作サイズ)を取得し、上記コマンド群判定部(プロトコル判定部130)が判定した拡張コマンド群(プロトコル)について上記プロトコル記憶部120が記憶したブロックサイズ524に基づいて、取得した操作指示データにより指示された複数の操作対象データを、上記操作対象データを含む操作ブロックごとに分割し、分割した操作ブロックごとの操作対象データのそれぞれについて、上記操作対象データを操作する拡張コマンド(拡張ブロック操作コマンド)を生成する。
この実施の形態におけるデータ操作装置(RFIDリーダライタ装置100)によれば、異なるブロックサイズを有する記憶装置(ICタグ820)が混在する場合であっても、そのことを制御装置(PC810)の側で意識する必要がなく、同じ共通ブロック操作コマンドで、異なるブロックサイズを有する記憶装置が記憶したデータを複数まとめて操作することができる。
以上説明したRFIDリーダライタ装置100は、ICタグ820(記憶装置)のユーザメモリ(記憶領域)のブロック境界をまたいでアクセスするとエラーが発生して正しく処理ができない場合、ブロックの境界をまたぐようなアクセスを指示するユーザコマンド(共通コマンド)を、ブロックの境界で分割して複数回に分割してアクセスする拡張コマンドに変換する。プロトコルテーブル(プロトコル記憶部120)がブロックサイズ524を持つことにより、ブロックサイズが一様でないICタグ820へアクセスをしても、拡張コマンド変換部140が、適切にエアコマンドを分割するので、ブロックをまたがないように通信することができる。これにより、ユーザは、ブロックサイズを意識しなくてもICタグ820にアクセスすることができる。
実施の形態5.
実施の形態5について、図18〜図21を用いて説明する。
なお、実施の形態4で説明したICタグ読取システム800と共通する部分については、同一の符号を付し、説明を省略する。
この実施の形態では、ICタグ820との通信に失敗した場合に、自動的にリトライをする構成のRFIDリーダライタ装置100について説明する。
図18は、この実施の形態における拡張コマンド変換部140及び応答変換部150の詳細ブロックの構成の一例を示すブロック構成図である。
なお、この図には、リトライに関係する部分のみを示している。
応答変換部150は、通信成否判定部151、変換データ生成部152を有する。
通信成否判定部151は、CPU911を用いて、応答受信部182が出力した応答データを入力する。通信成否判定部151は、CPU911を用いて、入力した応答データに基づいて、ICタグ820との通信が成功したか失敗したかを判定する。通信成否判定部151は、CPU911を用いて、判定した判定結果を出力する。
例えば、コマンド送信部172が送信した拡張コマンドが、ブロック読み出しコマンドである場合、通信成否判定部151は、CPU911を用いて、入力した応答データに付加された誤り検出符号や誤り訂正符号を検査して、応答受信部182が正しく応答データを受信したか否かを判定する。あるいは、コマンド送信部172が送信した拡張コマンドが、ブロック書き込みコマンドである場合、ICタグ820に書き込むデータをICタグ820が正しく受信したか否かを表わす情報を含む応答データを、ICタグ820が送信するので、通信成否判定部151は、これを解析することにより、ICタグ820が正しくデータを受信したか否かを判定する。
変換データ生成部152は、CPU911を用いて、通信成否判定部151が出力した判定結果を入力する。変換データ生成部152は、CPU911を用いて、入力した判定結果に基づいて、ICタグ820との通信に成功したと通信成否判定部151が判定した場合、応答受信部182が出力した応答データを入力する。変換データ生成部152は、CPU911を用いて、入力した応答データを変換して、変換データを生成する。変換データ生成部152は、CPU911を用いて、生成した変換データを出力する。
拡張コマンド変換部140は、実施の形態4で説明したブロックに加えて、更に、拡張操作サイズ分割部251、分割開始アドレス算出部252を有する。
拡張操作サイズ分割部251は、CPU911を用いて、通信成否判定部151が出力した判定結果を入力する。拡張操作サイズ分割部251は、CPU911を用いて、入力した判定結果に基づいて、ICタグ820との通信が失敗したと通信成否判定部151が判定した場合、拡張コマンド生成部249が出力した拡張コマンドで指定された拡張操作サイズを入力する。拡張操作サイズ分割部251は、CPU911を用いて、入力した拡張操作サイズと、所定の最低サイズ(例えば8バイト)とを比較する。拡張操作サイズ分割部251は、CPU911を用いて、入力した拡張操作サイズのほうが、所定の最低サイズよりも大きいと判定した場合、入力した拡張操作サイズを所定の数(例えば2)(以下「分割数」と呼ぶ。)に分割する。
例えば、分割数が2の場合、拡張操作サイズ分割部251は、CPU911を用いて、入力した拡張操作サイズを2で割って、二つに分割した分割操作サイズを算出する。分割操作サイズは、整数であって、合計すると、入力した拡張操作サイズと等しくなるようにする。また、メモリアクセスの効率性を考慮して、拡張操作サイズ分割部251は、CPU911を用いて、分割した記憶領域がワード境界と一致するよう、分割操作サイズを算出する構成としてもよい。
また、拡張操作サイズ分割部251は、CPU911を用いて、入力した操作サイズが所定の最低サイズ以下であると判定した場合、入力した拡張操作サイズをそのまま分割操作サイズとして出力する。したがって、その場合の分割数は「1」となる。
分割開始アドレス算出部252は、CPU911を用いて、拡張操作サイズ分割部251が出力した分割操作サイズと、拡張コマンド生成部249が出力した拡張コマンドで指定された拡張開始アドレスとを入力する。分割開始アドレス算出部252は、CPU911を用いて、入力した分割操作サイズに基づいて、分割した拡張コマンドそれぞれについての拡張開始アドレス(以下「分割開始アドレス」と呼ぶ。)を算出する。分割開始アドレス算出部252は、CPU911を用いて、算出した分割開始アドレスを出力する。
分割開始アドレス算出部252は、CPU911を用いて、分割数と同じ数の分割開始アドレスを算出する。例えば、分割数が2の場合、分割開始アドレス算出部252は、CPU911を用いて、二つの分割開始アドレスを算出する。分割開始アドレス算出部252は、CPU911を用いて、入力した拡張開始アドレスを、そのまま第一の分割開始アドレスとする。分割開始アドレス算出部252は、CPU911を用いて、第一の分割開始アドレスに、入力した二つの分割操作サイズのうち、第一の分割操作サイズを加えて、第二の分割開始アドレスとする。
拡張コマンド生成部249は、CPU911を用いて、拡張操作サイズ分割部251が出力した分割操作サイズと、分割開始アドレス算出部252が出力した分割開始アドレスとを入力する。拡張コマンド生成部249は、CPU911を用いて、入力した分割操作サイズと分割開始アドレスとに基づいて、入力した分割開始アドレスを拡張開始アドレスとして指定し、入力した分割操作サイズを拡張操作サイズとして指定した拡張コマンドを生成する。なお、ブロック番号は、通信に失敗した前回の拡張コマンドと同じブロック番号を指定する。拡張コマンド生成部249は、生成した拡張コマンドを出力する。
拡張コマンド生成部249は、CPU911を用いて、分割数と同じ数の拡張コマンドを生成する。例えば、分割数が2の場合、拡張コマンド生成部249は、CPU911を用いて、二つの拡張コマンドを生成する。拡張コマンド生成部249は、CPU911を用いて、第一の分割開始アドレスを拡張開始アドレスとして指定し、第一の分割操作サイズを拡張操作サイズとして指定した第一の拡張コマンドと、第二の分割開始アドレスを拡張開始アドレスとして指定し、第二の分割操作サイズを拡張操作サイズとして指定した第二の拡張コマンドとを生成する。
コマンド送信部172は、CPU911を用いて、拡張コマンド生成部249が生成した拡張コマンドを入力する。コマンド送信部172は、送信装置917を用いて、入力した拡張コマンドを、ICタグ820に対して送信する。
図19は、この実施の形態における拡張コマンド変換部140がブロック操作コマンドを変換するブロック操作コマンド変換処理の流れの一例を示すフローチャート図である。
ブロック操作コマンド変換処理は、実施の形態4で説明した工程に加えて、更に、通信成否判定工程S651、リトライ処理S650を有する。
通信成否判定工程S651において、通信成否判定部151は、CPU911を用いて、拡張コマンド生成工程S646で拡張コマンド生成部249が生成した拡張コマンドに対する応答として、ICタグ820が送信した応答データに基づいて、ICタグ820との通信が成功したか失敗したかを判定する。
ICタグ820との通信が成功したと通信成否判定部151が判定した場合、拡張コマンド変換部140は、残りサイズ算出工程S647へ進む。
ICタグ820との通信が失敗したと通信成否判定部151が判定した場合、拡張コマンド変換部140は、リトライ処理S650へ進む。
図20は、この実施の形態における拡張コマンド変換部140がリトライをするリトライ処理S650の流れの一例を示すフローチャート図である。
リトライ処理S650は、分割操作サイズ算出工程S652、分割開始アドレス算出工程S653、分割繰り返し工程S654、拡張コマンド生成工程S655、通信成否判定工程S656、リトライ処理S660、分割繰り返し判定工程S657を有する。
分割操作サイズ算出工程S652において、拡張操作サイズ分割部251は、CPU911を用いて、拡張コマンド生成部249が生成した拡張コマンドで指定された拡張操作サイズに基づいて、分割数と等しい数の分割操作サイズを算出する。
分割開始アドレス算出工程S653において、分割開始アドレス算出部252は、CPU911を用いて、分割操作サイズ算出工程S652で拡張操作サイズ分割部251が算出した分割操作サイズと、拡張コマンド生成部249が生成した拡張コマンドで指定された拡張開始アドレスとに基づいて、分割数と等しい数の分割開始アドレスを算出する。
分割繰り返し工程S654において、拡張コマンド変換部140は、CPU911を用いて、拡張コマンド生成工程S655〜分割繰り返し判定工程S657を分割数と等しい回数繰り返す。
拡張コマンド生成工程S655において、拡張コマンド生成部249は、CPU911を用いて、ブロック番号記憶部246が記憶したブロック番号をブロック番号として指定し、分割開始アドレス算出工程S653で分割開始アドレス算出部252が算出した分割開始アドレスを拡張開始アドレスとして指定し、分割操作サイズ算出工程S652で拡張操作サイズ分割部251が算出した分割操作サイズを拡張操作サイズとして指定した拡張コマンドを生成し、出力する。
拡張コマンド生成部249が生成した拡張コマンドは、コマンド送信部172が、送信装置917を用いて、ICタグ820に対して送信する。ICタグ820は、これに対する応答データを送信し、応答受信部182が受信する。
通信成否判定工程S656において、通信成否判定部151は、CPU911を用いて、応答受信部182が受信した応答データに基づいて、ICタグ820との通信が成功したか失敗したかを判定する。
ICタグ820との通信が成功したと通信成否判定部151が判定した場合、拡張コマンド変換部140は、CPU911を用いて、分割繰り返し判定工程S657へ進む。
ICタグ820との通信が失敗したと通信成否判定部151が判定した場合、拡張コマンド変換部140は、CPU911を用いて、リトライ処理S660へ進む。
リトライ処理S660は、リトライ処理S650と同じ処理であって、再帰的に実行される。リトライ処理S660において、拡張コマンド変換部140は、拡張コマンド生成工程S655で生成した拡張コマンドを更に分割する。このように、ICタグ820との通信が成功するまで、操作対象データのサイズを小さくしていく。送受信するデータのサイズを小さくすることにより、通信環境が悪くても、ICタグ820との通信が成功する確率を高くすることができる。
分割繰り返し判定工程S657において、拡張コマンド変換部140は、CPU911を用いて、拡張コマンド生成工程S655〜分割繰り返し判定工程S657の処理を分割数と同じ回数繰り返したか否かを判定する。
まだ繰り返し回数が足りないと判定した場合、拡張コマンド変換部140は、CPU911を用いて、拡張コマンド生成工程S655からの処理を繰り返す。
分割数と同じ回数繰り返したと判定した場合、拡張コマンド変換部140は、CPU911を用いて、リトライ処理を終了する。
なお、あらかじめリトライ処理を再帰的に実行する深さの上限を設定しておき、拡張コマンド変換部140は、リトライ処理S660の前に、CPU911を用いて、実行の深さが上限を超えたか否かを判定し、実行の深さが上限を超えた場合、リトライを断念して通信エラーとして処理する構成としてもよい。
図21は、この実施の形態における拡張コマンド変換部140が変換する共通ブロック操作コマンドと拡張ブロック操作コマンドとの関係、及び、応答変換部150が変換する応答データと変換データとの関係の具体例を示す図である。
ここでは、実施の形態4で説明した例において、拡張コマンド変換部140が生成した二つ目の拡張コマンド「ブロック読み出しD2 #6」のときに、ICタグ820との通信に失敗した場合について説明する。
通信成否判定部151は、CPU911を用いて、応答受信部182が受信した応答データに基づいて、ICタグ820との通信に失敗したと判定する。拡張操作サイズ分割部251は、CPU911を用いて、拡張コマンド「ブロック読み出しD2 #6」の拡張操作サイズ「256」を「2」で割って、二つの分割操作サイズ「128」「128」を算出する。分割開始アドレス算出部252は、CPU911を用いて、拡張コマンド「ブロック読み出しD2 #6」の拡張開始アドレス「0」を、第一の分割開始アドレスとし、それに、拡張操作サイズ分割部251が算出した第一の分割操作サイズ「128」を加えて、第二の分割開始アドレス「128」を算出する。
拡張コマンド変換部140は、CPU911を用いて、拡張コマンド「ブロック読み出しD2 #6」のブロック番号「6」をブロック番号として指定し、分割開始アドレス算出部252が算出した第一の分割開始アドレス「0」を拡張開始アドレスとして指定し、拡張操作サイズ分割部251が算出した第一の分割操作サイズを拡張操作サイズとして指定した拡張コマンド「ブロック読み出しD1 #6,0,128」を生成し、出力する。
コマンド送信部172は、送信装置917を用いて、拡張コマンド変換部140が生成した拡張コマンド「ブロック読み出しD1 #6,0,128」を、ICタグ820に対して送信し、ICタグ820が受信する。ICタグ820は、これに対する応答データを送信し、応答受信部182が、受信装置918を用いて、受信する。ここでは、ICタグ820との通信に成功したものとする。
通信成否判定部151は、CPU911を用いて、応答受信部182が受信した応答データに基づいて、ICタグ820との通信に成功したと判定する。
拡張コマンド変換部140は、CPU911を用いて、拡張コマンド「ブロック読み出しD2 #6」のブロック番号「6」をブロック番号として指定し、分割開始アドレス算出部252が算出した第二の分割開始アドレス「128」を拡張開始アドレスとして指定し、拡張操作サイズ分割部251が算出した第二の分割操作サイズを拡張操作サイズとして指定した拡張コマンド「ブロック読み出しD1 #6,128,128」を生成し、出力する。
コマンド送信部172は、送信装置917を用いて、拡張コマンド変換部140が生成した拡張コマンド「ブロック読み出しD1 #6,128,128」を、ICタグ820に対して送信し、ICタグ820が受信する。ICタグ820は、これに対する応答データを送信し、応答受信部182が、受信装置918を用いて、受信する。
このように、ICタグ820との通信に失敗した場合に、送受信するデータのサイズを小さくすることにより、通信が成功する確率を上げるとともに、通信に成功した部分については再送の必要がなくなるので、全体として、ICタグ820との通信にかかる時間を短縮することができる。
この実施の形態におけるデータ操作装置(RFIDリーダライタ装置100)は、更に、通信成否判定部151を有する。
上記通信成否判定部151は、上記処理装置(CPU911)を用いて、上記応答受信部182が受信した応答データに基づいて、上記記憶装置(ICタグ820)との通信が成功したか失敗したかを判定する。
上記拡張コマンド変換部140は、上記処理装置(CPU911)を用いて、上記記憶装置(ICタグ820)との通信が失敗したと上記通信成否判定部151が判定した場合に、上記共通コマンドを、変換した拡張コマンドよりも一回の通信で送受信するデータ長が短い拡張コマンドに再変換する。
上記拡張コマンド送信部172は、上記送信装置917を用いて、上記記憶装置(ICタグ820)に対して、上記拡張コマンド変換部140が再変換した拡張コマンドを送信する。
この実施の形態におけるデータ操作装置(RFIDリーダライタ装置100)によれば、記憶装置(ICタグ820)との通信に失敗した場合に、拡張コマンド変換部140が、送受信するデータ長が短い拡張コマンドに再変換するので、通信が成功する確率を高くすることができる。
この実施の形態におけるデータ操作装置(RFIDリーダライタ装置100)は、更に、通信成否判定部151を有する。
上記通信成否判定部151は、上記処理装置(CPU911)を用いて、上記拡張コマンド変換部140が変換した一以上の拡張コマンドのそれぞれについて、上記応答受信部182が受信した応答データに基づいて、上記記憶装置(ICタグ820)との通信が成功したか失敗したかを判定する。
上記拡張コマンド変換部140は、上記処理装置(CPU911)を用いて、上記拡張コマンド変換部140が変換した一以上の拡張コマンドのいずれかについて、上記記憶装置(ICタグ820)との通信が失敗したと上記通信成否判定部151が判定した場合に、上記記憶装置(ICタグ820)との通信が失敗したと上記通信成否判定部151が判定した拡張コマンドについて、操作する操作対象データを複数に分割し、分割した操作対象データのそれぞれについて、拡張コマンドを生成することにより、通信に失敗した拡張コマンドを、複数の拡張コマンドに変換する。
上記拡張コマンド送信部172は、上記送信装置917を用いて、上記記憶装置(ICタグ820)に対して、上記拡張コマンド変換部140が変換した複数の拡張コマンドを送信する。
この実施の形態におけるデータ操作装置(RFIDリーダライタ装置100)によれば、複数のデータをまとめて操作する拡張コマンドにおいて、ICタグ820との通信に失敗した場合に、拡張コマンド変換部140が、操作対象データを分割した複数の拡張コマンドに変換するので、通信の成功率を高くすることができる。
以上説明したRFIDリーダライタ装置100は、タグの種類によって通信性能が異なるなどの原因により、ICタグ820との通信がうまくいかない場合、リトライをして救うことができる。通信するデータ長が長いと効率がいい反面、失敗する確率も上がるため、リトライするごとにデータ長を短くすることで効率と成功率のバランスを取ることができる。リトライ回数が増えるたびに転送サイズ(拡張操作サイズ)をだんだんと小さくする。拡張コマンド変換部140は、ブロックサイズを使って、転送サイズを決める。通信が成功した場合は、ブロックサイズで通信をするので、通信の効率を高くすることができる。通信が失敗した場合は、データ長を短くする(たとえば半分にする)ことで通信の成功率を高くする。
実施の形態1におけるICタグ読取システム800の全体構成の一例を示すシステム構成図。 実施の形態1におけるRFIDリーダライタ装置100のハードウェア構成の一例を示すハードウェア構成図。 実施の形態1におけるRFIDリーダライタ装置100の機能ブロックの構成の一例を示すブロック構成図。 実施の形態1における共通コマンドと各メーカー独自の拡張コマンドとにおけるブロック操作コマンドのブロック番号の対応の一例を示す図。 実施の形態1におけるプロトコル記憶部120が記憶したプロトコルテーブル520の一例を示す図。 実施の形態1における拡張コマンド変換部140が、ブロック読み出しコマンドを変換するブロック読み出しコマンド変換処理の流れの一例を示すフローチャート図。 実施の形態1における共通コマンド取得部161が取得する共通コマンドと、拡張コマンド変換部140が変換する拡張コマンドとの関係の具体例を示す図。 実施の形態1における拡張コマンド変換部140が、ブロック書き込みコマンドを変換するブロック書き込みコマンド変換処理の流れの一例を示すフローチャート図。 実施の形態1における共通コマンド取得部161が取得する共通コマンドと、拡張コマンド変換部140が変換する拡張コマンドとの関係の具体例を示す図。 実施の形態1における応答変換部150が、ブロック読み出しコマンドに対する応答を変換するブロック読み出し応答変換処理の流れの一例を示すフローチャート図。 実施の形態1における応答受信部182が受信した応答データと、応答変換部150が変換した変換データとの関係の具体例を示す図。 実施の形態2におけるRFIDリーダライタ装置100の機能ブロックの構成の一例を示すブロック構成図。 実施の形態2におけるプロトコル記憶部120の詳細ブロックの構成の一例を示すブロック構成図。 実施の形態3におけるプロトコル記憶部120の詳細ブロックの構成の一例を示すブロック構成図。 実施の形態4における拡張コマンド変換部140の詳細ブロックの構成の一例を示すブロック構成図。 実施の形態4における拡張コマンド変換部140がブロック操作コマンドを変換するブロック操作コマンド変換処理の流れの一例を示すフローチャート図。 実施の形態4における拡張コマンド変換部140が変換する共通ブロック操作コマンドと拡張ブロック操作コマンドとの関係、及び、応答変換部150が変換する応答データと変換データとの関係の具体例を示す図。 実施の形態5における拡張コマンド変換部140及び応答変換部150の詳細ブロックの構成の一例を示すブロック構成図。 実施の形態5における拡張コマンド変換部140がブロック操作コマンドを変換するブロック操作コマンド変換処理の流れの一例を示すフローチャート図。 実施の形態5における拡張コマンド変換部140がリトライをするリトライ処理S650の流れの一例を示すフローチャート図。 実施の形態5における拡張コマンド変換部140が変換する共通ブロック操作コマンドと拡張ブロック操作コマンドとの関係、及び、応答変換部150が変換する応答データと変換データとの関係の具体例を示す図。
符号の説明
100 RFIDリーダライタ装置、110 コマンド判定部、115 基本コマンド変換部、120 プロトコル記憶部、121 マスター記憶部、122,123 テーブル記憶部、124 有効フラグ記憶部、125 テーブル検索部、126 テーブル更新部、127 テーブル切替部、128 テーブル読込部、130 プロトコル判定部、140 拡張コマンド変換部、141 共通操作サイズ取得部、142 共通開始アドレス取得部、143 拡張コマンド取得部、144 ブロックサイズ取得部、145 ブロック数取得部、146 開始ブロック番号取得部、150 応答変換部、151 通信成否判定部、152 変換データ生成部、161 共通コマンド取得部、162 応答通知部、171 識別取得指示部、172 コマンド送信部、181 識別受信部、182 応答受信部、190 プロトコル更新部、241 残りサイズ記憶部、242 拡張開始アドレス算出部、243 拡張操作サイズ算出部、244 残りサイズ算出部、245 ブロック番号算出部、246 ブロック番号記憶部、247 ブロック番号判定部、248 ブロック番号更新部、249 拡張コマンド生成部、251 拡張操作サイズ分割部、252 分割開始アドレス算出部、800 ICタグ読取システム、810 PC、820 ICタグ、911 CPU、913 ROM、914 RAM、915 通信装置、917 送信装置、918 受信装置、919 アンテナ、920 フラッシュメモリ。

Claims (12)

  1. 制御装置からの指示にしたがって記憶装置と通信し、上記記憶装置が記憶したデータを操作するデータ操作装置において、
    データを処理する処理装置と、上記記憶装置に対してデータを送信する送信装置と、上記記憶装置からデータを受信する受信装置と、共通コマンド取得部と、識別取得指示部と、識別受信部と、コマンド群判定部と、拡張コマンド変換部と、拡張コマンド送信部と、応答受信部と、応答変換部と、応答通知部とを有し、
    上記共通コマンド取得部は、上記処理装置を用いて、上記制御装置からの指示を表わす共通コマンドを取得し、
    上記識別取得指示部は、上記送信装置を用いて、上記記憶装置に対して、上記記憶装置の識別情報を送信するよう指示する識別取得コマンドを送信し、
    上記識別受信部は、上記受信装置を用いて、上記識別取得指示部が送信した識別取得コマンドに対する応答として、上記記憶装置が送信した識別情報を受信し、
    上記コマンド群判定部は、上記処理装置を用いて、上記識別受信部が受信した識別情報に基づいて、複数の拡張コマンド群のなかから、上記記憶装置が理解する拡張コマンド群を判定し、
    上記拡張コマンド変換部は、上記処理装置を用いて、上記コマンド群判定部が判定した拡張コマンド群に基づいて、上記共通コマンド取得部が取得した共通コマンドを、上記記憶装置が理解する拡張コマンドに変換し、
    上記拡張コマンド送信部は、上記送信装置を用いて、上記記憶装置に対して、上記拡張コマンド変換部が変換した拡張コマンドを送信し、
    上記応答受信部は、上記受信装置を用いて、上記拡張コマンド送信部が送信した拡張コマンドに対する応答として、上記記憶装置が送信した応答データを受信し、
    上記応答変換部は、上記処理装置を用いて、上記応答受信部が受信した応答データのデータ形式を、所定の形式に変換して、変換データを生成し、
    上記応答通知部は、上記処理装置を用いて、上記共通コマンド取得部が取得した共通コマンドに対する応答として、上記応答変換部が生成した変換データを、上記制御装置に対して通知することを特徴とするデータ操作装置。
  2. 上記データ操作装置は、更に、コマンド判定部と、基本コマンド変換部とを有し、
    上記コマンド判定部は、上記処理装置を用いて、上記共通コマンド取得部が取得した共通コマンドが、上記記憶装置の種別にかかわらず理解する基本コマンドに変換可能なコマンドか否かを判定し、
    上記基本コマンド変換部は、上記共通コマンド取得部が取得した共通コマンドが上記基本コマンドに変換可能なコマンドであると、上記コマンド判定部が判定した場合に、上記処理装置を用いて、上記共通コマンド取得部が取得した共通コマンドを、上記基本コマンドに変換し、
    上記拡張コマンド送信部は、上記共通コマンド取得部が取得した共通コマンドが基本コマンドであると、上記コマンド判定部が判定した場合に、上記送信装置を用いて、上記記憶装置に対して、上記基本コマンド変換部が変換した基本コマンドを送信し、上記共通コマンド取得部が取得した共通コマンドが基本コマンドに変換可能なコマンドでないと、上記コマンド判定部が判定した場合に、上記送信装置を用いて、上記記憶装置に対して、上記拡張コマンド変換部が変換した拡張コマンドを送信することを特徴とする請求項1に記載のデータ操作装置。
  3. 上記データ操作装置は、更に、データを記憶する内部記憶装置と、プロトコル記憶部とを有し、
    上記プロトコル記憶部は、上記内部記憶装置を用いて、上記コマンド群判定部が判定する拡張コマンド群のそれぞれについて、上記記憶装置が記憶したデータを複数まとめて操作する単位である一つの操作ブロックに含まれるデータの数を表わすブロックサイズを記憶し、
    上記拡張コマンド変換部は、上記処理装置を用いて、上記共通コマンド取得部が取得した共通コマンドが、上記記憶装置が記憶したデータを複数まとめて操作するよう指示する共通ブロック操作コマンドであるか否かを判定し、上記共通コマンドが上記共通ブロック操作コマンドであると判定した場合に、上記コマンド群判定部が判定した拡張コマンド群について上記プロトコル記憶部が記憶したブロックサイズに基づいて、上記共通コマンドを拡張コマンドに変換することを特徴とする請求項1または請求項2に記載のデータ操作装置。
  4. 上記拡張コマンド変換部は、上記処理装置を用いて、上記共通コマンド取得部が取得した共通コマンドが上記共通ブロック操作コマンドであると判定した場合に、上記共通コマンド取得部が取得した共通コマンドから、まとめて操作する対象となる複数の操作対象データを指示する操作指示データを取得し、上記コマンド群判定部が判定した拡張コマンド群について上記プロトコル記憶部が記憶したブロックサイズに基づいて、取得した操作指示データにより指示された複数の操作対象データを、上記操作対象データを含む操作ブロックごとに分割し、分割した操作ブロックごとの操作対象データのそれぞれについて、上記操作対象データを操作する拡張コマンドを生成することを特徴とする請求項3に記載のデータ操作装置。
  5. 上記プロトコル記憶部は、複数のテーブル記憶部と、有効フラグ記憶部と、テーブル更新部と、テーブル切替部とを有し、
    上記複数のテーブル記憶部のそれぞれは、上記内部記憶装置を用いて、上記コマンド群判定部が判定する拡張コマンド群のそれぞれについて、上記記憶装置が理解する拡張コマンドと、上記ブロックサイズとを含むプロトコルテーブルを記憶し、
    上記有効フラグ記憶部は、上記内部記憶装置を用いて、上記複数のテーブル記憶部のうち、いずれが有効であるかを表わす有効フラグを記憶し、
    上記テーブル更新部は、上記処理装置を用いて、上記共通コマンド取得部が取得した共通コマンドが、プロトコルテーブルの更新を指示するコマンドである場合に、上記有効フラグ記憶部が記憶した有効フラグに基づいて、有効でないテーブル記憶部が記憶したプロトコルテーブルを更新し、
    上記テーブル切替部は、上記処理装置を用いて、上記有効フラグ記憶部が記憶した有効フラグを更新して、上記テーブル更新部が更新したテーブル記憶部を有効にすることを特徴とする請求項3または請求項4に記載のデータ操作装置。
  6. 上記データ操作装置は、更に、データを記憶する不揮発性の不揮発内部記憶装置を有し、
    上記プロトコル記憶部は、複数のマスター記憶部と、マスター有効フラグ記憶部と、テーブル更新部と、テーブル切替部と、テーブル記憶部とを有し、
    上記複数のマスター記憶部のそれぞれは、上記不揮発内部記憶装置を用いて、上記コマンド群判定部が判定する拡張コマンド群のそれぞれについて、上記記憶装置が理解する拡張コマンドと、上記ブロックサイズとを含むプロトコルテーブルを記憶し、
    上記マスター有効フラグ記憶部は、上記内部記憶装置を用いて、上記複数のマスター記憶部のうち、いずれが有効であるかを表わすマスター有効フラグを記憶し、
    上記テーブル更新部は、上記処理装置を用いて、上記共通コマンド取得部が取得した共通コマンドが、プロトコルテーブルの更新を指示するコマンドである場合に、上記マスター有効フラグ記憶部が記憶したマスター有効フラグに基づいて、有効でないマスター記憶部が記憶したプロトコルテーブルを更新し、
    上記テーブル切替部は、上記処理装置を用いて、上記マスター有効フラグ記憶部が記憶したマスター有効フラグを更新して、上記テーブル更新部が更新したマスター記憶部を有効にし、
    上記テーブル記憶部は、上記内部記憶装置を用いて、上記マスター有効フラグ記憶部が記憶したマスター有効フラグに基づいて、有効なマスター記憶部が記憶したプロトコルテーブルを読み込んで、記憶することを特徴とする請求項3乃至請求項5のいずれかに記載のデータ操作装置。
  7. 上記データ操作装置は、更に、通信成否判定部を有し、
    上記通信成否判定部は、上記処理装置を用いて、上記応答受信部が受信した応答データに基づいて、上記記憶装置との通信が成功したか失敗したかを判定し、
    上記拡張コマンド変換部は、上記処理装置を用いて、上記記憶装置との通信が失敗したと上記通信成否判定部が判定した場合に、上記共通コマンドを、変換した拡張コマンドよりも一回の通信で送受信するデータ長が短い拡張コマンドに再変換し、
    上記拡張コマンド送信部は、上記送信装置を用いて、上記記憶装置に対して、上記拡張コマンド変換部が再変換した拡張コマンドを送信することを特徴とする請求項1乃至請求項6のいずれかに記載のデータ操作装置。
  8. 上記データ操作装置は、更に、通信成否判定部を有し、
    上記通信成否判定部は、上記処理装置を用いて、上記拡張コマンド変換部が変換した一以上の拡張コマンドのそれぞれについて、上記応答受信部が受信した応答データに基づいて、上記記憶装置との通信が成功したか失敗したかを判定し、
    上記拡張コマンド変換部は、上記処理装置を用いて、上記拡張コマンド変換部が変換した一以上の拡張コマンドのいずれかについて、上記記憶装置との通信が失敗したと上記通信成否判定部が判定した場合に、上記記憶装置との通信が失敗したと上記通信成否判定部が判定した拡張コマンドについて、操作する操作対象データを複数に分割し、分割した操作対象データのそれぞれについて、拡張コマンドを生成することにより、通信に失敗した拡張コマンドを、複数の拡張コマンドに変換し、
    上記拡張コマンド送信部は、上記送信装置を用いて、上記記憶装置に対して、上記拡張コマンド変換部が変換した複数の拡張コマンドを送信することを特徴とする請求項4乃至請求項6のいずれかに記載のデータ操作装置。
  9. 上記拡張コマンド変換部は、上記処理装置を用いて、上記共通コマンド取得部が取得した一つの共通コマンドを一以上の拡張コマンドに変換し、
    上記応答変換部は、上記処理装置を用いて、上記拡張コマンド変換部が一つの共通コマンドを変換した一以上の拡張コマンドのそれぞれに対して上記応答受信部が受信した応答データに基づいて、一つの変換データを生成することを特徴とする請求項1乃至請求項8のいずれかに記載のデータ操作装置。
  10. 複数の記憶装置と、請求項1乃至請求項9のいずれかに記載のデータ操作装置とを有し、
    上記複数の記憶装置は、それぞれ、複数の拡張コマンド群のうちいずれかの拡張コマンド群を理解することを特徴とするデータ操作システム。
  11. データを処理する処理装置を有するコンピュータが実行することにより、上記コンピュータが、請求項1乃至請求項9のいずれかに記載のデータ操作装置として機能することを特徴とするコンピュータプログラム。
  12. データを処理する処理装置と、記憶装置に対してデータを送信する送信装置と、上記記憶装置からデータを受信する受信装置とを有するデータ操作装置が、制御装置からの指示にしたがって上記記憶装置と通信し、上記記憶装置が記憶したデータを操作するデータ操作方法において、
    上記処理装置が、上記制御装置からの指示を表わす共通コマンドを取得し、
    上記送信装置が、上記記憶装置に対して、上記記憶装置の識別情報を送信するよう指示する識別取得コマンドを送信し、
    上記受信装置が、上記送信装置が送信した識別取得コマンドに対する応答として、上記記憶装置が送信した識別情報を受信し、
    上記処理装置が、上記受信装置が受信した識別情報に基づいて、複数の拡張コマンド群のなかから、上記記憶装置が理解する拡張コマンド群を判定し、
    上記処理装置が、判定した拡張コマンド群に基づいて、取得した共通コマンドを、上記記憶装置が理解する拡張コマンドに変換し、
    上記送信装置が、上記記憶装置に対して、上記処理装置が変換した拡張コマンドを送信し、
    上記受信装置が、上記送信装置が送信した拡張コマンドに対する応答として、上記記憶装置が送信した応答データを受信し、
    上記処理装置が、上記受信装置が受信した応答データのデータ形式を、所定の形式に変換して、変換データを生成し、
    上記処理装置が、取得した共通コマンドに対する応答として、生成した変換データを、上記制御装置に対して通知することを特徴とするデータ操作方法。
JP2008278430A 2008-10-29 2008-10-29 データ操作装置及びデータ操作システム及びコンピュータプログラム及びデータ操作方法 Expired - Fee Related JP5202230B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008278430A JP5202230B2 (ja) 2008-10-29 2008-10-29 データ操作装置及びデータ操作システム及びコンピュータプログラム及びデータ操作方法
US12/435,012 US20100106873A1 (en) 2008-10-29 2009-05-04 Data operation apparatus and data operation system and computer program and data operation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008278430A JP5202230B2 (ja) 2008-10-29 2008-10-29 データ操作装置及びデータ操作システム及びコンピュータプログラム及びデータ操作方法

Publications (2)

Publication Number Publication Date
JP2010108157A JP2010108157A (ja) 2010-05-13
JP5202230B2 true JP5202230B2 (ja) 2013-06-05

Family

ID=42118582

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008278430A Expired - Fee Related JP5202230B2 (ja) 2008-10-29 2008-10-29 データ操作装置及びデータ操作システム及びコンピュータプログラム及びデータ操作方法

Country Status (2)

Country Link
US (1) US20100106873A1 (ja)
JP (1) JP5202230B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6066206B2 (ja) * 2013-12-03 2017-01-25 サミー株式会社 遊技機
CN104091259B (zh) * 2014-07-04 2017-12-19 飞天诚信科技股份有限公司 一种可解析流程代码的支付终端及其工作方法
KR102387460B1 (ko) * 2015-04-09 2022-04-15 삼성전자주식회사 데이터 저장 장치와 이의 작동 방법
KR102370733B1 (ko) * 2015-04-13 2022-03-08 에스케이하이닉스 주식회사 출력 커맨드들을 전송하는 컨트롤러 및 그것의 동작 방법
JP7367359B2 (ja) * 2018-08-10 2023-10-24 株式会社デンソー 車両用電子制御システム、ファイルの転送制御方法、ファイルの転送制御プログラム及び装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7259677B2 (en) * 2003-12-26 2007-08-21 Ricoh Company, Ltd. IC-tag read-write apparatus
US7165722B2 (en) * 2004-03-10 2007-01-23 Microsoft Corporation Method and system for communicating with identification tags
WO2006043441A1 (ja) * 2004-10-18 2006-04-27 Sharp Kabushiki Kaisha 切り離しにより機能が変化するicタグ
JP4777713B2 (ja) * 2005-07-28 2011-09-21 ルネサスエレクトロニクス株式会社 Icタグ、icタグの制御方法及びicタグシステム
JP4884741B2 (ja) * 2005-09-29 2012-02-29 株式会社キーエンス 無線タグリーダ/ライタ
JP2007094885A (ja) * 2005-09-29 2007-04-12 Keyence Corp 無線タグリーダ/ライタ及び無線タグリード/ライト方法
JP5087222B2 (ja) * 2005-12-26 2012-12-05 株式会社リコー Icタグ用リーダ及び/又はライタ、並びにそのアンテナユニット
JP2007280197A (ja) * 2006-04-10 2007-10-25 Toshiba Corp 通信媒体、通信媒体処理装置、及び通信媒体処理システム
JP4548394B2 (ja) * 2006-07-20 2010-09-22 株式会社デンソーウェーブ データ伝送装置

Also Published As

Publication number Publication date
US20100106873A1 (en) 2010-04-29
JP2010108157A (ja) 2010-05-13

Similar Documents

Publication Publication Date Title
US20060282653A1 (en) Method for updating frimware of memory card
JP5202230B2 (ja) データ操作装置及びデータ操作システム及びコンピュータプログラム及びデータ操作方法
KR101555210B1 (ko) 휴대용 단말기에서 내장 대용량 메모리를 이용한 컨텐츠 다운로드 방법 및 장치
CN110851154B (zh) 用于更新只读存储器编码的计算机实施方法、系统及介质
US12008171B2 (en) Program download method for intelligent terminal with memory card identifier and intelligent terminal with memory card identifier
CN112346668B (zh) 一种光盘信息获取方法、计算设备及可读存储介质
JP5259513B2 (ja) 携帯可能電子装置、icカードおよび携帯可能電子装置の制御方法
US10120791B2 (en) Data read apparatus, data read method, and storage medium storing data read program
CN111966287A (zh) 数据存储方法、电子设备及存储介质
CN111803917A (zh) 资源的处理方法和装置
JP6648431B2 (ja) 照合プログラム、照合方法および照合装置
CN113360161A (zh) 资源升级方法及相关产品
CN113721953B (zh) 固件程序升级方法、装置及显示控制设备
JPH1139450A (ja) Icカード
CN114020211A (zh) 存储空间管理方法、装置、设备及存储介质
CN109471598B (zh) 存储设备的数据删除方法、装置及计算机可读存储介质
CN115840682B (zh) 基于sw64指令集的bios层级采样的运维监控方法及装置
CN117687704B (zh) 显卡初始化方法、装置、设备及存储介质
CN111324384A (zh) 于预执行环境依装置消息选择开机图像文件的装置及方法
US10489335B1 (en) Apparatus and method and computer program product for accessing a memory card
JP2012133656A (ja) 携帯可能電子装置及びicカード
CN101604459A (zh) 巡更机
JP2004054421A (ja) メモリ、情報処理装置、記憶方法および情報処理方法
CN116643770A (zh) 固件分区升级方法、电子设备和存储介质
JP2014006631A (ja) Icカード、および、携帯可能電子装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110909

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20121207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121210

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130115

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130212

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160222

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees