NFC 近場通訊
Bill Chung
2013/05/25
http://www.dotblogs.com.tw/billchung/
http://mvc.tw
 Microsoft Visual Basic MVP
 台灣微軟特約講師
 MSDN 論壇版主
 部落格:海角點部落 http://www.dotblogs.com.tw/billchung/
2
關於我
http://mvc.tw 3http://www.microsoft.com/taiwan/events/win8app/
http://mvc.tw
 Radio Frequency Identification (無線射頻識別系統)
 一個在你生活中已經存在已久的東西
 頻率
 LF:125K/135K Hz (範圍 10K~1MHz)
 HF:13.56MHz (範圍1M~400MHz)
 UHF:860~960MHz (範圍400M~1GHz)
 Microwave:2.4/5.8GHz
4
認識 RFID
http://mvc.tw 5
RFID 頻道
10 kHz 100 kHz 1 MHz 10 MHz 100 MHz 1000 MHz 300 GHz
Low Freq. EAS Mid. Freq.
EAS
Cell Phone
RFID:
Item
Management
Data
Modem AM
Radio
Toys
Garage
DoorCB FM
RFID:
Access Control
Animal ID
RFID:
Toll Roads
& Item
Management
Microwave
EAS
TV
Data
Terminal
RFID:
Smart Cards
2.45 GHz
http://mvc.tw 6
常見相關ISO標準
http://mvc.tw
 NFC (Near Field Communication 近場通訊):為奠基於
RFID 技術的延伸
 組織:NFC Forum
 相關標準
 ISO 18092
 ECMA 340
 ETSI TS 102 190
 操作頻率:13.56 MHz (HF)
 距離: < 20公分
7
NFC 基本概觀
http://mvc.tw
 Max bit rate: 424Kb/s
 Communication modes
 Active
 Passive
 Operating modes
 Read/Write (Reader Mode)
 Peer to Peer
 Card emulation (Windows 8/ Phone 8 目前不支援)
8
NFC 基本概觀
http://mvc.tw
做為Bluetooth傳輸的認證交握 (Peer to Peer)
設備間直接傳輸 (Peer to Peer)
 讀取/寫入 NFC tag (Read/Write)
 電子錢包 (需搭配 SIM 卡 / Windows Phone 8)
9
Windows 8 / Phone 8 上的 NFC應用
http://mvc.tw
 NFC Data Exchange Format
 定義 NFC 通訊的內容封裝格式
10
NDEF Format
http://mvc.tw
NDEF Record Identifiler
11
 MB:Message Begin
 ME:Message End
 CF:Chunk Flag
 SR:Short Record
 IL:ID Length
 IL =0:省略 ID 與 ID Length
 TNF:Type Name Format
http://mvc.tw
NDEF Record Length
12
 Type Length
 ID Length
http://mvc.tw
NDEF Record Type
13
 Type
 ID
http://mvc.tw
 NFC Forum Type
 Type1:
 96 bytes of memory, expandable up to 2KB
 Compatible products : Broadcom BCM20203
 Type2:
 96 bytes of memory, expandable up to 2KB
 Compatible products : NXP MIFARE Ultralight
14
NFC Tags (1)
http://mvc.tw
 Type3:
 Variable memory, up to 1 MB per service
 Compatible products : Sony FeliCa
 Type4:
 Variable memory, up to 32 KB per service
 Compatible products : NXP DESFire, SmartMX-JCOP
15
NFC Tags (2)
http://mvc.tw
 NXP Specific Type
 NXP Mifare Classic
 Variable memory 192/768/3584 Bytes
 NXP Mifare Classic Mini, 1K, 4K
16
NFC Tags (3)
http://mvc.tw
 目前 Windows 8/ Windows Phone 8 的 NFC API 只支
援到 NDEF 格式讀寫,Tag 在使用前必須先格式化成 NDEF
 NFC 晶片存在相容性的問題
 NXP 的 NFC 晶片一般來說是問題比較少的
17
Tag 使用注意事項
http://mvc.tw
 Windows.Networking.Proximity Namespace
 ProximityDevice Class
 ProximityMessage Class
 WMAppManifest (WP8)
 啟用 ID_CAP_PROXIMITY
 Package.appxmanifest (Win8)
 啟用 Proximity
18
Windows 8/ Phone 8 NFC API
http://mvc.tw 19
http://mvc.tw 20
NFC Sample 1 (WP8 偵測 NFC)
使用 GetDefault 方法取
得本機的 NFC 裝置
注意: 這兩個事件委派都
會在另一個 Thread 中執
行
http://mvc.tw
NFC Sample 2 (Win8 偵測 NFC)
21
只有跨執行緒的處理不同
http://mvc.tw 22
http://mvc.tw
Message Protocol
23
 Windows
 WindowsUri
 WindowsMime
 Windows:WriteTag
 WindowsUri:WriteTag
 WindowsMime:WriteTag
 LaunchApp:WriteTag
 WriteableTag
 NDEF
 NDEF:ext
 NDEF:MIME
 NDEF:URI
 NDEF:wkt
 NDEF:WriteTag
 NDEF:Unknown
參考 ProximityDevice.PublishBinaryMessage(String, IBuffer)
http://mvc.tw
 訊息資料包含 UTF-16LE 編碼的 URI 字串。
 Windows 一律藉由提示使用者檢視收到的 URI 來處理
