1. Plain text example
底下是用一般的 nfc tag writter 寫進ndef plain text "123456789"的tag content
page 0 0469b055 c22d3580 5a480000 e1101200 page 4 0103a010 440310d1 010c5402 656e3132 page 8 33343536 373839fe 00000000 00000000 page 12 00000000 00000000 00000000 00000000 page 16 00000000 00000000 00000000 00000000 page 20 00000000 00000000 00000000 00000000 page 24 00000000 00000000 00000000 00000000 page 28 00000000 00000000 00000000 00000000 page 32 00000000 00000000 00000000 00000000 page 36 00000000 00000000 00000000 00000000 page 40 00000000 00000000
可以看到它總共有42個page, 根據 NFX 203F 的 format, user data 存在 page 4~39
而page 0~3, 40~41 用於紀錄 ID, checksum, read only, counter
1.1 TLV Blocks
Tag 內容格式為 TLV (Tag, Length, Value)
Tag 的值為底下幾種
- NULL TLV (0x00) : 用於對齊 memory
- Lock Control TLV (0x01) : 對 lock bit 做進一步描述
- Memory Control TLV (0x02) : 定義剩下的memory
- NDEF Message TLV (0x03)
- Proprietary TLV (0xFD)
- Terminator TLV (0xFE) : 最後一個TLV
TLV 1: (Lock Control)
01 03 a01044
TLV 2: (NDEF Message)
03 10 d1010c5402656e313233343536373839
TLV 3: (Terminator)
fe
1.2 NDEF Message
在 NDEF TLV 的 VALUE 為 NDEF message
d1010c5402656e313233343536373839
第一個byte 0xd1為 NDEF Flag + TNF
- MB = 1
- ME = 1
- CF = 0
- SR = 1
- IL = 0
- TNF = 1
接下來的 1 個byte是 Type Length
Type Length = 0x01
因為 SR (Short Record) 為 1, 所以接下來的Payload length 長度為1個byte
Payload Length = 0x0c
因為 IL (ID Length is present) 為0, 所以沒有 ID 相關的欄位
接著是1個 byte 的 Payload Type
Payload Type = 0x54 (WELL-KNOWN: urn:nfc:wkt:T (Text))
最後是NDEF Text content:
02 65 6e 31 32 33 34 35 36 37 38 39 E N 1 2 3 4 5 6 7 8 9
第一個byte 0x02為Status
- bit 7 : 0表示UTF-8 encoded, 1表示UTF16 encoded
- bit 6 : RFU (must be set to zero)
- bit 5..0 : IANA language code的長度
所以接著2個byte為 0x65, 0x6e 為 "EN" 是它的 IANA language code
接著是我們的message "123456789"
沒有留言:
張貼留言