JP5202230B2 - データ操作装置及びデータ操作システム及びコンピュータプログラム及びデータ操作方法 - Google Patents
データ操作装置及びデータ操作システム及びコンピュータプログラム及びデータ操作方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/0008—General problems related to the reading of electronic memory record carriers, independent of its reading method, e.g. power transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/10009—Methods 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/10297—Methods 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
C1G2において、ICタグは、TIDなどを記憶する通常のメモリ領域のほかに、ユーザが自由に書き込むことができるメモリ領域(ユーザメモリ)を持つことができる。近年、数キロビット〜数百キロビットのユーザメモリを有する大容量のIDタグが販売されるようになっている。C1G2では、このような大容量のユーザメモリを効率的に操作することのできるエアコマンドが用意されていないため、ICタグを製造するメーカーなどが独自にエアコマンドを拡張している。拡張されたエアコマンドは、統一されておらず、同一あるいは類似の機能を実現するものであっても、メーカーごとに異なっている。
この発明は、例えば、上記のような課題を解決するためになされたものであり、アプリケーションなどを実行する制御装置からの指示にしたがって、ICタグなどの記憶装置に対してコマンドを送信することにより、記憶装置が記憶したデータを操作するデータ操作装置において、理解するコマンドが異なる複数種類の記憶装置が混在した状況であっても、制御装置の側ではそのことを意識せずに、データを操作できるようにすることを目的とする。
制御装置からの指示にしたがって記憶装置と通信し、上記記憶装置が記憶したデータを操作するデータ操作装置において、
データを処理する処理装置と、上記記憶装置に対してデータを送信する送信装置と、上記記憶装置からデータを受信する受信装置と、共通コマンド取得部と、識別取得指示部と、識別受信部と、コマンド群判定部と、拡張コマンド変換部と、拡張コマンド送信部と、応答受信部と、応答変換部と、応答通知部とを有し、
上記共通コマンド取得部は、上記処理装置を用いて、上記制御装置からの指示を表わす共通コマンドを取得し、
上記識別取得指示部は、上記送信装置を用いて、上記記憶装置に対して、上記記憶装置の識別情報を送信するよう指示する識別取得コマンドを送信し、
上記識別受信部は、上記受信装置を用いて、上記識別取得指示部が送信した識別取得コマンドに対する応答として、上記記憶装置が送信した識別情報を受信し、
上記コマンド群判定部は、上記処理装置を用いて、上記識別受信部が受信した識別情報に基づいて、複数の拡張コマンド群のなかから、上記記憶装置が理解する拡張コマンド群を判定し、
上記拡張コマンド変換部は、上記処理装置を用いて、上記コマンド群判定部が判定した拡張コマンド群に基づいて、上記共通コマンド取得部が取得した共通コマンドを、上記記憶装置が理解する拡張コマンドに変換し、
上記拡張コマンド送信部は、上記送信装置を用いて、上記記憶装置に対して、上記拡張コマンド変換部が変換した拡張コマンドを送信し、
上記応答受信部は、上記受信装置を用いて、上記拡張コマンド送信部が送信した拡張コマンドに対する応答として、上記記憶装置が送信した応答データを受信し、
上記応答変換部は、上記処理装置を用いて、上記応答受信部が受信した応答データのデータ形式を、所定の形式に変換して、変換データを生成し、
上記応答通知部は、上記処理装置を用いて、上記共通コマンド取得部が取得した共通コマンドに対する応答として、上記応答変換部が生成した変換データを、上記制御装置に対して通知することを特徴とする。
実施の形態1について、図1〜図11を用いて説明する。
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は、例えばC1G2などの規格により定められたコマンド(以下「基本コマンド」と呼ぶ。)を理解するほか、ICタグ820のメーカーごとに独自に拡張したコマンド(以下「拡張コマンド」と呼ぶ。)を理解して、理解したコマンドが指示する動作をする。
基本コマンドには、例えば、通信するICタグのグループを選択する「Selectコマンド」、通信対象となるICタグを一つのICタグに決定する「Queryコマンド」、ICタグのIDを読み出す「Ackコマンド」などがある。
RFIDリーダライタ装置100は、ROM913、RAM914、フラッシュメモリ920、CPU911、通信装置915、送信装置917、受信装置918、アンテナ919を有する。
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などに記憶させる。
以下に説明する機能ブロックは、例えばROM913が記憶したプログラムを、CPU911が実行することにより実現する。あるいは、専用のデジタル回路やアナログ回路を用いて実現してもよい。特に、速い処理速度が要求されるブロックは、CPU911を用いてソフトウェア的に実現するよりも、専用の回路を用いて実現するほうが好ましい。
これに対し、メーカー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」を理解する。
この例において、三種類のICタグがあるものとする。一つは、メーカーAが製造し、TIDが「TIDA」であるICタグ。もう一つは、メーカーBが製造し、TIDが「TIDB」であるICタグ、他の一つは、メーカーCが製造し、TIDが「TIDC」であるICタグである。三種類のICタグは、それぞれ異なる拡張コマンドを理解する。
ブロックサイズとして128を指定した場合、TIDが「TIDA」のICタグが理解する拡張コマンド(以下「拡張コマンドA」と呼ぶ。)のブロックサイズは256であるから、共通コマンドにおけるブロック番号0及び1が、拡張コマンドAにおけるブロック番号0に対応する。TIDが「TIDB」のICタグが理解する拡張コマンド(以下「拡張コマンドB」と呼ぶ。)のブロックサイズは128だが、開始番号が1なので、共通コマンドにおけるブロック番号0は、拡張コマンドBにおけるブロック番号1に対応する。TIDが「TIDC」のICタグが理解する拡張コマンド(以下「拡張コマンドC」と呼ぶ。)のブロックサイズは1024なので、共通コマンドにおけるブロック番号0〜7が、メーカーCの拡張コマンドにおけるブロック番号0に対応する。
ブロックサイズとして512を指定した場合は、共通コマンドにおけるブロック番号0が、拡張コマンドAにおけるブロック番号0及び1に対応し、拡張コマンドBにおけるブロック番号1〜8に対応する。また、共通コマンドにおけるブロック番号0及び1が、拡張コマンドCにおけるブロック番号0に対応する。
プロトコルテーブル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がなくてもよい。
プロトコル判定部130は、CPU911を用いて、共通コマンド取得部161が出力した共通コマンドを入力する。プロトコル判定部130は、取得したプロトコルと、入力した共通コマンドとに基づいて、プロトコル記憶部120が記憶したプロトコルテーブル520のなかから、共通コマンド521が、入力した共通コマンドと一致し、かつ、プロトコル522が、取得したプロトコルと一致するレコードを検索して、拡張コマンド523、ブロックサイズ524、ブロック数525、開始ブロック番号526を取得する。プロトコル判定部130は、CPU911を用いて、入力した共通コマンドと、取得したプロトコルと、取得した拡張コマンド523とブロックサイズ524とブロック数525と開始ブロック番号526とを出力する。
コマンド送信部172は、送信装置917を用いて、ICタグ820に対して、入力したコマンドを送信する。
応答変換部150は、CPU911を用いて、応答受信部182が出力した応答データを入力する。応答変換部150は、CPU911を用いて、応答データの形式を、共通コマンドに対する応答としてあらかじめ定められている所定の形式に変換する。応答変換部150は、CPU911を用いて、変換した応答データ(以下「変換データ」と呼ぶ。)を出力する。
ブロック読み出しコマンド変換処理は、例えば、ブロックサイズ比算出工程S612、ブロック番号算出工程S613、拡張コマンド生成工程S614、読み出しサイズ判定工程S615を有する。
算出した積がブロック数525より小さい場合、拡張コマンド変換部140は、CPU911を用いて、算出した積と、入力した開始ブロック番号526との和を算出し、ブロック番号とする。
共通コマンドのブロックサイズが、拡張コマンドのブロックサイズの累計以下である場合、拡張コマンド変換部140は、CPU911を用いて、ブロック読み出しコマンド変換処理を終了する。
共通コマンドのブロックサイズが、拡張コマンドのブロックサイズの累計より大きい場合、拡張コマンド変換部140は、ブロック番号増加工程S616へ進む。
その後、拡張コマンド変換部140は、拡張コマンド生成工程S614に戻る。
例えば、共通コマンド取得部161が入力した共通コマンドが、256バイトを1ブロックとして、5番ブロックの読み出しを指示するブロック読み出しコマンドであるとする。また、プロトコル記憶部120は、図5に示したプロトコルテーブル520を記憶しているものとする。
ブロック番号算出工程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」以下であることを判定して、ブロック読み出しコマンド変換処理を終了する。
ブロック番号算出工程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」以下であることを判定し、ブロック読み出しコマンド変換処理を終了する。
ブロック番号算出工程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」以下であることを判定し、ブロック読み出しコマンド変換処理を終了する。
ブロック書き込みコマンド変換処理は、例えば、ブロックサイズ比算出工程S622、ブロック番号算出工程S623、ブロックサイズ比較工程S624、読み出しコマンド生成工程S625、書き込みデータ生成工程S626、拡張コマンド生成工程S627、書き込みサイズ判定工程S628、ブロック番号増加工程S629を有する。
算出した積がブロック数525より小さい場合、拡張コマンド変換部140は、CPU911を用いて、算出した積と、入力した開始ブロック番号526との和を算出し、ブロック番号とする。
なお、拡張コマンド変換部140は、CPU911を用いて、ブロックサイズ比算出工程S622で算出した比が1以上であるか否かに基づいて、共通コマンドにおけるブロックサイズが、入力したブロックサイズ524以上であるか否かを判定してもよい。
拡張コマンド変換部140は、CPU911を用いて、プロトコル記憶部120が記憶したプロトコルテーブル520のなかから、共通コマンド521が「ブロック読み出し」と一致し、プロトコル522が、入力したプロトコルと一致するレコードを検索して、拡張コマンド523を取得する。拡張コマンド変換部140は、CPU911を用いて、取得した拡張コマンド523と、ブロック番号算出工程S623で算出したブロック番号とに基づいて、拡張コマンドを生成する。
共通コマンドのブロックサイズが、拡張コマンドのブロックサイズの累計以下である場合、拡張コマンド変換部140は、CPU911を用いて、ブロック読み出しコマンド変換処理を終了する。
共通コマンドのブロックサイズが、拡張コマンドのブロックサイズの累計より大きい場合、拡張コマンド変換部140は、ブロック番号増加工程S629へ進む。
その後、拡張コマンド変換部140は、拡張コマンド生成工程S627に戻る。
例えば、共通コマンド取得部161が入力した共通コマンドが、256バイトを1ブロックとして、6番ブロックへの書き込みを指示するブロック書き込みコマンドであるとする。また、プロトコル記憶部120は、図5に示したプロトコルテーブル520を記憶しているものとする。
ブロック番号算出工程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」以下であることを判定して、ブロック書き込みコマンド変換処理を終了する。
ブロック番号算出工程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」以下であることを判定し、ブロック書き込みコマンド変換処理を終了する。
ブロック番号算出工程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が「TIDC」であるレコードを検索して、拡張コマンド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」以下であることを判定し、ブロック書き込みコマンド変換処理を終了する。
ブロック読み出し応答変換処理は、例えば、応答データ入力工程S631、読み出し異常判定工程S632、ブロックサイズ比較工程S633、応答データ蓄積工程S634、読み出しサイズ判定工程S635、応答データ抽出工程S636、変換データ出力工程S637を有する。
応答変換部150は、CPU911を用いて、読み出し異常であると判定した場合、ブロック読み出し応答変換処理を終了する。
応答変換部150は、CPU911を用いて、読み出し異常でないと判定した場合、ブロックサイズ比較工程S633へ進む。
なお、応答変換部150が読み出し異常であると判定した場合、応答変換部150は、CPU911を用いて、読み出し異常であることを表わすデータを生成し、出力する構成としてもよい。あるいは、コマンド送信部172が拡張コマンドをICタグ820に対して再送し、応答受信部182が応答データを再び受信する構成としてもよい。
応答変換部150は、CPU911を用いて、入力した共通コマンドのブロックサイズが、入力したブロックサイズ524より大きいと判定した場合、応答データ蓄積工程S634へ進む。
応答変換部150は、CPU911を用いて、入力した共通コマンドのブロックサイズが、入力したブロックサイズ524より小さいと判定した場合、応答データ抽出工程S636へ進む。
応答変換部150は、CPU911を用いて、入力した共通コマンドのブロックサイズが、入力したブロックサイズ524と等しいと判定した場合、応答データ入力工程S631で入力した応答データを変換前データとして、変換データ出力工程S637へ進む。
応答変換部150は、CPU911を用いて、入力した共通データにおけるブロックサイズが、蓄積した読み出しデータのサイズの累計より大きいと判定した場合、応答データ入力工程S631に戻る。
応答変換部150は、CPU911を用いて、入力した共通データにおけるブロックサイズが、蓄積した読み出しデータのサイズの累計以下であると判定した場合、蓄積した応答データを変換前データとして、変換データ出力工程S637へ進む。
例えば、応答変換部150は、CPU911を用いて、入力したブロックサイズ524を、入力した共通コマンドにおけるブロックサイズで割った商を算出する。応答変換部150は、CPU911を用いて、入力した共通コマンドにおけるブロック番号を、算出した商で割った余りを算出する。応答変換部150は、CPU911を用いて、入力した応答データを、入力した共通コマンドにおけるブロックサイズごとに分割する。応答変換部150は、CPU911を用いて、分割した応答データのなかから、「算出した余り+1」番目の応答データを選択して、変換前データとする。
その場合、拡張コマンド変換部140は、CPU911を用いて、入力した共通コマンド「ブロック読み出し」を、効率のよいほうの拡張コマンドに変換する。例えば、拡張コマンド変換部140は、共通コマンドのブロックサイズが512バイト以下である場合、拡張コマンド「ブロック読み出し小」に変換する。拡張コマンド「ブロック読み出し大」に変換すると、1024バイトを読み出すため、通信時間が長くなり、読み出したデータのうち512バイト以上が無駄になるからである。逆に、共通コマンドのブロックサイズが512バイトより大きい場合、拡張コマンド「ブロック読み出し大」に変換する。拡張コマンド「ブロック読み出し小」に変換すると、ICタグ820に対してコマンドを3回以上送信するので、コマンド送信応答受信に時間がかかり、逆に通信時間が長くなるからである。
データ操作装置(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)に対して通知する。
上記コマンド判定部110は、上記処理装置(CPU911)を用いて、上記共通コマンド取得部161が取得した共通コマンドが、上記記憶装置(ICタグ820)の種別にかかわらず理解する基本コマンドに変換可能なコマンドか否かを判定する。
上記基本コマンド変換部115は、上記共通コマンド取得部161が取得した共通コマンドが上記基本コマンドに変換可能なコマンドであると、上記コマンド判定部110が判定した場合に、上記処理装置(CPU911)を用いて、上記共通コマンド取得部161が取得した共通コマンドを、上記基本コマンドに変換する。
上記拡張コマンド送信部(コマンド送信部172)は、上記共通コマンド取得部161が取得した共通コマンドが基本コマンドに変換可能なコマンドであると、上記コマンド判定部110が判定した場合に、上記送信装置917を用いて、上記記憶装置(ICタグ820)に対して、上記基本コマンド変換部115が変換した基本コマンドを送信し、上記共通コマンド取得部161が取得した共通コマンドが基本コマンドに変換可能なコマンドでないと、上記コマンド判定部110が判定した場合に、上記送信装置917を用いて、上記記憶装置(ICタグ820)に対して、上記拡張コマンド変換部140が変換した拡張コマンドを送信する。
上記プロトコル記憶部120は、上記内部記憶装置を用いて、上記コマンド群判定部(プロトコル判定部130)が判定する拡張コマンド群(プロトコル)のそれぞれについて、上記記憶装置(ICタグ820)が記憶したデータを複数まとめて操作する単位である一つの操作ブロックに含まれるデータの数を表わすブロックサイズ524を記憶する。
上記拡張コマンド変換部140は、上記処理装置(CPU911)を用いて、上記共通コマンド取得部161が取得した共通コマンドが、上記記憶装置(ICタグ820)が記憶したデータを複数まとめて操作するよう指示する共通ブロック操作コマンド(ブロック読み出しコマンド・ブロック書き込みコマンド)であるか否かを判定し、上記共通コマンドが上記共通ブロック操作コマンドであると判定した場合に、上記コマンド群判定部(プロトコル判定部130)が判定した拡張コマンド群(プロトコル)について上記プロトコル記憶部120が記憶したブロックサイズ524に基づいて、上記共通コマンドを拡張コマンドに変換する。
上記応答変換部150は、上記処理装置(CPU911)を用いて、上記拡張コマンド変換部140が一つの共通コマンドを変換した一以上の拡張コマンドのそれぞれに対して上記応答受信部182が受信した応答データに基づいて、一つの変換データを生成する。
上記複数の記憶装置(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)に対して通知する。
PC810で動作するアプリケーションで使用したユーザコマンド(共通コマンド)を、リーダ(RFIDリーダライタ装置100)が受信する。リーダは、そのユーザコマンドを、標準エアコマンド(基本コマンド)を実行するためのものか、拡張エアコマンド(拡張コマンド)を実行するものかで、分類する。
拡張エアコマンドを実行するためのものであれば、リーダは、まず標準エアコマンドを利用してC1G2のタグ(ICタグ820)が標準で記憶している情報であるTID(識別情報)を取得する。TIDは、タグメーカID、モデルIDなどで構成される情報である。
リーダは、取得したTIDに基づき、当該タグに適したエアコマンド(拡張コマンド)を選択する。リーダは、タグに対してこのエアコマンドを送信して、ユーザが実行したい機能を実現する。
リーダは、送信したエアコマンドに対するタグからの応答信号(タグレスポンス)(応答データ)から、情報を抽出・整形して、送信されたユーザコマンドに対する応答(ユーザコマンドレスポンス)を作成し、PC810に返信する。
PC810においてユーザコマンドが実行されると、PC810は、ネットワークケーブルなどを介してリーダ(RFIDリーダライタ装置100)にユーザコマンドを送信する。
リーダは、ユーザコマンドを、ユーザコマンド送受信制御部(通信装置915)にて、受信する。
ユーザコマンド取得部(共通コマンド取得部161)は、ユーザコマンド送受信制御部からユーザコマンドを取得し、保持する。ユーザコマンド取得部は、拡張エアコマンド判定部(コマンド判定部110)に対して、ユーザコマンドを送信する。
エアコマンド送受信制御部(送信装置917)は、標準エアコマンドをタグに送信して、タグのTIDが保持されている領域を読み出す。タグが読み出したTIDを、エアコマンド送受信制御部(受信装置918)が受信する。
TID取得部(識別受信部181)は、エアコマンド送受信制御部(受信装置918)からTIDを取得し、保持する。
エアコマンド整形部(拡張コマンド変換部140)は、プロトコル選択部(プロトコル判定部130)から入力したエアコマンド、タグのメモリブロックサイズ、タグのメモリブロック数と、ユーザコマンド取得部から入力したエアコマンドで使用するパラメータを入力し、エアコマンドを整形し、エアコマンド送受信制御部(送信装置917)に送信する。
エアコマンド送受信制御部(送信装置917)は、送信されたエアコマンド(拡張コマンド)を、タグ(ICタグ820)に対して送信する。
エアコマンド送受信制御部(受信装置918)は、タグレスポンスを受信する。
タグレスポンス取得部(応答受信部182)は、エアコマンド送受信制御部(受信装置918)からタグレスポンス(応答データ)を取得し、保持する。
レスポンス整形部(応答変換部150)は、プロトコル選択部(プロトコル判定部130)から選択したエアコマンド(拡張コマンド)が何であるかの通知を受ける。それに基づき、レスポンス整形部は、タグレスポンスからユーザコマンドレスポンスに必要な情報を切り出す。レスポンス整形部は、あわせてフィールドの順序の入れ替え、ビット数あわせなどを行い、ユーザコマンドレスポンスデータを生成する。
レスポンス整形部(応答変換部150)は、生成したユーザコマンドレスポンスデータ(変換データ)をユーザコマンド送受信制御部(通信装置915)に対して送信する。
ユーザコマンド送受信制御部(通信装置915)は、レスポンス整形部(応答変換部150)から送信されたデータを、ユーザコマンドレスポンスとして、PC810に対して送信する。
実施の形態2について、図12〜図13を用いて説明する。
なお、実施の形態1で説明したICタグ読取システム800と共通する部分については、同一の符号を付し、説明を省略する。
RFIDリーダライタ装置100は、実施の形態1で説明した機能ブロックに加えて、更に、プロトコル更新部190を有する。
プロトコル更新部190は、CPU911を用いて、入力した共通コマンドが更新コマンドであると判定した場合、プロトコル更新部190は、プロトコル記憶部120が記憶したプロトコルテーブル520を更新する。
プロトコル記憶部120は、マスター記憶部121、二つのテーブル記憶部122,123、有効フラグ記憶部124、テーブル検索部125、テーブル更新部126、テーブル切替部127を有する。
二つのテーブル記憶部122,123は、それぞれ、RAM914を用いて、プロトコルテーブルを記憶する。
有効フラグ記憶部124は、RAM914を用いて、二つのテーブル記憶部122,123のうちどちらが有効であるかを表わすフラグ(以下「有効フラグ」と呼ぶ。)を記憶する。
テーブル検索部125は、CPU911を用いて、有効フラグ記憶部124が記憶した有効フラグを入力する。テーブル検索部125は、CPU911を用いて、入力した有効フラグに基づいて、二つのテーブル記憶部122,123のうち、どちらが有効であるかを判定する。テーブル検索部125は、CPU911を用いて、有効であると判定したほうのテーブル記憶部が記憶したプロトコルテーブルを検索する。
テーブル更新部126は、CPU911を用いて、マスター記憶部121が記憶したプロトコルテーブルを入力する。テーブル更新部126は、CPU911を用いて、マスター記憶部121が記憶したプロトコルテーブルを、プロトコル更新部190からの指示にしたがって更新する。マスター記憶部121は、フラッシュメモリ920を用いて、更新されたプロトコルテーブルを記憶する。
テーブル更新部126は、CPU911を用いて、有効フラグ記憶部124が記憶した有効フラグを入力する。テーブル更新部126は、CPU911を用いて、入力した有効フラグに基づいて、二つのテーブル記憶部122,123のうち、どちらが有効であるかを判定する。テーブル更新部126は、CPU911を用いて、有効でないと判定したほうのテーブル記憶部122が記憶したプロトコルテーブルを、マスター記憶部121が記憶したプロトコルテーブルと同じ内容に更新する。有効でないと判定されたほうのテーブル記憶部は、RAM914を用いて、更新されたプロトコルテーブルを記憶する。
なお、テーブル切替部127は、CPU911を用いて、テーブル検索部125がプロトコルテーブルを検索中であるか否かを判定し、テーブル検索部125がプロトコルテーブルを検索中であると判定した場合、テーブル検索部125による検索が完了するのを待ってから、有効フラグ記憶部124が記憶した有効フラグを書き換える構成としてもよい。
テーブル更新部126は、CPU911を用いて、マスター記憶部121が記憶したプロトコルテーブルを入力する。テーブル更新部126は、CPU911を用いて、テーブル記憶部122が記憶したプロトコルテーブルを、入力したプロトコルテーブルと同じ内容に初期化する。テーブル記憶部122は、RAM914を用いて、初期化されたプロトコルテーブルを記憶する。
テーブル切替部127は、CPU911を用いて、テーブル更新部126によるプロトコルテーブルの初期化が完了した場合に、有効フラグ記憶部124が記憶した有効フラグを、テーブル記憶部122が有効であることを表わす有効フラグに初期化する。有効フラグ記憶部124は、RAM914を用いて、初期化された有効フラグを記憶する。
テーブル更新部126によるプロトコルテーブルの更新が完了したのち、有効フラグ記憶部124が記憶した有効フラグを、テーブル切替部127が書き換えると、テーブル検索部125は、その後、更新されたプロトコルテーブルを検索する。
上記複数のテーブル記憶部122,123のそれぞれは、上記内部記憶装置(RAM914)を用いて、上記コマンド群判定部(プロトコル判定部130)が判定する拡張コマンド群(プロトコル)のそれぞれについて、上記記憶装置(ICタグ820)が理解する拡張コマンド523と、上記ブロックサイズ524とを含むプロトコルテーブル520を記憶する。
上記有効フラグ記憶部124は、上記内部記憶装置(RAM914)を用いて、上記複数のテーブル記憶部122,123のうち、いずれが有効であるかを表わす有効フラグを記憶する。
上記テーブル更新部126は、上記処理装置(CPU911)を用いて、上記共通コマンド取得部161が取得した共通コマンドが、プロトコルテーブル520の更新を指示するコマンド(テーブル更新コマンド)である場合に、上記有効フラグ記憶部124が記憶した有効フラグに基づいて、有効でないテーブル記憶部が記憶したプロトコルテーブル520を更新する。
上記テーブル切替部127は、上記処理装置(CPU911)を用いて、上記有効フラグ記憶部124が記憶した有効フラグを更新して、上記テーブル更新部126が更新したテーブル記憶部を有効にする。
PC810は、更新するプロトコルテーブルをテーブル更新用ファイルとして、あらかじめ保存しておく。
PC810は、プロトコルテーブルを更新するため、テーブル更新コマンドを実行する。
テーブル更新コマンドが実行されると、PC810は、リーダ(RFIDリーダライタ装置100)に対して、ネットワークケーブルなどを介して、テーブル更新コマンドと指定されたファイルとを送信する。
リーダ(RFIDリーダライタ装置100)は、受信したコマンドがテーブル更新コマンドであると判定すると、受信したファイルから新しいプロトコルテーブルを生成する。
PC810は、プロトコルテーブルを更新するため、ユーザコマンド(共通コマンド)として、テーブル更新コマンド(更新コマンド)を実行する。
テーブル更新コマンドは、テーブル更新用ファイルを指定する引数を備えている。
PC810は、ネットワークケーブルなどを介して、リーダ(RFIDリーダライタ装置100)に対して、テーブル更新コマンドを送信する。PC810は、テーブル更新用ファイルを、テーブル更新コマンドと一緒に送信する。
テーブル更新コマンドおよびテーブル更新用ファイルは、ユーザコマンド送受信制御部(通信装置915)が受信する。
テーブル更新コマンド判定部(プロトコル更新部190)は、ユーザコマンドがテーブル更新コマンドであるか否かを判定する。テーブル更新コマンド判定部は、ユーザコマンドがテーブル更新コマンドである場合、生成テーブル選択部(テーブル更新部126)に通知し、プロトコルテーブルの更新処理を開始する。ユーザコマンドがテーブル更新コマンドでない場合は、通常通り、当該コマンドの機能を実行し、プロトコルテーブル更新の処理を実行しない。
これらのフラグは、2つあるプロトコルテーブル(テーブル記憶部122,123)のどちらが有効になっているかを示す。
例えば、プロトコルテーブルAが有効であり、プロトコルテーブルA有効フラグが有意になっている場合について説明する。
生成テーブル選択部(テーブル更新部126)は、プロトコルテーブルBが無効であると判定し、新しいプロトコルテーブル(以下「新プロトコルテーブル」と呼ぶ。)をプロトコルテーブルBに生成するように、テーブル生成部(テーブル更新部126)に指示する。
テーブル生成部(テーブル更新部126)は、ユーザコマンド送受信制御部(通信装置915)が保持しているテーブル更新用ファイルを順次読み出して、プロトコルテーブルBに新プロトコルテーブルを生成する。新しいプロトコルテーブルの生成を完了すると、テーブル生成部(テーブル更新部126)は、テーブルフラグ有効化部(テーブル切替部127)に通知する。
ユーザコマンド送受信制御部(通信装置915)は、ネットワークケーブルなどを介して、PC810に対して、ユーザコマンドレスポンスを送信する。
実施の形態3について、図14を用いて説明する。
なお、実施の形態2で説明したICタグ読取システム800と共通する部分については、同一の符号を付し、説明を省略する。
プロトコル記憶部120は、二つのマスター記憶部121a,121b、テーブル記憶部122、有効フラグ記憶部124、テーブル検索部125、テーブル更新部126、テーブル切替部127、テーブル読込部128を有する。
テーブル記憶部122は、RAM914を用いて、プロトコルテーブルを記憶する。
テーブル検索部125は、CPU911を用いて、プロトコル判定部130などからの要求にしたがって、テーブル記憶部122が記憶したプロトコルテーブルを検索し、検索した結果を返す。
テーブル更新部126は、CPU911を用いて、有効フラグ記憶部124が記憶した有効フラグを入力する。テーブル更新部126は、CPU911を用いて、入力した有効フラグに基づいて、二つのマスター記憶部121a,121bのうち、どちらが有効であるかを判定する。テーブル更新部126は、CPU911を用いて、有効でないと判定したほうのマスター記憶部が記憶したプロトコルテーブルを入力する。テーブル更新部126は、CPU911を用いて、入力したプロトコルテーブルを、プロトコル更新部190からの指示にしたがって更新する。有効でないと判定されたほうのマスター記憶部は、フラッシュメモリ920を用いて、更新されたプロトコルテーブルを記憶する。
テーブル読込部128は、CPU911を用いて、有効フラグ記憶部124が記憶した有効フラグを入力する。テーブル読込部128は、CPU911を用いて、入力した有効フラグに基づいて、二つのマスター記憶部121a,121bのうち、どちらが有効かを判定する。テーブル読込部128は、CPU911を用いて、有効であると判定したほうのマスター記憶部が記憶したプロトコルテーブルを入力する。テーブル読込部128は、CPU911を用いて、テーブル記憶部122が記憶したプロトコルテーブルを、入力したプロトコルテーブルと同じ内容に書き換える。テーブル記憶部122は、RAM914を用いて、書き換えられたプロトコルテーブルを記憶する。
上記プロトコル記憶部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を読み込んで、記憶する。
不揮発性の記憶装置(フラッシュメモリ920や磁気ディスク装置など)にプロトコルテーブルのマスターファイルを置き、起動時または指示があったときに、揮発性の記憶装置(RAM914など)にコピー(例えば、プログラム変数として扱い、DRAM上の変数領域にコピー)をして、エアコマンドを選択するときには、揮発性の記憶装置にコピーしたプロトコルテーブルを参照する。
これらのフラグは、2つあるプロトコルテーブルマスタ(マスター記憶部121a,121b)のどちらが有効になっているかを示す。
例えば、プロトコルテーブルAマスタが有効であり、プロトコルテーブルAマスタ有効フラグが有意になっている場合について説明する。
生成テーブルマスタ選択部(テーブル更新部126)は、プロトコルテーブルBマスタが無効であると判定し、新しいプロトコルテーブルマスタ(以下「新プロトコルテーブルマスタ」と呼ぶ。)をプロトコルテーブルBマスタに生成するように、テーブルマスタ生成部(テーブル更新部126)に指示する。
テーブルマスタ生成部(テーブル更新部126)は、ユーザコマンド送受信制御部(共通コマンド取得部161)が保持しているテーブル更新用ファイルを順次読み出して、プロトコルテーブルBマスタに新プロトコルテーブルマスタを生成する。新しいプロトコルテーブルマスタの生成を完了すると、テーブルマスタ生成部(テーブル更新部126)は、テーブルマスタフラグ有効化部(テーブル切替部127)に通知する。
実施の形態4について、図15〜図17を用いて説明する。
なお、実施の形態1〜実施の形態3で説明したICタグ読取システム800と共通する部分については、同一の符号を付し、説明を省略する。
また、それに対応して、共通コマンドの仕様にも少し変更を加え、ICタグ820の記憶領域の任意の範囲を指定して読み書きする共通コマンド(以下「共通ブロック操作コマンド」と呼ぶ。)を加える。
拡張ブロック操作コマンドの仕様は、ICタグ820が理解するプロトコルごとに異なるが、操作対象となる記憶領域を指定して、データの読み出しあるいは書き込みを行う点は、共通ブロック操作コマンドと同様である。ここでは、操作対象となる記憶領域の指定方式として、操作対象となる記憶領域を含むブロックのブロック番号と、そのブロック内における操作対象となる記憶領域の開始アドレス(以下「拡張開始アドレス」と呼ぶ。)と、操作対象となる記憶領域の大きさ(以下「拡張操作サイズ」と呼ぶ。)とを指定する場合を例として説明する。
なお、この図には、プロトコル判定部130が出力した共通コマンドが共通ブロック操作コマンドである場合に関係する部分のみを示している。
拡張コマンド変換部140は、共通操作サイズ取得部141、共通開始アドレス取得部142、拡張コマンド取得部143、ブロックサイズ取得部144、ブロック数取得部145、開始ブロック番号取得部146、残りサイズ記憶部241、拡張開始アドレス算出部242、拡張操作サイズ算出部243、残りサイズ算出部244、ブロック番号算出部245、ブロック番号記憶部246、ブロック番号判定部247、ブロック番号更新部248、拡張コマンド生成部249を有する。
共通開始アドレス取得部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を用いて、後述する残りサイズ算出部244が出力した残りサイズを入力する。残りサイズを入力した場合、残りサイズ記憶部241は、RAM914を用いて、入力した残りサイズを、上書きして記憶する。
例えば、拡張開始アドレス算出部242は、入力した共通開始アドレスを、入力したブロックサイズで割った余りを算出して、拡張開始アドレスとする。
例えば、拡張操作サイズ算出部243は、CPU911を用いて、算出する拡張操作サイズが、一つの共通ブロック操作コマンドに対する最初の拡張ブロック操作コマンドについてのものか、二つ目以降の拡張ブロック操作コマンドについてのものかを判定し、最初の拡張ブロック操作コマンドについてのものであると判定した場合、入力したブロックサイズから、入力した拡張開始アドレスを差し引いて、最初のブロックの残りサイズ(以下「ブロック残りサイズ」と呼ぶ。)を算出する。二つ目以降の拡張ブロック操作コマンドについてのものであると判定した場合、拡張操作サイズ算出部243は、CPU911を用いて、入力したブロックサイズを、二つ目以降のブロックのブロック残りサイズとする。拡張操作サイズ算出部243は、CPU911を用いて、算出したブロック残りサイズと、入力した残りサイズとを比較して、小さいほうを拡張操作サイズとする。
例えば、ブロック番号算出部245は、CPU911を用いて、入力した共通開始アドレスを、入力したブロックサイズで割った商(余りは切り捨て)を算出し、算出した商と、入力した開始ブロック番号との和を算出して、ブロック番号とする。
また、ブロック番号記憶部246は、CPU911を用いて、後述するブロック番号更新部248が出力したブロック番号を入力する。ブロック番号更新部248が出力したブロック番号を入力した場合、ブロック番号記憶部246は、RAM914を用いて、入力したブロック番号を、上書きして記憶する。
例えば、ブロック番号判定部247は、CPU911を用いて、入力したブロック数と、入力した開始ブロック番号との和を算出し、算出した和と、入力したブロック番号とを比較する。ブロック番号判定部247は、CPU911を用いて、算出した和が、入力したブロック番号より大きい場合、入力したブロック番号のブロックがICタグ820に存在すると判定し、算出した和が、入力したブロック番号以下である場合、入力したブロック番号のブロックがICタグ820に存在しないと判定する。
例えば、拡張コマンド生成部249は、CPU911を用いて、生成する拡張ブロック操作コマンドが、一つの共通ブロック操作コマンドに対する最初の拡張ブロック操作コマンドか、二つ目以降の拡張ブロック操作コマンドかを判定し、最初の拡張ブロック操作コマンドであると判定した場合、入力したブロック番号をブロック番号として指定し、入力した拡張開始アドレスを拡張開始アドレスとして指定し、入力した拡張操作サイズを拡張操作サイズとして指定した拡張ブロック操作コマンドを生成する。二つ目以降の拡張ブロック操作コマンドであると判定した場合、拡張コマンド生成部249は、CPU911を用いて、入力したブロック番号をブロック番号として指定し、「0」を拡張開始アドレスとして指定し、入力した拡張操作サイズを拡張操作サイズとして指定した拡張ブロック操作コマンドを生成する。
拡張コマンド変換部140は、CPU911を用いて、プロトコル判定部130が出力した共通コマンドの種別を判定する。拡張コマンド変換部140は、CPU911を用いて、判定した共通コマンドの種別に基づいて、共通コマンドの種別に対応するコマンド変換処理を実行する。ブロック操作コマンド変換処理は、プロトコル判定部130が出力した共通コマンドが、共通ブロック操作コマンドである場合に実行される。
ブロック番号記憶部246が記憶したブロック番号のブロックがICタグ820に存在するとブロック番号判定部247が判定した場合、拡張コマンド変換部140は、CPU911を用いて、拡張操作サイズ算出工程S645へ進む。
ブロック番号記憶部246が記憶したブロック番号のブロックがICタグ820に存在しないとブロック番号判定部247が判定した場合、拡張コマンド変換部140は、ブロック操作コマンド変換処理を終了する。
残りサイズ算出部244が算出した残りサイズが「0」より大きい場合、拡張コマンド変換部140は、CPU911を用いて、ブロック番号更新工程S648へ進む。
残りサイズ算出部244が算出した残りサイズが「0」と等しい場合、拡張コマンド変換部140は、CPU911を用いて、ブロック操作コマンド変換処理を終了する。
その後、拡張コマンド変換部140は、CPU911を用いて、ブロック番号判定工程S644に戻る。
TIDが「TIDD」のICタグ820は、拡張ブロック操作コマンドとして、ブロック番号と、拡張開始アドレスと、拡張操作サイズとを指定して、指定したブロック番号が示す記憶領域のうち、拡張開始アドレスと拡張操作サイズとが示す記憶領域が記憶した複数のデータをまとめて読み出すことを指示する「ブロック読み出しD1」を理解するものとする。また、TIDが「TIDD」のICタグ820は、ブロック番号のみを指定して、指定したブロック番号が示す記憶領域が記憶したすべてのデータをまとめて読み出すことを指示する「ブロック読み出しD2」を理解するものとする。なお、メーカーDのICタグ820におけるブロックサイズは256バイト、ブロック数は16、開始ブロック番号は0であるものとする。
TIDが「TIDE」のICタグ820も同様に、ブロック番号と、拡張開始アドレスと拡張操作サイズを指定して、複数のデータをまとめて読み出す「ブロック読み出しE1」を理解するものとする。なお、メーカーEのICタグ820におけるブロックサイズは1024バイト、ブロック数は8、開始ブロック番号は0であるものとする。
拡張開始アドレス算出部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は、ブロック操作コマンド変換処理を終了する。
例えば、応答変換部150は、CPU911を用いて、入力した三つの応答データを結合して変換前データとし、データ形式を整えて、一つの変換データを生成する。応答通知部162は、通信装置915を用いて、応答変換部150が生成した変換データを、共通コマンド取得部161が取得した共通ブロック操作コマンド「ブロック読み出し’ 1500,500」に対する応答として、PC810に対して通知する。
拡張開始アドレス算出部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は、ブロック操作コマンド変換処理を終了する。
例えば、応答変換部150は、CPU911を用いて、入力した応答データを変換前データとし、データ形式を整えて、変換データを生成する。応答通知部162は、通信装置915を用いて、応答変換部150が生成した変換データを、共通コマンド取得部161が取得した共通ブロック操作コマンド「ブロック読み出し’ 1500,500」に対する応答として、PC810に対して通知する。
また、ICタグ820の種別(メーカーや型式)によって、ブロックサイズが異なる場合がある。
したがって、ICタグ820のブロックサイズにかかわらず、一つの共通ブロック操作コマンドで、複数の操作対象データをまとめて操作することができる。
実施の形態5について、図18〜図21を用いて説明する。
なお、実施の形態4で説明したICタグ読取システム800と共通する部分については、同一の符号を付し、説明を省略する。
なお、この図には、リトライに関係する部分のみを示している。
例えば、コマンド送信部172が送信した拡張コマンドが、ブロック読み出しコマンドである場合、通信成否判定部151は、CPU911を用いて、入力した応答データに付加された誤り検出符号や誤り訂正符号を検査して、応答受信部182が正しく応答データを受信したか否かを判定する。あるいは、コマンド送信部172が送信した拡張コマンドが、ブロック書き込みコマンドである場合、ICタグ820に書き込むデータをICタグ820が正しく受信したか否かを表わす情報を含む応答データを、ICタグ820が送信するので、通信成否判定部151は、これを解析することにより、ICタグ820が正しくデータを受信したか否かを判定する。
例えば、分割数が2の場合、拡張操作サイズ分割部251は、CPU911を用いて、入力した拡張操作サイズを2で割って、二つに分割した分割操作サイズを算出する。分割操作サイズは、整数であって、合計すると、入力した拡張操作サイズと等しくなるようにする。また、メモリアクセスの効率性を考慮して、拡張操作サイズ分割部251は、CPU911を用いて、分割した記憶領域がワード境界と一致するよう、分割操作サイズを算出する構成としてもよい。
また、拡張操作サイズ分割部251は、CPU911を用いて、入力した操作サイズが所定の最低サイズ以下であると判定した場合、入力した拡張操作サイズをそのまま分割操作サイズとして出力する。したがって、その場合の分割数は「1」となる。
分割開始アドレス算出部252は、CPU911を用いて、分割数と同じ数の分割開始アドレスを算出する。例えば、分割数が2の場合、分割開始アドレス算出部252は、CPU911を用いて、二つの分割開始アドレスを算出する。分割開始アドレス算出部252は、CPU911を用いて、入力した拡張開始アドレスを、そのまま第一の分割開始アドレスとする。分割開始アドレス算出部252は、CPU911を用いて、第一の分割開始アドレスに、入力した二つの分割操作サイズのうち、第一の分割操作サイズを加えて、第二の分割開始アドレスとする。
拡張コマンド生成部249は、CPU911を用いて、分割数と同じ数の拡張コマンドを生成する。例えば、分割数が2の場合、拡張コマンド生成部249は、CPU911を用いて、二つの拡張コマンドを生成する。拡張コマンド生成部249は、CPU911を用いて、第一の分割開始アドレスを拡張開始アドレスとして指定し、第一の分割操作サイズを拡張操作サイズとして指定した第一の拡張コマンドと、第二の分割開始アドレスを拡張開始アドレスとして指定し、第二の分割操作サイズを拡張操作サイズとして指定した第二の拡張コマンドとを生成する。
ブロック操作コマンド変換処理は、実施の形態4で説明した工程に加えて、更に、通信成否判定工程S651、リトライ処理S650を有する。
ICタグ820との通信が成功したと通信成否判定部151が判定した場合、拡張コマンド変換部140は、残りサイズ算出工程S647へ進む。
ICタグ820との通信が失敗したと通信成否判定部151が判定した場合、拡張コマンド変換部140は、リトライ処理S650へ進む。
リトライ処理S650は、分割操作サイズ算出工程S652、分割開始アドレス算出工程S653、分割繰り返し工程S654、拡張コマンド生成工程S655、通信成否判定工程S656、リトライ処理S660、分割繰り返し判定工程S657を有する。
分割開始アドレス算出工程S653において、分割開始アドレス算出部252は、CPU911を用いて、分割操作サイズ算出工程S652で拡張操作サイズ分割部251が算出した分割操作サイズと、拡張コマンド生成部249が生成した拡張コマンドで指定された拡張開始アドレスとに基づいて、分割数と等しい数の分割開始アドレスを算出する。
ICタグ820との通信が成功したと通信成否判定部151が判定した場合、拡張コマンド変換部140は、CPU911を用いて、分割繰り返し判定工程S657へ進む。
ICタグ820との通信が失敗したと通信成否判定部151が判定した場合、拡張コマンド変換部140は、CPU911を用いて、リトライ処理S660へ進む。
まだ繰り返し回数が足りないと判定した場合、拡張コマンド変換部140は、CPU911を用いて、拡張コマンド生成工程S655からの処理を繰り返す。
分割数と同じ回数繰り返したと判定した場合、拡張コマンド変換部140は、CPU911を用いて、リトライ処理を終了する。
拡張コマンド変換部140は、CPU911を用いて、拡張コマンド「ブロック読み出しD2 #6」のブロック番号「6」をブロック番号として指定し、分割開始アドレス算出部252が算出した第一の分割開始アドレス「0」を拡張開始アドレスとして指定し、拡張操作サイズ分割部251が算出した第一の分割操作サイズを拡張操作サイズとして指定した拡張コマンド「ブロック読み出しD1 #6,0,128」を生成し、出力する。
通信成否判定部151は、CPU911を用いて、応答受信部182が受信した応答データに基づいて、ICタグ820との通信に成功したと判定する。
上記通信成否判定部151は、上記処理装置(CPU911)を用いて、上記応答受信部182が受信した応答データに基づいて、上記記憶装置(ICタグ820)との通信が成功したか失敗したかを判定する。
上記拡張コマンド変換部140は、上記処理装置(CPU911)を用いて、上記記憶装置(ICタグ820)との通信が失敗したと上記通信成否判定部151が判定した場合に、上記共通コマンドを、変換した拡張コマンドよりも一回の通信で送受信するデータ長が短い拡張コマンドに再変換する。
上記拡張コマンド送信部172は、上記送信装置917を用いて、上記記憶装置(ICタグ820)に対して、上記拡張コマンド変換部140が再変換した拡張コマンドを送信する。
上記通信成否判定部151は、上記処理装置(CPU911)を用いて、上記拡張コマンド変換部140が変換した一以上の拡張コマンドのそれぞれについて、上記応答受信部182が受信した応答データに基づいて、上記記憶装置(ICタグ820)との通信が成功したか失敗したかを判定する。
上記拡張コマンド変換部140は、上記処理装置(CPU911)を用いて、上記拡張コマンド変換部140が変換した一以上の拡張コマンドのいずれかについて、上記記憶装置(ICタグ820)との通信が失敗したと上記通信成否判定部151が判定した場合に、上記記憶装置(ICタグ820)との通信が失敗したと上記通信成否判定部151が判定した拡張コマンドについて、操作する操作対象データを複数に分割し、分割した操作対象データのそれぞれについて、拡張コマンドを生成することにより、通信に失敗した拡張コマンドを、複数の拡張コマンドに変換する。
上記拡張コマンド送信部172は、上記送信装置917を用いて、上記記憶装置(ICタグ820)に対して、上記拡張コマンド変換部140が変換した複数の拡張コマンドを送信する。
Claims (12)
- 制御装置からの指示にしたがって記憶装置と通信し、上記記憶装置が記憶したデータを操作するデータ操作装置において、
データを処理する処理装置と、上記記憶装置に対してデータを送信する送信装置と、上記記憶装置からデータを受信する受信装置と、共通コマンド取得部と、識別取得指示部と、識別受信部と、コマンド群判定部と、拡張コマンド変換部と、拡張コマンド送信部と、応答受信部と、応答変換部と、応答通知部とを有し、
上記共通コマンド取得部は、上記処理装置を用いて、上記制御装置からの指示を表わす共通コマンドを取得し、
上記識別取得指示部は、上記送信装置を用いて、上記記憶装置に対して、上記記憶装置の識別情報を送信するよう指示する識別取得コマンドを送信し、
上記識別受信部は、上記受信装置を用いて、上記識別取得指示部が送信した識別取得コマンドに対する応答として、上記記憶装置が送信した識別情報を受信し、
上記コマンド群判定部は、上記処理装置を用いて、上記識別受信部が受信した識別情報に基づいて、複数の拡張コマンド群のなかから、上記記憶装置が理解する拡張コマンド群を判定し、
上記拡張コマンド変換部は、上記処理装置を用いて、上記コマンド群判定部が判定した拡張コマンド群に基づいて、上記共通コマンド取得部が取得した共通コマンドを、上記記憶装置が理解する拡張コマンドに変換し、
上記拡張コマンド送信部は、上記送信装置を用いて、上記記憶装置に対して、上記拡張コマンド変換部が変換した拡張コマンドを送信し、
上記応答受信部は、上記受信装置を用いて、上記拡張コマンド送信部が送信した拡張コマンドに対する応答として、上記記憶装置が送信した応答データを受信し、
上記応答変換部は、上記処理装置を用いて、上記応答受信部が受信した応答データのデータ形式を、所定の形式に変換して、変換データを生成し、
上記応答通知部は、上記処理装置を用いて、上記共通コマンド取得部が取得した共通コマンドに対する応答として、上記応答変換部が生成した変換データを、上記制御装置に対して通知することを特徴とするデータ操作装置。 - 上記データ操作装置は、更に、コマンド判定部と、基本コマンド変換部とを有し、
上記コマンド判定部は、上記処理装置を用いて、上記共通コマンド取得部が取得した共通コマンドが、上記記憶装置の種別にかかわらず理解する基本コマンドに変換可能なコマンドか否かを判定し、
上記基本コマンド変換部は、上記共通コマンド取得部が取得した共通コマンドが上記基本コマンドに変換可能なコマンドであると、上記コマンド判定部が判定した場合に、上記処理装置を用いて、上記共通コマンド取得部が取得した共通コマンドを、上記基本コマンドに変換し、
上記拡張コマンド送信部は、上記共通コマンド取得部が取得した共通コマンドが基本コマンドであると、上記コマンド判定部が判定した場合に、上記送信装置を用いて、上記記憶装置に対して、上記基本コマンド変換部が変換した基本コマンドを送信し、上記共通コマンド取得部が取得した共通コマンドが基本コマンドに変換可能なコマンドでないと、上記コマンド判定部が判定した場合に、上記送信装置を用いて、上記記憶装置に対して、上記拡張コマンド変換部が変換した拡張コマンドを送信することを特徴とする請求項1に記載のデータ操作装置。 - 上記データ操作装置は、更に、データを記憶する内部記憶装置と、プロトコル記憶部とを有し、
上記プロトコル記憶部は、上記内部記憶装置を用いて、上記コマンド群判定部が判定する拡張コマンド群のそれぞれについて、上記記憶装置が記憶したデータを複数まとめて操作する単位である一つの操作ブロックに含まれるデータの数を表わすブロックサイズを記憶し、
上記拡張コマンド変換部は、上記処理装置を用いて、上記共通コマンド取得部が取得した共通コマンドが、上記記憶装置が記憶したデータを複数まとめて操作するよう指示する共通ブロック操作コマンドであるか否かを判定し、上記共通コマンドが上記共通ブロック操作コマンドであると判定した場合に、上記コマンド群判定部が判定した拡張コマンド群について上記プロトコル記憶部が記憶したブロックサイズに基づいて、上記共通コマンドを拡張コマンドに変換することを特徴とする請求項1または請求項2に記載のデータ操作装置。 - 上記拡張コマンド変換部は、上記処理装置を用いて、上記共通コマンド取得部が取得した共通コマンドが上記共通ブロック操作コマンドであると判定した場合に、上記共通コマンド取得部が取得した共通コマンドから、まとめて操作する対象となる複数の操作対象データを指示する操作指示データを取得し、上記コマンド群判定部が判定した拡張コマンド群について上記プロトコル記憶部が記憶したブロックサイズに基づいて、取得した操作指示データにより指示された複数の操作対象データを、上記操作対象データを含む操作ブロックごとに分割し、分割した操作ブロックごとの操作対象データのそれぞれについて、上記操作対象データを操作する拡張コマンドを生成することを特徴とする請求項3に記載のデータ操作装置。
- 上記プロトコル記憶部は、複数のテーブル記憶部と、有効フラグ記憶部と、テーブル更新部と、テーブル切替部とを有し、
上記複数のテーブル記憶部のそれぞれは、上記内部記憶装置を用いて、上記コマンド群判定部が判定する拡張コマンド群のそれぞれについて、上記記憶装置が理解する拡張コマンドと、上記ブロックサイズとを含むプロトコルテーブルを記憶し、
上記有効フラグ記憶部は、上記内部記憶装置を用いて、上記複数のテーブル記憶部のうち、いずれが有効であるかを表わす有効フラグを記憶し、
上記テーブル更新部は、上記処理装置を用いて、上記共通コマンド取得部が取得した共通コマンドが、プロトコルテーブルの更新を指示するコマンドである場合に、上記有効フラグ記憶部が記憶した有効フラグに基づいて、有効でないテーブル記憶部が記憶したプロトコルテーブルを更新し、
上記テーブル切替部は、上記処理装置を用いて、上記有効フラグ記憶部が記憶した有効フラグを更新して、上記テーブル更新部が更新したテーブル記憶部を有効にすることを特徴とする請求項3または請求項4に記載のデータ操作装置。 - 上記データ操作装置は、更に、データを記憶する不揮発性の不揮発内部記憶装置を有し、
上記プロトコル記憶部は、複数のマスター記憶部と、マスター有効フラグ記憶部と、テーブル更新部と、テーブル切替部と、テーブル記憶部とを有し、
上記複数のマスター記憶部のそれぞれは、上記不揮発内部記憶装置を用いて、上記コマンド群判定部が判定する拡張コマンド群のそれぞれについて、上記記憶装置が理解する拡張コマンドと、上記ブロックサイズとを含むプロトコルテーブルを記憶し、
上記マスター有効フラグ記憶部は、上記内部記憶装置を用いて、上記複数のマスター記憶部のうち、いずれが有効であるかを表わすマスター有効フラグを記憶し、
上記テーブル更新部は、上記処理装置を用いて、上記共通コマンド取得部が取得した共通コマンドが、プロトコルテーブルの更新を指示するコマンドである場合に、上記マスター有効フラグ記憶部が記憶したマスター有効フラグに基づいて、有効でないマスター記憶部が記憶したプロトコルテーブルを更新し、
上記テーブル切替部は、上記処理装置を用いて、上記マスター有効フラグ記憶部が記憶したマスター有効フラグを更新して、上記テーブル更新部が更新したマスター記憶部を有効にし、
上記テーブル記憶部は、上記内部記憶装置を用いて、上記マスター有効フラグ記憶部が記憶したマスター有効フラグに基づいて、有効なマスター記憶部が記憶したプロトコルテーブルを読み込んで、記憶することを特徴とする請求項3乃至請求項5のいずれかに記載のデータ操作装置。 - 上記データ操作装置は、更に、通信成否判定部を有し、
上記通信成否判定部は、上記処理装置を用いて、上記応答受信部が受信した応答データに基づいて、上記記憶装置との通信が成功したか失敗したかを判定し、
上記拡張コマンド変換部は、上記処理装置を用いて、上記記憶装置との通信が失敗したと上記通信成否判定部が判定した場合に、上記共通コマンドを、変換した拡張コマンドよりも一回の通信で送受信するデータ長が短い拡張コマンドに再変換し、
上記拡張コマンド送信部は、上記送信装置を用いて、上記記憶装置に対して、上記拡張コマンド変換部が再変換した拡張コマンドを送信することを特徴とする請求項1乃至請求項6のいずれかに記載のデータ操作装置。 - 上記データ操作装置は、更に、通信成否判定部を有し、
上記通信成否判定部は、上記処理装置を用いて、上記拡張コマンド変換部が変換した一以上の拡張コマンドのそれぞれについて、上記応答受信部が受信した応答データに基づいて、上記記憶装置との通信が成功したか失敗したかを判定し、
上記拡張コマンド変換部は、上記処理装置を用いて、上記拡張コマンド変換部が変換した一以上の拡張コマンドのいずれかについて、上記記憶装置との通信が失敗したと上記通信成否判定部が判定した場合に、上記記憶装置との通信が失敗したと上記通信成否判定部が判定した拡張コマンドについて、操作する操作対象データを複数に分割し、分割した操作対象データのそれぞれについて、拡張コマンドを生成することにより、通信に失敗した拡張コマンドを、複数の拡張コマンドに変換し、
上記拡張コマンド送信部は、上記送信装置を用いて、上記記憶装置に対して、上記拡張コマンド変換部が変換した複数の拡張コマンドを送信することを特徴とする請求項4乃至請求項6のいずれかに記載のデータ操作装置。 - 上記拡張コマンド変換部は、上記処理装置を用いて、上記共通コマンド取得部が取得した一つの共通コマンドを一以上の拡張コマンドに変換し、
上記応答変換部は、上記処理装置を用いて、上記拡張コマンド変換部が一つの共通コマンドを変換した一以上の拡張コマンドのそれぞれに対して上記応答受信部が受信した応答データに基づいて、一つの変換データを生成することを特徴とする請求項1乃至請求項8のいずれかに記載のデータ操作装置。 - 複数の記憶装置と、請求項1乃至請求項9のいずれかに記載のデータ操作装置とを有し、
上記複数の記憶装置は、それぞれ、複数の拡張コマンド群のうちいずれかの拡張コマンド群を理解することを特徴とするデータ操作システム。 - データを処理する処理装置を有するコンピュータが実行することにより、上記コンピュータが、請求項1乃至請求項9のいずれかに記載のデータ操作装置として機能することを特徴とするコンピュータプログラム。
- データを処理する処理装置と、記憶装置に対してデータを送信する送信装置と、上記記憶装置からデータを受信する受信装置とを有するデータ操作装置が、制御装置からの指示にしたがって上記記憶装置と通信し、上記記憶装置が記憶したデータを操作するデータ操作方法において、
上記処理装置が、上記制御装置からの指示を表わす共通コマンドを取得し、
上記送信装置が、上記記憶装置に対して、上記記憶装置の識別情報を送信するよう指示する識別取得コマンドを送信し、
上記受信装置が、上記送信装置が送信した識別取得コマンドに対する応答として、上記記憶装置が送信した識別情報を受信し、
上記処理装置が、上記受信装置が受信した識別情報に基づいて、複数の拡張コマンド群のなかから、上記記憶装置が理解する拡張コマンド群を判定し、
上記処理装置が、判定した拡張コマンド群に基づいて、取得した共通コマンドを、上記記憶装置が理解する拡張コマンドに変換し、
上記送信装置が、上記記憶装置に対して、上記処理装置が変換した拡張コマンドを送信し、
上記受信装置が、上記送信装置が送信した拡張コマンドに対する応答として、上記記憶装置が送信した応答データを受信し、
上記処理装置が、上記受信装置が受信した応答データのデータ形式を、所定の形式に変換して、変換データを生成し、
上記処理装置が、取得した共通コマンドに対する応答として、生成した変換データを、上記制御装置に対して通知することを特徴とするデータ操作方法。
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)
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)
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 | 株式会社デンソーウェーブ | データ伝送装置 |
-
2008
- 2008-10-29 JP JP2008278430A patent/JP5202230B2/ja not_active Expired - Fee Related
-
2009
- 2009-05-04 US US12/435,012 patent/US20100106873A1/en not_active Abandoned
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 |