NFC(Near field communication,近場通訊)也叫作近距離無線通訊技術。瀏覽器
從原理來講,NFC和wifi相似,兩者都利用無線射頻技術來實現設備之間的通訊。數據結構
可是,和WIFI相比,NFC的工做頻率爲13.55Hz,有效距離爲4cm,支持的傳輸速率有106kps、212kps和424kps三種。框架
NFC融合了三條主要的數據發展路線spa
NFC的技術框架3d
由圖可知。orm
從用戶角度(即Application層之上)來看,NFC有三種運行模式(operation mode)。blog
Reader/write模式:簡稱R/W,和NFC Tag/NFC Reader相關圖片
Peer-to-Peer模式:簡稱P2P,它支持兩個NFC設備交互。ip
NFC Card Emulation模式:簡稱CE,它能把攜帶NFC功能的設備模擬成Smart Card,這樣就能實現諸如手機支付、門禁卡之類的功能。字符串
NFC Forum定義了四種類型的Tag,分別爲Type1,Type2,Type3和Type4.
NFC Forum定義了兩個通用的數據結構用於NFC Device之間(包括R/W模式中的NFC Reader和NFC Tag)傳遞數據。這兩個通用數據結構分別爲NFC Data Exchange Format(NDEF)以及NFC Record
NFC四種不一樣類型的Tag有何區別
雖然NFC Tag有四種不一樣類型,但爲了保證最大兼容性,NFC Forum建議NFC設備之間儘可能使用通用數據結構NDEF和NFC Record來交換信息。
NFC R/W 模式涉及的規範較多,包括:
(1)NDEF和NFC Record之間的關係
NFC設備之間每一次交互的數據都會封裝在一個NDEF Message中,而一個NDEF Message能夠包含多個NFC Record,真正的數據則封裝在NFC Record中。
在一個NDEF Message中,第一個NFC Record須要設置其MB位(Message Begin)爲1,表示它是該消息中第一個NFC Record,最後一個NFC Record需設置ME位(Message End)位爲1,表示它是此消息中最後一個NFC Record。
NFC Record分爲NFC Record Header(頭部信息)和Payload(數據載荷)兩大部分。
Record Header 中最重要的是其第一字節。該字節有6個標誌信息,分別爲
(2)TNF和RTD
TNF用於描述一個NFC Record中數據(Payload)的類型,NFC Forum規定了一些經常使用的數據類型。
在TNF七大類型中,NFC Forum經過RTD規範定義了其中的WKT(Well-KnownType)和External Type兩種類型。
簡單來講,WKT就是NFC Forum本身定義的一些經常使用數據類型,目前經常使用類型以下。
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字段取值爲「Ge」
External Type:爲第三方組織定義的類型,目前NFC Forum沒有定義相關的數據類型
(1)URI Record Type
URI Record Type屬於NFC Forum Well-known Type的一種,其對應的Type字段取值爲「U」
對於這種類型的NFC Record,其Payload組織結構
在URI Record Payload中,第一個字節指明URI的ID碼
像http://www.nfc.com這樣的信息該如何封裝爲一個NDEF消息
因爲該NDEF消息只包含一個NFC Record,因此這個惟一的NFC Record將設置MB和ME標誌位爲1,因爲數據量小於255字節,因此SR標誌位爲1.最後,該Record攜帶的數據屬於URI類型,它爲Well-Known Type 的一種,因此TNF 取值爲0x01.
Type Length字段取值爲0x01,對應的Type字段取值爲」U」,表明URI Record Type
URI Record的介紹,這種類型Record的Payload包含ID Code和data兩個部分。
ID Code取值爲0x01佔據1字節(表明」http://www」),而data爲」nfc.com」佔據7個字節,因此整個Payload長度爲8字節,故Payload length字段取值爲0x08.
當應用程序獲取Payload信息後,將根據ID Code和Data的取值最終計算出對應的URI爲http://www.nfc.com
(2)Text Record Type實例
攜帶「Hello World」字符串信息的NDEF消息各字段的取值狀況。
至此NFC R/W運行模式介紹完畢。在R/W模式下,對應用程序而言最重要的工做就是解析NDEF消息。NFC Forum定義了七種數據類型,其中內容比較豐富的屬於NFC Forum Well Known Type。