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