"WindowsUri" 訊息 (在處理特定 URI 通訊協定的 Windows
預設應用程式中),例如,http:// URI 會在預設 Web 瀏覽器
中開啟。Windows 會在預設應用程式中開啟 URI,即使有
其他應用程式也訂閱 "WindowsUri"。
24
WindowUri
http://mvc.tw
 使用 PublishUriMessage 方法,而不是以這個通訊協定呼
叫 PublishBinaryMessage 方法。
 如果您將 URI 發佈至沒有執行 Windows 的電腦,則 URI 會
自動根據您電腦支援的近接感測技術進行格式化。例如,如
果您的電腦使用近接感測的 NFC 硬體,URI 會格式化為
NDEF URI 記錄。
25
WindowUri
http://mvc.tw
 如果您訂閱的是 "WindowsUri" 訊息,而且 Windows 電腦
會接收電腦支援之近接感測技術所格式化的訊息,則
Windows 會讀取格式化的訊息,並且只傳回 URI 做為訊息
內容。
26
WindowUri
http://mvc.tw
訊息資料是特定的 MIME 類型。例如,如果訊息資料是
jpeg 影像,則訊息類型為
"WindowsMime.image/jpeg"。
27
WindowsMime
http://mvc.tw
Windows 一律藉由提示使用者檢視收到的 MIME 內容
來處理 "WindowsMime" 訊息,即使也已針對 MIME
內容訂閱應用程式。
28
WindowsMime
http://mvc.tw
如果您將 "WindowsMime" 訊息發佈至沒有執行
Windows 的電腦,則訊息內容會自動根據您電腦支援
的近接感測技術進行格式化。例如,如果您的電腦使用
近接感測的 NFC 硬體,訊息內容會格式化為 NDEF
MIME 記錄。
29
WindowsMime
http://mvc.tw
 如果您要發行 "WindowsMime" 訊息,您永遠都必須包含
MIME 類型。如果您訂閱的是 "WindowsMime" 訊息,則可
以使用沒有指定 MIME 類型的 "WindowsMime" 來訂閱所
有 MIME 類型訂閱。如果您訂閱的是特定 MIME 類型,而
且 Windows 電腦會接收電腦支援之近接感測技術所格式化
的訊息,則 Windows 會讀取格式化的訊息,並且只傳回
MIME 內容做為訊息內容。如果您訂閱 MIME 類型,則收到
的前 256 個位元組會是 ASCII MIME 類型字串,而剩餘
的位元組就是 MIME 內容。
30
WindowsMime
http://mvc.tw
由 Message Protocol 和 Sub type 組合而成
 Windows.Sample
 WindowsMime.image/jpeg
 NDEF:URI.http://contoso.com/sometype
WindowsUri 不需要 sub type
31
Message Type
Publish Message
32
public long PublishBinaryMessage
(
string messageType,
IBuffer message,
MessageTransmittedHandler messageTransmittedHandler
)
http://mvc.tw
 messageType 類型: System.String
 要傳遞給訂閱者之訊息的型別。
 message 類型: IBuffer
 要傳遞給訂閱者的二進位訊息資料。
 messageTransmittedHandler 類型:
MessageTransmittedHandler
 已傳送訊息時所要呼叫的處理常式。
33
參數
http://mvc.tw
 類型: System.Int64 [.NET]
 已發行訊息的唯一發行集識別碼。
 用途
 您可以發出多個相同訊息類型的訊息,而每次發出都會有相關
聯的唯一識別碼。
 您可以將 PublishBinaryMessage 方法所傳回的發行集識別
碼傳遞至 StopPublishingMessage 方法,藉此停止發行訊息。
34
回傳值
http://mvc.tw
NFC Sample 3 (WP8 Publish Message)
35
注意: 委派會在另一個 Thread 中執行
http://mvc.tw 36
若要改成寫入卡片
只要改 message type
加上 :WriteTag 就可以了
Subscribe Message
37
public long SubscribeForMessage
(
string messageType,
MessageReceivedHandler messageReceivedHandler
)
http://mvc.tw
 messageType 類型: System.String [.NET]
 要傳遞給這個訂閱之訊息的型別。
 messageReceivedHandler 類型:
MessageReceivedHandler
 當鄰近提供者在傳遞訊息時將會呼叫的處理常式。
38
參數
http://mvc.tw
 類型: System.Int64
 訂閱的唯一識別碼。
 用途
 您可以藉由傳遞 SubscribeForMessage 方法傳回至
StopSubscribingForMessage 方法的訂閱識別碼來取消訂閱。
39
回傳值
http://mvc.tw
NFC Sample 4 (Win8 Subcribe Message)
40
注意: 委派會在另一個 Thread 中執行
http://mvc.tw 41
http://mvc.tw
 純文字
 使用 PublishMessage
 Uri
 使用 PublishUriMessage
42
簡化 Publish
http://mvc.tw
以寫入 Uri 為例
43
http://mvc.tw
 NDEF Library for Proximity APIs (NFC)
 使用 PublishBinaryMessage
44
使用 NDEF 協定
http://mvc.tw
 以下兩種分享方式,可不需程式碼,直接經由 Share
Contract 透過輕觸傳送分享
 Share StorageItems
 Share Link
45
Win8 上的特殊用法 – Share Contract
http://mvc.tw 46
謝謝各位
• 本投影片所包含的商標與文字皆屬原著作者所有。
• 本投影片使用的圖片皆從網路搜尋。
• 本著作係採用 Creative Commons 姓名標示-非商業性-相同方式分享 3.0 台灣 (中華民國) 授權條款授權。
h t t p : / / m v c . t w

NFC近場通訊-twMVC#9