2017-11-14 26 views
0

NTAG213 & NFCタグのうちNDEFレコードを読み込もうとしていますが、ユーザメモリに余分なバイトがあるようです。NFCタグユーザメモリバイナリ

ユーザーのメモリはブロック4から開始する必要がありますが、NTAG213タグから読み取ると、NDEFレコードが開始される前に7個の追加バイトが、NTAG216タグに2個の追加バイトが表示されます。

ここNTAG213メモリの例です:

01| 04 ae f4 d6 
02| 0a d7 49 80 
03| 14 48 00 00 
04| e1 10 6d 00 
05| 03 db 91 01 <-- NDEF starts at 91? 
06| 1a 54 02 65 
07| 6e 43 4f 43 
08| 4f 4e 55 54 
09| 20 42 4f 44 
10| 59 20 4d 49 
11| ... 

はNDEFレコードはブロック05のヘッダバイト(91)で始まるように見えるのではなく、ブロック04

のスタートは、誰もい余分なバイトが何であるか、またはNDEFデータだけを読み戻すためにオフセットがどのようになっているかを知る方法は?

バイトは、「配信時のメモリコンテンツ」のようなものです。しかし、私は目的が何であるか分かりません。

答えて

1

タイプ2タグのNDEFデータの格納は、NFCフォーラムタイプ2タグ仕様で定義されています。この仕様では、ユーザメモリ(4ページ目)の最初の4バイトはタグのNDEF機能を記述し、次のバイトはタイプ長さ値(TLV)構造のシーケンスを含み、そのうちの1つ(T = 3)実際のNDEFデータを含むNDEFメッセージTLVです。他のTLVは、ロックバイトのようなタグ固有のデータを含むメモリロケーションを記述し、NDEFデータを読み書きするときにスキップする必要があります。

あなたのコンテンツの例はNTAG216(NTAG213ではなく)です。

第4ページの内容は、NDEF形式を示すマジックバイト(0xE1)、その後にNDEFマッピングバージョン(0x10 =>バージョン1.0)、その後に8の倍数(0x6D * 8 == 872バイトのユーザーデータ)、続いて読み取り/書き込みのアクセス許可(0x00 =>読み取りおよび書き込み可能の制限なし)があります。

5番目のページはNDEF TLVタイプ(0x03 => NDEFメッセージ)で始まり、その後にTLV値フィールドサイズを与えるTLV長さ(0xDB == 219バイト)が続きます。続くバイトは実際のNDEFメッセージデータですが、いくつかのタグではこれは連続したメモリではないかもしれません(他のTLVは読み書きの際にスキップしなければならないメモリバイトを示すかもしれません)。

すべてのベルとホイッスルについては、ndef readndef writeを調べるか、NFC Forum specifications pageからタイプ2タグ仕様のコピーを入手することができます。

+0

ありがとうスティーブン。 TLVはパズルの欠けている部分でした。あなたが指摘したように、私は私の例(NTAG216)に間違ったタグの内容を入れました。私はまた、1で始まる行に0ではなく番号を付けました。私が持っているNTAG213は、実際には私に紛らわしいユーザーmem空間に2つのTLVブロックを持っています。 – Emlyn