User manual - NFCTagライブラリマニュアルver.1.00(2012年3月29日)
55
Tag-it
TM
に対し HFTagWrite 関数を実行する場合
1. TargetID 配列を初期化します。0 クリア状態等に初期化します。
2. カウンタ変数 i に 0 をセットし、クリアします。
3. カウンタ変数 iが定数 Nより小さい場合、次の処理に進みます。定数 Nはループ回数の上限を表して
おり、回数制限を設けることで、無限ループ化を回避します。
4. NFCHFTagPolling 関数により通信範囲内のカードを検索します。
5. IC タグ(Tag-it
TM
)を発見し、ICタグの起動に成功した場合、NFCHFTagGetCardResponse関数により
起動したカードの UID を取得します。
6. TargetID が初期状態の場合、取得した UID をセットします。
7. TargetID[6]をチェックします。TargetID[6]が 0x07 の場合、Tag-it
TM
シリーズの IC タグであるため、
次の処理に進みます。
8. NFCHFTagRead 関数において、dwOption パラメータに NFC_HFTAG_SECURITY を指定して実行し
ます。これは対象ブロックのロック状態を確認するために行います。
9. NFCHFTagRead関数の戻り値が NFC_OKとなった場合、読込データを格納している pbyData配列を
チェックします。pbyData[0]=0x00 の場合、対象ブロックはロックされていないので、次の処理に進み
ます。
10. NFCHFTagWrite 関数を実行します。
11. NFCHFTagWrite 関数の戻り値が NFC_OK の場合、アプリケーションにおいて、「書き込みに成功しま
した。」と表示し、処理を終了します。(正常終了)
12. NFCHFTagWrite 関数の戻り値が NFC_ERROR_TIMEOUT、NFC_NOT_ACTIVATION、
NFC_ERROR_SUSPEND、NFC_ERROR_AUTOOFF のとき、書き込みに失敗している場合と、書き込
みには成功しているが、書き込み後のチェックに失敗している場合があります。確実に書き込みを完
了させるために、アプリケーションにおいて、「書き込み失敗。同じカードをかざして下さい。」と表示し、
3 に戻って一連の処理のリトライを行います。
13. NFCHFTagWrite 関数の戻り値が手順 12 以外のエラー戻り値である場合、Write データと TargetID
を保存。本体リセット実施後に 1に戻り、再度本処理フローを実行します。このとき、手順 1 において、
TargetID 配列は初期化せずに、保存した TargetID をセットします。 (※1)
※1 NFCHFTagWrite関数のエラーには他に下記のエラー処理がありますが、通常は発生しないため、省
略します。
NFC_NOT_DEVICE:NFC ドライバ非常駐時に発生。/ NFC_POF:NFCHFTagOpen 未実行時に発生。
NFC_PRM:不正パラメータ指定時に発生。 /
NFC_ERROR_INVALID_ACCESS:NFCHFTagPolling 実行中に NFCHFTagWrite 関数を実行時に発生。