为了实现NFC标签、NFC设备以及NFC设备之间的交互通信,NFC论坛定义了NFC数据交换格式(NDEF)的通用数据格式。NDEF使NFC的各种功能更加容易使用各种支持的标签类型进行数据传输,由于NDEF已经封装了NFC标签的种类细节信息,因此应用不用关心是在与何种标签通信。
NDEF是轻量级的、紧凑的二进制格式,可带有URL、vCard和NFC定义的各种数据类型。NDEF交换的信息由一系列记录(Record)组成。每条记录包含一个有效载荷,记录内容可以是URL.MIME媒质或者NFC自定义的数据类型。使用NFC定义的数据类型,载荷内容必须被定义在一个NFC记录类型定义(RTD)文档中。
图4-19NDEF组成
NDEF的组成如图4-19所示。其中,记录中的数据类型和大小由记录载荷的报头(Header)注明,这里的报头包含三部分,分别为Length、Type和Identifier,如表4-8所示。
表4-8 NDEF头部组成
名 称 | NDEF协议对应 | 含 义 |
Length | PAYLOAD LENGTH | Payload的长度,单位是字节(octet) |
Type | Type Value: TNF TYPE | 类型域,用来指定载荷的类型 |
Identifier | ID LENGTH ID | 可选的指定载荷是否带有一个NDEF记录 |
如NDEF记录类型所述,NFC定义的数据类型需要的载荷内容被定义在RTD文档中。NFC论坛定义了以下RTD:
(1)NFC文本RTD(T),可携带Unicode字符串。文本记录可包含在NDEF信息中作为另一条记录的描述文本。
(2)NFCURIRTD(U),可用于存储网站地址、邮件和电话号码,存储成经过优化的二进制形式。
(3)NFC智能海报RTD(Sp),用于将URL、短信或电话号码编入NFC论坛标签,以及如何在设备间传递这些信息。
(4)NFC通用控制RTDO
(5)NFC签名RTDO
智能海报记录类型是将URL.SMS等信息综合到了一个Tag中,下面对RTD_TEXT、RTD_URL进行详细介绍。
(1)RTDTEXT即文本记录类型,用来存储Tag中的文本信息。RTDTEXT记录内容格式如表4-9所示。
表4-9 RTD_TEXT记录内容
偏移 Offset(bytes) | 长度 Length(bytes) | 内容 Content |
0 | 1 | |
1 | < n > | ISO/IANA 语言码,如 fi、en-US 等 |
n+1 | < m > | 实际的文本信息,编码为UTF-8或TF-6 |
(2)RTD_URL用来描述从NFC兼容的标签中取得一个URL,或者在两个NFC设备之间传输URL数据,同时也提供另一种在另一个NFC元素里存储URL的方法。
RTD_URI记录内容格式如表4-10所示。其中identifiercode为URI前缀标识符,其值如表4-11所示。
表4-10 RTD_URL记录内容
名称Name | 偏移Offset | 大小Size | 值 Value | 描述 Description |
Identifier code | 0 | 1 byte | URL Identifier code | |
URL field | 1 | N | UTF-8 String | rest URL或整个URL(如果 Idenfier code = 0x00) |
表4-11 NFC RTD_URL前缀缩略表
十进制数Decimal | 十六进制Hex | 协议 Protocol |
0 | 0x00 | 不适用无预备及URL域包含未 删节URL |
1 | 0x01 | http://www. |
2 | 0x02 | https: / / www. |
3 | 0x03 | http:// |
4 | 0x04 | https:// |
5 | 0x05 | tel: |
6 | 0x06 | mailto: |
7 | 0x07 | ftp: //anonymous: anonymous© |
8 | 0x08 | ftp://ftp. |
9 | 0x09 | ftps:// |
10 | OxOA | sftp:// |
11 | OxOB | smb:// |
12 | OxOC | nfs:// |
13 | OxOD | ftp:// |