新規作成 2005 年 12 月 20 日 修正 2010 年 12 月 1 日 Version 1.4.0
** 目次 ** 1. 概要... 1 1.1.TR3SDK...1 1.2. ライセンス...1 2. RFID について... 2 2.1.RFID 関係の JIS 定義...2 2.2.RFID システムの特徴...2 2.3.ISO15693 対応 IC チップメーカ...3 2.4. タグのメモリ構造...4 2.5. タグ状態遷移...5... 7 3.1.SDK の基本...7 3.1.1. 基本手順...7 3.1.2 パススルー関数について...7 3.2. 通信確立処理...9 3.2.1.Connect コマンド...10 3.2.2.SetActionMode コマンド...10 3.3. 上位 PC からの R/W の制御...15 A. コマンドモードでの制御...15 3.4.R/W に自動でタグを読み取らせる場合の制御...27 A. オートスキャンモードでの制御...27 B. 連続インベントリモードでの制御...31 C.RDLOOP モードでの制御...32 D.EAS モードでの制御...35 4. VB6.0 による TR3SDK のプログラミングについて... 36 4.1. プロジェクトの作成...36 4.2.TR3SDK への参照の追加...37 4.3.ResponseRFID イベントハンドラの追加...38 5. VB.NET による TR3SDK のプログラミングについて... 39 5.1. プロジェクトの作成...39 5.2.TR3SDK への参照の追加...40 5.3.ResponseRFID イベントハンドラの追加...41
1. 概要 1. 概要 本解説書は RFID システム開発を行う際に必要となる RFID の基本的な概念 及び TR3SDK を使用した R/W 制御 / タグリード ライトを行う為の基本的な処理手順を解説するものです また 同時に TR3SDK 関数一覧に記載されている各用語についても随時解説を行います なお 弊社製 R/W TR3 シリーズは 国際標準規格 ISO/IEC15693 及び ISO/IEC18000-3 (Mode1) に対応した製品です それ以外の規格のタグには対応しておりませんのでご注意くださ い 1.1.TR3SDK TR3SDK はタカヤ株式会社が開発 販売する RFID リーダ ライタ TR3 シリーズ に対応するアプリケーションを開発して頂くための開発ツールとサンプルプログラムです そのため 他社製品上での動作は保証していません また サポートも行っておりませんのでご了解下さい 1.2. ライセンス TR3SDK はお客様自身でソフトウェアを開発される場合にご活用頂けます なお TR3SDK は開発用ライセンスです 開発マシン 1 台に1ユーザのライセンスが必要になりますので 開発台数分を必ずご購入下さい 一方 SDK を利用して開発されたアプリケーション ( オブジェクト ) は再配布を禁止するものではありません ライセンスの詳細については 別紙 ソフトウェア使用許諾書 SDK.pdf を参照ください 1
2. RFID について 2. RFID について RFID の定義 及び RFID システム開発を行う際に必要となる基本概念を解説します 2.1.RFID 関係の JIS 定義 (1)RFID 誘導電磁界または電波によって非接触で半導体メモリのデータを読み出し書込みの為の近距離通信を行うものの総称 (2)RF タグ半導体メモリを内蔵し 誘導電磁界または電波によって書込まれたデータを保持して非接触で読出し可能な情報媒体 (3)R/W( リーダ / ライタ ) RF タグのデータの書込みと読出しをする装置 通常 アンテナと制御装置で構成される (4) アンテナ R/W の一部で RF タグと物理的に誘導電磁界または電波の送受信を行う導体素子放射部分 ( 空間結合素子部分 ) 2.2.RFID システムの特徴 (1) 非接触通信距離は 1cm~1m 程度 (2) 被覆可能遮蔽物 ( 金属除く ) がタグと R/W の間に入っても認識できる ただし 周波数により水分を含む遮蔽物の影響を受ける場合がある (3) 小型 薄型貼付け可能なので商品や製品の幅が広がる (4) ユニーク ID(UID) チップ単体に個別の識別 ID を持つ為 個別に管理可能 (5) 環境 耐久性汚れ振動に強く 経年変化が少ない為 長期使用に耐えられる (6) 書き換え可能一度書込んだ情報に新たな情報の追加や書換えが可能 (7) 移動中移動していても読み書きが可能 (8) 複数同時読取複数のタグを一度に読み取ることが可能 2
2. RFID について 2.3.ISO15693 対応 IC チップメーカ TR3SDK がサポートしている IC チップのメーカーは表 2-1 の通りです RF タグチップメーカー RF タグ種別 容量 ( ブロック ) Texas Instruments Tag-it HF-I Plus 64 Tag-it HF-I Standard 8 Tag-it HF-I Pro 8 NXP Semiconductors I-Code SLI 28 I-Code SLIX 28 I-Code SLI-S 40 Infineon Technologies SRF55V**P - SRF55V10P 125 SRF55V02P 29 My-d Light SRF55V01P 13 富士通 MB89R116 250 MB89R118 250 表 2-1 IC チップのメーカー 3
2. RFID について 2.4. タグのメモリ構造 以下のタグメモリ構造体は TI 製 Tag-it HF-I のメモリ構造となります 図 2-1 (1)UID 各 IC タグを識別する 64bit の独自識別子 UID は以下の形式に従い IC 製造者が永続的に設定する 図 2-2 (2)AFI( アプリケーションファミリ識別子 ) AFI は R/W が目標にするアプリケーションタイプを表し 電界内に存在する全てのタグの中から要求されている適用基準に適合するタグだけを抽出する為に使用される 具体的な使用方法は 3.3.A. コマンドモードでの制御 にて解説します (3)Lock Bits そのブロックがロックされているかどうかを表します 具体的な使用方法は 3.3.A コマンドモードでの制御 にて解説します 4
2. RFID について 2.5. タグ状態遷移 ISO/IEC15693 の規格では 以下の様に状態遷移を行います 図 2-3 (1) 電源 OFF タグが電界外に存在する状態を表します 電界外に存在する場合 電源 OFF となり 交信することはできません (2) レディ (Ready) タグが電界内に入った直後の状態を表します タグは電磁誘導により起電し 電源 ON となります この状態であれば R/W からの通信コマンドに応答します (3) 静止 (Quiet) 電源 ON 状態であるが R/W からの通信コマンドに対して 応答しない状態を表します レディ状態 にあるタグに対して 静止状態遷移コマンド を送信することで 静止状態 へ遷移させることが可能です 5
2. RFID について 以下の方法により 静止状態 から レディ状態 へ遷移させることが可能です 方法 1. レディ状態遷移コマンド を送信する 方法 2. 一度電界外へタグを移動して 電源 OFF 状態 へ遷移後 再度 電界内へタグを移動する 方法 3. R/W に対して 送信信号制御コマンド (OFF) を送信し 一度 R/W の電波出力を停止し 再度 送信信号制御コマンド (ON) を送信して 電波出力を開始する タグは 上記方法 2 と同様の状態遷移を行い レディ状態 へ遷移します (4) 選択 R/W からの通信コマンド ( 選択状態指定あり ) に対して 応答する状態を表します (R/W からの通信コマンド ( 選択状態指定あり ) に対しては 選択状態 にあるタグのみが応答し レディ状態 のタグは応答しません ) レディ状態 にあるタグに対して 選択状態遷移コマンド を送信することで 選択状態 へ遷移させることが可能です 選択状態 への遷移は 電界内に複数枚のタグが存在する場合において 特定のタグ ( 単一 ) のみに応答させることを目的としています ただし 弊社においては 上記目的達成方法として 選択状態 への遷移ではなく リードコ マンド / ライトコマンド送信時に UID を指定したコマンド送信を行う方法を推奨します レディ状態 のタグの中からリード 及びライトを希望するタグの UID を指定してコマンド送信 を行うことにより 特定のタグのみを操作することが可能となります ( 選択状態へ遷移させる必要はありません ) 表 2-2 実際のコマンド名 6
TR3SDK を使用した R/W 制御 及びタグのリード / ライトについて基本的な制御 / 処理方法を解説します なお この章で説明する各コマンドの引数は TR3-SDK-NET2003 のものです 実際のコマンドの引数は 別紙 関数一覧をご参照ください 3.1.SDK の基本 3.1.1. 基本手順 TR3-SDK は R/W からの応答があると ResponseRFID イベントを発生させます そのため 基本的手順は下記のようになります < 手順 > 1Inventory 関数等で R/W へコマンドを送信する 2ResponseRFID イベントをハンドルし UID 等の情報を取得する 自動読取モードの場合は 1は不要です なお ResponseRFID イベントのパラメータに格納されている情報は コマンドごとに異なります 別紙 関数一覧をご参照ください 3.1.2 パススルー関数について TR3-SDK にはバイナリデータを R/W やタグへ直接送信する関数が用意されています SDK に実装されていないコマンドの送信には下表の関数を使用します 関数名 SendData 関数 ThroughCommand 関数 1 用途 R/W に直接バイナリデータを送信する 例 )SDK に実装されていないコマンドを送信したい場合 タグに直接バイナリデータを送信する 例 ) タグメーカ独自のカスタムコマンドを送信したい場合 1 R/W の製品シリーズが TRF シリーズで かつ TR3-SDK が下表のバージョンの場合のみ 使用可能です 7
製品 TR3-SDK-VB6 TR3-SDK-NET2003 TR3-SDK-NET2005 TR3-SDK-PDA TR3-SDK-EVC 表 3-1 ThrougCommand 関数対応表 対応バージョン ver 3.2.0 以降未対応 ver 2.2.0 以降 ver 2.3.0 以降未対応 通信フォーマットの詳細 送信するコマンドと応答のフォーマットについて より詳細な情報が必要であれば R/W 付属の CD に収められている TR3 通信プロトコル説明書 をご参照ください 8
3.2. 通信確立処理 R/W の制御 及びタグのリード / ライトを行う為には アプリケーションと R/W 間にて通信確立処 理を行う必要があり 必要な作業としては 以下 2 点となります (1) 通信ポートオープン Connect コマンドを用いて R/W を接続している通信ポートのオープン処理を行います (2)R/W 動作モード設定 SetActionMode コマンドを用いて R/W の動作モードを設定します 通信確立処理時の注意点 R/W が接続されているポート以外のポートでもオープンすることが可能です そのため R/W との通信が確立されたかを調べるには 一度コマンドの送受信を行う必要があ ります ( 上図では SetActionMode で確認しています ) ポートオープンの際に誤った通信速度を指定した場合は ポートのオープンには成功しますが コマンドはタイムアウトします 9
3.2.1.Connect コマンド 通信ポートのオープン処理を行う為のコマンドです TR3SDK コマンド名 コマンド引数 対象 Connect コマンド ( 通信ポートオープン ) 1 通信ポート番号 2 通信速度 9600bps or 19200bps or 38400bps( ) PC 表 3-4 Connect コマンドの引数 (TR3-SDK-NET-2003 版 ) 1 通信ポート番号 R/W が接続されているポートを設定します 2 通信速度 R/W に設定されている通信速度を設定します 通信速度 38400bps は R/W の ROM バージョンが 1.21 以降の場合にのみ有効です 3.2.2.SetActionMode コマンド R/W の動作モード設定を行う為のコマンドです TR3SDK コマンド名 コマンド引数 対象 SetActionMode コマンド ( 動作モードの設定 ) 1 動作モード 2 通信速度 3アンチコリジョン設定 4 連続読み取り設定 5ブザー音設定 6 取得データ設定 7ポーリング時間の設定 8EEPROM 書き込み有無設定 R/W 表 3-5 SetActionMode コマンドの引数 (TR3-SDK-NET-2003 版 ) 1 動作モード [ コマンドモード ] 上位 PC から送信されるコマンドに従い処理を実行するモードです コマンドモードの R/W は 上位コマンド制御以外では IC タグのスキャンを行いません 詳細は 3.3.A コマンドモードでの制御 にて解説します 10
[ オートスキャンモード ] 上位 PC から R/W にコマンドを送信することなく R/W が単独でタグデータ読取状態となり 電界内に存在するタグのデータを受信するモードです タグのデータを受信すると ResponseRFID イベントが発生します なお このモードで受信可能なデータは 専用の書込コマンド (SimpleWrite コマンド ) で書き込まれた独自フォーマットのデータとなります 詳細は 3.4.A オートスキャンモードでの制御 にて解説します [ 連続インベントリモード ] タグの UID のみを連続で受信するモードです オートスキャンモードと同様に上位 PC から R/W にコマンドを送信することなく R/W が単独でタグ UID データ読取状態となり 電界内に存在するタグの UIDを受信します また タグの UID を受信すると ResponseRFID イベントが発生します 詳細は 3.4.B 連続インベントリモードでの制御 にて解説します [RDLOOP モード ] タグの UID と指定バイト範囲のデータを受信するモードです オートスキャンモードと同様に上位 PC から R/W にコマンドを送信することなく R/W が単独でタグデータ読取状態となり 電界内に存在するタグの UID とデータを受信します また タグの UID を受信すると ResponseRFID イベントが発生します 詳細は 3.4.C RDLOOP モードでの制御 にて解説します [ トリガーモード ] 弊社製品ハンドヘルドアンテナ TR3-HA101 TR3-HA201 に装備されているプッシュロックタイプスイッチを押している間 ( トリガー信号が ON の間 ) のみ オートスキャンモードと同様の読み取り処理を行うモードです 受信可能なデータは オートスキャンモード同様 専用の書込コマンド (SimpleWrite コマンド ) で書き込まれた独自フォーマットのデータとなります [ ポーリングモード ] 指定した時間だけオートスキャンモードと同様の動作を行うモードです 指定時間経過後は コマンドモードとなります 受信可能なデータは オートスキャンモード同様 専用の書込コマンド (SimpleWrite コマンド ) で書き込まれた独自フォーマットのデータとなります [EAS モード ] タグの AFI を利用し特定の AFI 値を持つタグを検出するモードです 11
オートスキャンモードと同様に上位 PC から R/W にコマンドを送信することなく R/W が単独でタグデータ読取状態となり 電界内に存在するタグを検出します また タグを検出すると ResponseRFID イベントが発生します 詳細は 3.4.D EAS モードでの制御 にて解説します 2 通信速度 R/W 内の通信速度を設定します 通信速度 38400bps は R/W の ROM バージョンが 1.21 以降の場合にのみ有効です 3 アンチコリジョン設定 電界内において 同時に複数のタグが存在する可能性がある場合 複数同時読取 を設定します その他の場合 単独読取 を設定します 本設定値は コマンドモード以外の全てのモード ( オートスキャンモード等 ) の動作に以下のよう な影響を与えます 設定単独読取複数同時読取 概要複数のタグが存在する場合 すべてのタグを読み取ることは困難です 複数のタグが存在していても すべてのタグを読み取ることができます 処理速度について 電界内のタグ件数が 1 件の場合 単独読取 複数同時読取 のどちらの場合も 正常なデータ受信が可能となりますが 単独読取 設定のほうが上位 PC から見た 処理速度は速くなります 4 連続読取設定 コマンドモード以外の動作モードの場合 R/W は 単独で読取処理を行い 上位 PC へデータ送 信を行いますが その際 一度処理を行ったタグに対する処理を本設定にて選択します 設定連続読取設定シングル読取設定 概要一度処理を行ったタグについても連続で読取処理を継続します 一度だけ読取処理を行います 12
シングル読取りの仕組み (R/W 内部処理 ) R/W は 一度読取処理を行ったタグに対し 静止状態遷移コマンド (StayQuiet) を 送信し 処理済タグを 静止状態 へ遷移させます 従って 処理済タグが電界内に留まっている間 再度処理を行うことはありません ただし 処理済タグであっても一度電界外へ移動し 再度電界内に戻ってきた場合には タグが レディ状態 へ遷移する為 読取処理を行うことになります 5 ブザー音設定 コマンドモード以外の動作モードの場合 R/W は 単独で読取処理を行い 上位 PC へデータ 送信を行いますが その際 R/W 内のブザー鳴動を行うか否かを設定します 6 取得データ設定オートスキャンモード トリガーモード ポーリングモードの場合 R/W は 単独で読取処理を行い 上位 PC へデータ送信を行いますが 上位 PC への送信データに UID を含めるか否かを設定します コマンドモード 連続インベントリモード使用時は 本設定は動作に影響しません 設定 UID+ユーザデータユーザデータのみ 概要ユーザデータだけでなく UID も上位の PC へ送信します タグのユーザデータのみ上位の PC へ送信します 7 ポーリング時間の設定 ポーリングモード時の待機時間 ( 200ms) を設定します 有効範囲は 0~65535 までとなります 8EEPROM 書込有無設定 上記 1~6 にて設定した内容を R/W の EEPROM に書込むか否かを設定します (7 は書き込みません ) 設定未書き込み 書き込み 概要上記 1~6にて設定した内容は 一度電源を OFF にすると 破棄されます 上記 1~6にて設定した内容は 再度動作モード設定が行われるまで有効となります 13
注意点 3 4 5 6の設定は オートスキャンモードや連続インベントリモードのように R/W が単独で読取り処理を行うモード使用時に有効となります コマンドモード使用時は これらの設定は動作に影響しません ( 例外 : Inventory16slot Inventory2 SimpleRead ) 14
3.3. 上位 PC からの R/W の制御 R/W を上位の PC から制御する場合の基本的なタグのリード / ライト処理について解説します なお 以下の内容は TR3SDK を使用した処理手順の一例であり 必ずしも最適な処理手順であるとは限りません A. コマンドモードでの制御 上位の PC から制御する場合は コマンドモードを使用します A.1. タグ UID の取得 Inventory コマンド 電界内において 同時に存在するタグ件数が 1 件の場合 Inventory コマンド を使用します TR3SDK コマンド名 コマンド引数 対象 Inventory コマンド 1アンチコリジョン設定 タグ (UID 取得 ) 2AFI 指定の有無 表 3-6 Inventory コマンドの引数 (TR3-SDK-NET-2003 版 ) 1アンチコリジョン設定電界内に同時に存在する可能性のあるタグ件数に応じて設定を行います 電界内において 同時に複数のタグが存在する可能性がある場合 複数同時読取 を設定します その他の場合 単独読取 を設定します ただし 弊社においては Inventory コマンドの 複数同時読取設定 は推奨しません 複数同時読取設定 を必要とするアプリケーションを構築する場合は Inventory2 コマンド の 使用を推奨します 2AFI 指定 R/W の AFI 値と同じ AFI 値を持つタグのみを処理対象としたい場合に 指定する を設定しま す (R/W への AFI 値設定は SetAFI コマンド にて行います ) 15
A.2. タグ UID の取得 Inventory2 コマンド 電界内において 同時に複数件のタグが存在する場合 Inventory2 コマンド 及び GetUID コマンド を使用します TR3SDK コマンド名 コマンド引数 対象 Inventory2 マンド (UID 取得 ) 1UID 取得設定取得した UID 数のみを取得する or UID 数 及び UID を取得する タグ GetUID コマンド (R/W が保持している UID 取得 ) 2R/W 内保持番号 R/W 内にて保持中の各 UID に割り振られた番号 表 3-7 Inventory2 コマンドの引数 (TR3-SDK-NET-2003 版 ) R/W 1Inventory2 コマンド UID 取得設定 Inventory2 コマンドを R/W へ送信した場合 R/W は 先ず電界内に存在する全てのタグの UID を取得し R/W 内に保持します その後 上位 PC へデータ送信を行います 取得した UID 数のみを取得する を設定している場合取得 UID 数のみが上位 PC へ送信されます UID 数 及び UID を取得する を設定している場合取得 UID 数 及び取得した UID データ全件を上位 PC へ送信します 2GetUID コマンド R/W 保持番号 R/W が内部的に保持している UID を保持番号を指定して取得します 電界内において 同時に複数件のタグが存在する場合の UID 取得方法としては 上記処理フロ ーのように 先ず Inventory2 コマンドを使用して UID を R/W 内に保持し その後 UID 取得件数 回 GetUID コマンド を使用して 順次 UID の取得を行う方法が挙げられます 16
A.3. タグユーザーデータの取得 ReadSingleBlock コマンド 1. 電界内に同時に存在するタグ件数が 1 件の場合 A.1. タグ UID の取得 Inventory コマンド にて示した処理の UID 取得成功直後に ReadSingleBlock コマンド (UID 指定 ) を使用し タグユーザーデータの読取り処理を行います TR3SDK コマンド名 コマンド引数 対象 ReadSingleBlock コマンド ( タグユーザーデータ取得 ) 1ブロック番号指定 2 読み込むタグの UID 設定 3ブロックセキュリティステータス設定 4UID タグ 表 3-8 ReadSingleBlock コマンドの引数 (TR3-SDK-NET-2003 版 ) 1 ブロック番号指定 読み込み対象のブロック番号を指定します 2 読み込むタグの UID 指定特定のタグのみを処理対象としたい場合 指定する または カレント UID を使用する を設定します 指定する と設定した場合 4で指定した UID のタグを対象とします カレント UID を使用する と設定した場合 R/W のカレント UID に設定された UID のタグを対象とします カレント UID は Inventory コマンド または UID を指定したコマンドを R/W が受信した際に設定されます 3 ブロックセキュリティステータス設定 1 にて指定したブロックがロック情報を取得するか否かを設定します ロック情報は 0 が未 ロックで 1 がロック済みを表しています ブロックのロック ロック済のブロックは ReadOnly となっており 書込みを行うことはできません また 一度ロックしたブロックは 未ロック状態に戻すことはできません 17
4UID 2にて 指定する を選択した場合のみ 設定して下さい それ以外を選択している場合はこの設定を省略するか NULL を設定して下さい UID は下位バイトからバイト配列に格納して下さい 2. 電界内に同時に存在するタグ件数が複数件の場合 電界内において 同時に複数件のタグが存在し 存在するタグ全件のデータを リードする場合 以下のように処理を行います A.2. タグ UID の取得 Inventory2 コマンド にて示した処理の UID 取得成功直後に ReadSingleBlock コマンド (UID 指定 ) を使用し タグユーザーデータの読取り処理を行いま す 3. 選択状態 の使用以下に示すように タグを 選択状態 へ遷移させて処理する方法を用いても ReadSingleBlock コマンド (UID 指定 ) と同様の処理を行うことが可能です しかし ReadSingleBlock コマンド (UID 指定 ) と比較してコマンドの送信回数が増え 処理速度低下の要因となる為 弊社では推奨していません SelectTag コマンド タグを選択状態へ遷移させる為のコマンド 18
A.3-2. タグユーザーデータの取得 ReadBytes コマンド 1. ブロック ( 固定長 ) のリード処理を行う ReadSingleBlock コマンド に対し 複数ブロック ( 可変 長 ) のリード処理が可能な ReadBytes コマンド も TR3SDK 内に準備されています TR3SDK コマンド名 コマンド引数 対象 ReadBytes コマンド ( タグユーザーデータ取得 ) 1 開始ブロック番号指定 2 読込みバイト数指定 3 読込むタグの UID 設定 4UID タグ 表 3-9 ReadBytes コマンドの引数 (TR3-SDK-NET-2003 版 ) 1 開始ブロック番号指定 読み込みを開始するブロック番号を指定します 2 読込みバイト数指定読込みを行うバイト数を指定します 一度の ReadBytes コマンド で読み込める最大バイト数は下記の通りです タグユーザメモリ領域が 112 バイトの場合 112 バイト タグユーザメモリ領域が 256 バイトの場合 254 バイト 3 読み込むタグの UID 指定特定のタグのみを処理対象としたい場合 指定する または カレント UID を使用する を設定します 指定する と設定した場合 4に UID を設定します カレント UID を使用する と設定した場合 R/W のカレント UID に設定された UID が指定されます カレント UID は Inventory コマンド または UID を指定したコマンドを R/W が受信した際に設定されます 4UID 3にて 指定する を選択した場合のみ 設定して下さい それ以外を選択している場合はこの設定を省略するか NULL を設定して下さい UID は下位バイトからバイト配列に格納して下さい 19
A.4. タグユーザーデータの書込み WriteSingleBlock コマンド 1. 電界内に同時に存在するタグ件数が 1 件の場合 3.3.A.1. タグ UID の取得 Inventory コマンド にて示した処理の UID 取得成功直後に WriteSingleBlock コマンド (UID 指定 ) を使用し タグユーザーデータの書込み処理を行います TR3SDK コマンド名 コマンド引数 対象 WriteSingleBlock コマンド ( タグユーザーデータ書き込み ) 1ブロック番号指定 2 書き込みデータ 3 書き込みを行うタグの UID 設定 4タグの種類 5UID タグ 表 3-10 WriteSingleBlock コマンドの引数 (TR3-SDK-NET-2003 版 ) 1 ブロック番号指定 書込みを行うブロック番号を指定します 2 書込みデータ タグに書込むデータを指定します 書込みデータは文字列またはバイナリデータの どちらかを指定します 1 ブロックに書込みきれないデータは切り捨てられます 3 書込みを行うタグの UID 設定特定のタグのみを処理対象としたい場合 指定する または カレント UID を使用する を設定します 指定する と設定した場合 4に UID を設定します カレント UID を使用する と設定した場合 R/W のカレント UID に設定された UID が指定されます カレント UID は Inventory コマンド または UID を指定したコマンドを R/W が受信した際に設定されます 20
4タグの種類タグの種類を指定します TAG-IT HF-I の場合 TAG-IT HF-I を それ以外 (i-code SLI, my-d) の場合は Other を指定します 5UID 3にて 指定する を選択した場合のみ 設定して下さい それ以外を選択している場合はこの設定を省略するか NULL を設定して下さい UID は下位バイトからバイト配列に格納して下さい 2. 電界内に同時に存在するタグ件数が複数件の場合 電界内において 同時に複数件のタグが存在し 存在するタグ全件へデータを ライトする場合 以下のように処理を行います A.2. タグ UID の取得 Inventory2 コマンド にて示した処理の UID 取得成功直後に WriteSingleBlock コマンド (UID 指定 ) を使用し タグユーザーデータの書込み処理を行いま す 21
A.4.2. タグユーザーデータの書込み WriteBytes コマンド 1. ブロック ( 固定長 ) のライト処理を行う WriteSingleBlock コマンド に対し 複数ブロック ( 可変 長 ) のライト処理が可能な WriteBytes コマンド も TR3SDK 内に準備されています TR3SDK コマンド名 コマンド引数 対象 WriteBytes コマンド ( タグユーザーデータ書き込み ) 1 開始ブロック番号指定 2 書き込みデータ 3 書き込みを行うタグの UID 設定 4UID タグ 表 3-11 WriteBytes コマンドの引数 (TR3-SDK-NET-2003 版 ) 1 開始ブロック番号指定 書込みを開始するブロック番号を指定します 2 書込みデータタグに書込むデータを指定します 書込みデータは文字列またはバイナリデータのどちらかで指定します 一度に書込める最大バイト数は タグユーザメモリ領域が 112 バイトの場合 112 バイト タグユーザメモリ領域が 256 バイトの場合 250 バイトとなっています 3 書込みを行うタグの UID 指定特定のタグのみを処理対象としたい場合 指定する または カレント UID を使用する を設定します 指定する と設定した場合 4に UID を設定します カレント UID を使用する と設定した場合 R/W のカレント UID に設定された UID が指定されます カレント UID は Inventory コマンド または UID を指定したコマンドを R/W が受信した際に設定されます 4UID 3にて 指定する を選択した場合のみ 設定して下さい それ以外を選択している場合はこの設定を省略するか NULL を設定します UID は下位バイトからバイト配列に格納して下さい 22
A.5.AFI の使用方法 R/W に設定された AFI と同一の AFI を持つタグのみ応答させる場合に使用します 以下 AFI を用いた Inventory コマンド 発行時の処理を示します TR3SDK コマンド名 コマンド引数 対象 WriteAFI コマンド 1AFI 指定 タグ ( タグへの AFI の書き込み ) 2 書き込みを行うタグの UID 設定 3タグの種類 4UID SetAFI コマンド (R/W への AFI の設定 ) 5AFI 指定 R/W 表 3-12 AFI に関するコマンドの引数 (TR3-SDK-NET-2003 版 ) 1WriteAFI コマンド - AFI 指定 タグに書込む AFI コードを設定します 2WriteAFI コマンド - 書込みを行うタグの UID 設定特定のタグのみを処理対象としたい場合 指定する または カレント UID を使用する を設定します 指定する と設定した場合 5に UID を設定します カレント UID を使用する と設定した場合 R/W のカレント UID に設定された UID が指定されます カレント UID は Inventory コマンド または UID を指定したコマンドを R/W が受信した際に設定されます 3WriteAFI コマンド - タグの種類タグの種類を指定します TAG-IT HF-I の場合 TAG-IT HF-I をそれ以外 (i-code SLI, my-d) の場合は Other を指定します 4WreiteAFI コマンド - UID 2 にて 指定する を選択した場合のみ 設定して下さい それ以外を選択している場合はこ の設定を省略するか NULL を設定して下さい 23
UID は下位バイトからバイト配列に格納して下さい 5SetAFI コマンド - AFI 指定 R/W に設定する AFI を指定します この設定を行うことにより Inventory コマンド 発行時に R/W 側の AFI コードをタグに知らせ タグ側で応答するか否かを判断することが可能となります この処理を有効にするためには Inventory コマンド 発行時に AFI フラグを ON にする必要があります 但し タグ側の仕様が AFI をサポートするときのみ有効です 24
A.6.LockBlock の使用方法 タグの AFI, DSFID, UserMemory をロックし ReadOnly する場合に使用します タグの初期のロック状態を下図に示します TR3SDK コマンド名 コマンド引数 対象 LockBlock コマンド ( ブロックのロック ) 1ブロック番号指定 2 読込むタグの UID 設定 3UID タグ 表 3-13 LockBlock コマンドの引数 (TR3-SDK-NET-2003 版 ) 1 ブロック番号指定 読み込みを行うブロック番号を指定します 2 読み込むタグの UID 指定特定のタグのみを処理対象としたい場合 指定する または カレント UID を使用する を設定します 指定する と設定した場合 (4) に UID を設定します カレント UID を使用する と設定した場合 R/W のカレント UID に設定された UID が指定されます カレント UID は Inventory コマンド または UID を指定したコマンドを R/W が受信した際に設定されます 25
3UID 2にて 指定する を選択した場合のみ 設定して下さい それ以外を選択している場合はこの設定を省略するか NULL を設定します UID は下位バイトからバイト配列に格納して下さい す 前述の LockBlock コマンド を使用して 1 ブロック目をロックした場合 タグは以下のようになりま UserMemory のロック情報は ReadSingleBlock コマンド や GetMBlockSecSt で取得することが可能です AFI や DSFID のロックは それぞれ LockAFI LockDSFID を使用してください ( 詳細は SDK 付属の関数一覧を参照 ) AFI と DSFID のロック AFI と DSFID のロック情報は取得する方法がありません ただし 対象のタグが Tag-it HF-I の場合のみ 下記の方法でロックの有無を確認することができます 方法 :WriteAFI WriteDSFID でロック情報の変更を試み 応答を確認する 結果 : 下記の NAK 応答があれば ロックされている {02 00 31 02 05 12 03 4F 0D} 具体的には ResponseRFID の e.sendcommand に NAK がセットされ e.inputdata の 4 バイト 目に 0x05 が 5 バイト目に 0x12 がそれぞれセットされる 26
3.4.R/W に自動でタグを読み取らせる場合の制御 R/W にて自動でタグを読み取る場合の基本的な処理について解説します なお 以下の内容は TR3SDK を使用した処理手順の一例であり 任意のアプリケーション開発を行う際 必ずしも最適な手段であるとは限りません A. オートスキャンモードでの制御 R/W をオートスキャンモードに設定した場合の基本的な処理について解説します オートスキャンモードでは 事前にタグへ書き込んだデータを R/W が自動で読み取るモードです 動作モードを設定する際のオプションによっては データと同時に UID も取得することが可能です A.1. タグへの書込みオートスキャンモードでタグの読取り処理を行うためには 事前に SimpleWrite コマンド でタグにデータを書き込む必要があります それ以外のコマンドで書込みが行われているタグは無視されます ( 一部の例外を除く ) TR3SDK コマンド名 コマンド引数 対象 SimpleWrite コマンド ( 可変長データ書き込み ) 1 書き込みデータ タグ 表 3-14 SimpleWrite コマンドの引数 (TR3-SDK-NET-2003 版 ) 1 書込みデータタグに書込むデータを指定します 書込みデータは文字列またはバイナリデータのどちらかで指定します WriteSingleBlock コマンド と違い 可変長のデータを書込むことが可能です SimpleWrite コマンド の最大書込みバイト数は下記の通りです タグユーザメモリ領域が 112 バイトの場合 106 バイト タグユーザメモリ領域が 256 バイトの場合 249 バイト 27
A.2. タグ UID 及びタグユーザーデータの取得 シングル読取り 上位 PC から R/W にコマンドを送信することなく R/W が単独でタグデータ読取状態となり 電界内に存在するタグのデータを受信します タグデータを受信すると R/W は受信データを上位 PC へ送信します 一度読取りを行ったタグは静止状態となるため 電界内に留まっている間に再度読取りが行われることはありません 28
A.3. タグ UID 及びタグユーザーデータの取得 連続読取り A.2. タグ UID 及びタグユーザーデータの取得 シングル読取り と同様に上位 PC から R/W にコマンドを送信することなく R/W が単独でタグデータ読取状態となり 電界内に存在するタグのデータを受信し 受信データを上位 PC へ送信します シングル読取りの場合とは異なり 一度処理したタグについても連続で処理を継続します タグが電界内に存在する間 永続的に同一タグデータの受信が発生します 29
A.4.SimpleRead コマンドを使用した読取り処理コマンドモードにて SimpleRead コマンド を使用すると オートスキャンモードと同様の読み取り処理を行うことができます アンチコリジョンの有無や 読み取りモード ( シングル読み取り or 連続読み取り ) 等の設定は 動作モード設定時の設定が使用されます TR3SDK コマンド名 コマンド引数 対象 SimpleRead コマンド ( タグユーザーデータ (+UID) 取得 ) なし タグ 表 3-15 SimpleRead コマンドの引数 (TR3-SDK-NET-2003 版 ) 30
B. 連続インベントリモードでの制御 R/W を連続インベントリモードに設定した場合の基本的な処理について解説します オートスキャンモードと同様に 上位 PC から R/W にコマンドを送信することなく R/W が単独でタ グ UID データ読取状態となり 電界内に存在するタグの UID を受信します タグの UID を受信すると R/W は受信データを上位 PC へ送信します オートスキャンモードと違い フォーマットの指定はなく ISO15693 に準拠したタグならば, UID を読取ることが可能です コマンドモードで連続インベントリモードと同様の処理を行うには 3.3.A.2. タグ UID の取得 Inventory2 コマンド にて記載した処理手順を用い 連続でタグの UID を読み取ります 31
C.RDLOOP モードでの制御 R/W を連続 RDLOOP モードに設定した場合の基本的な処理について解説します C.1. 処理概要 オートスキャンモードと同様に 上位 PC から R/W にコマンドを送信することなく R/W が単独でタグデータ読取状態となり 電界内に存在するタグの UID と指定した範囲のデータを受信します ( 範囲の指定方法は次ページにて解説 ) タグの UID を受信すると R/W は受信データを上位 PC へ送信します オートスキャンモードと異なり 弊社独自の形式でデータを書き込んでいなくても 読取ることが できます 32
C.2. 読取り範囲の設定 RDLOOP モードでは 読み出しスタートブロックから 読み出しデータ長で指定した バイト数だけ読取ります ただし このデータの読取り範囲は あらかじめ設定しておく必要があります 設定には弊社製 R/W TR3 シリーズに付属している TR3 モニタープログラムを使用してください 33
以下のバージョンでは SetRDLOOPRange 関数を使用することで プログラムから RDLOOP の 読み取り範囲を変更できるようになりました 製品 TR3-SDK-VB6 TR3-SDK-NET2003 TR3-SDK-NET2005 TR3-SDK-PDA TR3-SDK-EVC 表 3-16 SetRDLOOPRange 関数対応表 対応バージョン ver 3.1.0 以降未対応 ver 2.1.0 以降 1 下記未対応 1 製品内の TR3-SDK-NET2005 PDA は ver.2.2.0 以降対応しています TR3-SDK-NET2003 PDA は未対応ですのでご注意ください なお いずれも R/W の ROM バージョンが 1.35 以上の場合に限ります 34
D.EAS モードでの制御 R/W を EAS モードに設定した場合の基本的な処理について解説します EAS モードでは R/W に SetAFI コマンドで設定してある AFI 値と同様の AFI 値をもつタグを読 み取った場合 上位の PC に OK という文字列を送信します この時の ResponseRFID は e.sendcommand に SimpleRead がセットされ e.textdata に OK という文字列がセットされます なお EAS モードは SDK が下記のバージョン以降の場合のみ使用可能です 製品 TR3-SDK-VB6 TR3-SDK-NET2003 TR3-SDK-NET2005 TR3-SDK-PDA TR3-SDK-EVC 表 3-17 EAS モード対応表 対応バージョン ver 3.0.0 以降 ver 2.0.0 以降 ver 2.0.0 以降 ver 2.0.0 以降未対応 35
4. VB6.0 による TR3SDK のプログラミングについて 4. VB6.0 による TR3SDK のプログラミングについて ここでは Microsoft Visual Studio VB6.0 と TR3-SDK-VB6 を用いて Window アプリケーションを 作成する場合の開発方法を紹介します 4.1. プロジェクトの作成 アプリケーションを作成するために以下のステップに従ってください 1Microsoft Visual Studio 6.0 を実行します 2 新しいプロジェクトで標準 EXE を選択します 36
4. VB6.0 による TR3SDK のプログラミングについて 4.2.TR3SDK への参照の追加 1 メニューから プロジェクト 参照設定 を選択します 2 一覧よりシステムフォルダ内の TR3COM.exe または TR3Socket.exe を選択します 37
4. VB6.0 による TR3SDK のプログラミングについて 4.3.ResponseRFID イベントハンドラの追加 1 コード上で WithEvents 句を指定して RFIDControl 型のオブジェクトを作成します 2 クラス名コンボボックスから 1 で宣言したオブジェクトを選択し イベント名コンボボックスから ResponseRFIDBinary( または ResponseRFID) を選択してください 3 作成されたプロシージャにイベントの処理を記述してください 38
5. VB.NET による TR3SDK のプログラミングについて 5. VB.NET による TR3SDK のプログラミングについて ここでは Microsoft Visual Studio.NET 2003 と TR3-SDK-NET2003 を用いて Window アプリケーションを作成する場合の開発方法を紹介します Microsoft Visual Studio.NET 2005 と TR3-SDK-NET2005 を用いた場合も同様です 5.1. プロジェクトの作成 アプリケーションを作成するために以下のステップに従ってください 1Microsoft Visual Studio.NET を実行します 2 スタートページから [ 新しいプロジェクト ] を選択し Visual Basic プロジェクトを作成します 39
5. VB.NET による TR3SDK のプログラミングについて 5.2.TR3SDK への参照の追加 1 メニューから プロジェクト 参照の追加 を選択します 2[ 参照ボタン ] より TR3-SDK のインストールフォルダ内の TR3COM.dll を選択し [OK ボタン ] 押下で追加します 3 ソリューションエクスプローラにて 参照設定が行われていることを確認してください 40
5. VB.NET による TR3SDK のプログラミングについて 5.3.ResponseRFID イベントハンドラの追加 1 コード上で TR3COM をインポートし RFIDControl 型のオブジェクトを作成します 41
5. VB.NET による TR3SDK のプログラミングについて 2 クラス名コンボボックスから 1 で宣言したオブジェクトを選択すると メソッド名コンボボックスに ResponseRFID が表示されます メソッド名コンボボックスから ResponseRFID を選択してください 3 作成されたプロシージャに ResponseRFID イベントの処理を記述してください 42
5. VB.NET による TR3SDK のプログラミングについて 更新履歴 Ver No 日付 内容 Ver 1.0.0 2005/12/20 作成 Ver 1.1.0 2006/05/12 RDLOOP モードに関する解説を追加 Ver 1.2.0 2006/12/05 EAS モードに関する解説を追加その他 補足説明の追加 Ver 1.2.1 2006/01/10 罫線を修正 Ver 1.2.2 2007/03/08 EAS モードの対応製品一覧を修正 Ver 1.2.4 2007/05/01 VB6.0 での開発に関する記述を追加 Ver 1.2.5 2007/05/25 ライセンスに関する記述を修正 Ver 1.2.6 2008/03/28 ファイル名統一による文言修正 Ver 1.3.0 2010/07/01 RDLOOP モード読み取り範囲設定に関する記述を追加その他 タグ情報などを更新 Ver 1.4.0 2010/12/01 ThroughCommand 関数に関する記述を追加タグ情報を更新 ^ 43
タカヤ株式会社ソリューション事業部 [TEL] (03)5449-7041 [FAX] (03)5449-1423 [Mail] rfid-sol@takaya.co.jp [URL] http://www.takaya.co.jp/ 仕様及び外観は 改良のため予告なく変更する場合がありますので あらかじめご了承ください