概述
ndef 全称 nfc data exchange format 即 nfc 数据交换格式
组成:
ndef message 由 多个 nfc record 组成
1 nfc record 包括 nfc record header(数据头)和 nfc record payload(数据荷载)两部分
2 nfc record header
其中第一个字节最重要 包含 MB ME CF SR IL TNF
2.1 MB(message begin)消息开始的地方 一般用于开头 且置1
2.2 ME(message end)消息结束的地方 一般用于结尾 且置1
2.3 CF(chunk flag)是否分块
2.4 SR(short record)如果设置该值,则上图的 pay length 只需要1个, 表示payload数据长度被限制在255个字节之内。
2.5 IL(id_length标志)表示 header 是否含有 id 和 id length 这两个字段
2.6 TNF(type name format )用于指明 payload 的类型 具体可见图
2.6-a:empty 空的 表示是一个空的 nfc record
2-6-b:nfc forum well-Known type 定义了一些常见的数据格式 如下:
- URI Record Type:用于存储URI数据,对应Type字段取值为"U"。
- Text Record Type:用于存储文本数据,对应Type字段取值为"T"。
- Signature Record Type:用于存储数字签名数据,对应Type字段取值为"Sig"。
- Smart Poster Record Type:智能海报,用于存储与该海报相关的一些资讯信息,如图片、相关介绍等,对应Type字段取值为"Sp"
- Generic Control Record Type:用于传递控制信息,对应Type字段取值为"Gc"
2-6-c:MIME (Multipurpose Internet Mail Extensions)多用途 internet 扩展。遵循 RFC2046规范。如果取值为 MIME,则 type 字段可以取值为:“text/plain”,“img/png"。
2-6-d:Absolute URI 即绝对的 uri 地址,遵循 rfc 3986 规范。如绝对 uri 为:”http://www.baidu.com“。则其相对 uri 为:”www.baidu.com“。
2-6-e:nfc forum external type
为第三方组织定义的类型,目前NFC Forum没有定义相关的数据类型。
2-6-f:unknown 代表Payload中的数据类型未知,它和MIME类型"application/octet-stream"有些类似,这种类型的数据由相应的应用程序来解析。
2-6-g:unchanged:这种类型的数据用于NFC Record分片。例如一个大的数据需要通过多个NFC Record来承载,除第一个NFC Record分片外,该数据对应的其他NFC Record分片都必须设置TNF为Unchanged。
2.7:type length 是 record header 中 type 字段的长度
2.8:pay load length 3 ~ 0: 这四个字段共同指明 payload 字段的长度 如果 SR 字段被设置,则 record header 只包含一个 payload length字段。
2.9:ID length 用于表示 ID 字段的长度,如果 IL 字段未设置,则 ID 和 ID length 字段都将不存在。
2.10:type
- URI Record Type:用于存储URI数据,对应Type字段取值为"U"。
- Text Record Type:用于存储文本数据,对应Type字段取值为"T"。
- Signature Record Type:用于存储数字签名数据,对应Type字段取值为"Sig"。
- Smart Poster Record Type:智能海报,用于存储与该海报相关的一些资讯信息,如图片、相关介绍等,对应Type字段取值为"Sp"
- Generic Control Record Type:用于传递控制信息,对应Type字段取值为"Gc"
2.11:ID 需要配合URI类型的Payload一起使用,它使得一个NFC Record能通过ID来指向另外一个NFC Record。
2.12:pay load
1 文本型 0xd1,0x01,0x0F,0x54,0x02,0x65,0x6E, 0x68,0x65,0x6c,0x6c,0x6F,0x2c,0x77,0x6F,0x72 ,0x6c ,0x64 ,0x21
D1(1101 0001B)对应 MB ME CF SR IL TNF TNF 为 0x01
01 type 的长度
0F payload 的长度
54 type 的类型 对应 ”T“
02 对应语言码字段的长度
65 6E 表示为 “en”
68 65 6C 6F 2C 77 6F 72 6C 64 21 payload 的内容 对应 ASCII 码 结果为 ”Hello,World!“。
ascII 对照表:
ASCII码表,ASCII码一览表,ASCII码对照表完整版-ASCII码中文站
2 网址型:0xD1 ,0x01 ,0x09 ,0x55 ,0x01 ,0x2E,0x6E ,0x66 ,0x63 ,0x2E ,0x63 ,0x6F ,0x6D
D1 (11010001B) 对应 MB ME CF SR IL TNF TNF 为 0x01
01 type 的长度
08 payload 的长度
55 对应 ”U“ 即 url
01 identifier code 对应表二 为 http://www
6E 66 63 2E 63 6F 6D 对用ASCII表,即 “nfc.com"。
参考:
高通 NFC开发基础知识 之 “NDEF及NFC Record”_yujixuan@blog的博客-CSDN博客_nfcwellknown
最后
以上就是执着玉米为你收集整理的ndef 详解的全部内容,希望文章能够帮你解决ndef 详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复