引言
藍(lán)牙技術(shù)(Bluetooth)使得移動(dòng)通信設(shè)備和計(jì)算機(jī)設(shè)備,,不必借助電纜就能實(shí)現(xiàn)數(shù)據(jù)傳送, 它可以在短距離內(nèi)取代電纜和雙絞線連接方案,?;谒{(lán)牙技術(shù)的文件推送技術(shù),,使得設(shè)備間可以實(shí)現(xiàn)高速的大文件傳輸,。但現(xiàn)有藍(lán)牙設(shè)備之間進(jìn)行文件傳輸需要較多的步驟,,較為煩瑣,。
NFC(Near Field Communication,近距離無線通信)是一種新型的近距離無線通信技術(shù),。它工作于13.56MHz,,最高速度可達(dá)424kbit/s,工作范圍在10 厘米以內(nèi),,與現(xiàn)有的RFID基礎(chǔ)設(shè)施兼容,,符合ISO/EC18902 和ECMA340 標(biāo)準(zhǔn)。NFC 將非接觸讀卡器,、非接觸卡和點(diǎn)對(duì)點(diǎn)功能整合在一起,。可以滿足兩個(gè)設(shè)備間,,簡(jiǎn)單又安全地進(jìn)行信息交換,、內(nèi)容與服務(wù)訪問。但NFC 技術(shù)的通信距離短,,數(shù)據(jù)傳輸速度不高,,而且現(xiàn)有的移動(dòng)產(chǎn)品一般不具有NFC功能,,不適合于較大文件的傳輸。
本文給出一種方法,,結(jié)合藍(lán)牙及 NFC 技術(shù)的優(yōu)點(diǎn),,互補(bǔ)不足。使得不需要對(duì)現(xiàn)有移動(dòng)設(shè)備進(jìn)行改動(dòng),,就能實(shí)現(xiàn)設(shè)備間的高速,、安全、方便的文件傳送,。
1,、藍(lán)牙文件推送技術(shù)
1.1 OBEX 協(xié)議:
對(duì)象交換協(xié)議OBEX(Object Exchange)。是一種面向應(yīng)用的會(huì)話層協(xié)議,,它運(yùn)行于藍(lán)牙(Bluetooth)協(xié)議的頂部,,支持文件傳輸(File Transfer),對(duì)象“推”操作(Object Push Profile)等多種應(yīng)用,,提供了設(shè)備間簡(jiǎn)單的對(duì)象交換手段,,可交換的對(duì)象可以是文件、圖像,,也可以是應(yīng)用支持的任何數(shù)據(jù)單位,。本文介紹的文件推送方式,正是對(duì)“推”操作進(jìn)行改進(jìn),。對(duì)任意兩臺(tái)設(shè)備可組成主從關(guān)系,,主動(dòng)發(fā)起方為主設(shè)備(Client),被找到者是從設(shè)備(Server),。如圖1 所示,,是基于藍(lán)牙的文件推送方法的協(xié)議層次關(guān)系。
圖 1:藍(lán)牙文件推送協(xié)議
OBEX:對(duì)象交換協(xié)議,。
RFCOMM:電路替代協(xié)議,。
L2CAP:邏輯鏈路控制及適配。
1.2 OBEX 對(duì)象模型:
OBEX 對(duì)象模型詳細(xì)介紹了該協(xié)議是如何描述一個(gè)對(duì)象的,。為了做到這點(diǎn),,OBEX 定義了Headers 的概念。一個(gè)Header 反映了對(duì)象的一個(gè)方面,,例如名字,、長(zhǎng)度、描述文字或者對(duì)象本身,。例如:一個(gè)文件對(duì)象test.txt 會(huì)包含它的名字,,一個(gè)類型標(biāo)示為“text”,長(zhǎng)度和文件本身,。Header 由
和,。 HI 由一個(gè)字節(jié)組成,指出了Header 包含的內(nèi)容以及它的格式,。HV 包含了一個(gè)或者多個(gè)字節(jié),,其結(jié)構(gòu)由HI 所決定。所有的 Header 都是可選的,,取決于設(shè)備的類型和事務(wù)的種類,。你可以使用所有的Header,或者一些,,或者沒有,。ID 可以使Header 可解析以及與傳輸順序無關(guān),也可以使不支持的Header 被忽略掉,。
OBEX 使用請(qǐng)求(Request)和回應(yīng)(Response)作為最基本的操作,。請(qǐng)求的每個(gè)Request 必然有一個(gè)Response,否則可認(rèn)為Request 失敗,。
1.3 JSR‐82
JSR-82 是用于藍(lán)牙無線技術(shù)的官方 Java API,。使用這個(gè) API 可創(chuàng)建以下功能的應(yīng)用程序:判斷和檢測(cè)本地的藍(lán)牙設(shè)備的屬性;發(fā)現(xiàn)設(shè)備通信范圍內(nèi)的藍(lán)牙設(shè)備,;在遠(yuǎn)程藍(lán)牙設(shè)備上搜索服務(wù),;創(chuàng)建可以與遠(yuǎn)程藍(lán)牙服務(wù)器通信的藍(lán)牙客戶機(jī)。 JSR-82 包含兩個(gè)包,,
javax.bluetooth:提供Java 藍(lán)牙通信的一些類和接口,。
javax.obex:提供OBEX 協(xié)議中的一些Java 類和接口。
2,、NFC 技術(shù)
2.1 NFC 概述
ECMA-340(NFCIP-1)是NFC 的物理層和數(shù)據(jù)鏈接層的規(guī)范標(biāo)準(zhǔn),。該標(biāo)準(zhǔn)定義了兩種工作模式:主動(dòng)模式和被動(dòng)模式,。主動(dòng)模式下,通信發(fā)起方和目標(biāo)方自行產(chǎn)生無線射頻磁場(chǎng)進(jìn)行通信,。被動(dòng)模式下,通信發(fā)起方提供無線射頻磁場(chǎng),,目標(biāo)設(shè)備選擇發(fā)起設(shè)備的射頻磁場(chǎng),,并做出回應(yīng)。ECMA-352(NFCIP-2)規(guī)范標(biāo)準(zhǔn)詳細(xì)說明了工作于13.56MHz 的無線通信設(shè)備的通信模式選擇機(jī)制,,使得可以不同標(biāo)準(zhǔn)的設(shè)備可以正確工作,。ECMA-340, ECMA-352以及其它的通信標(biāo)準(zhǔn)的關(guān)系,如圖2 所示:
短距離通信:根據(jù)靠近作為通訊啟動(dòng)方式,,可以保證通信的安全性防止被監(jiān)聽,保證通信的確定性,。
與現(xiàn)有的 RFID 標(biāo)準(zhǔn)兼容:省電模式下的NFC 設(shè)備,,相當(dāng)于一張RFID 標(biāo)簽。
簡(jiǎn)化其它通信其它程序的連結(jié)步驟:藍(lán)牙或者以太網(wǎng)的通訊協(xié)定都需要在眾多的設(shè)備當(dāng)中選擇正確的設(shè)備,。
2.2 NFC 對(duì)于OBEX 的改進(jìn)
現(xiàn)有的藍(lán)牙文件步驟:
(1)搜索藍(lán)牙設(shè)備(人工操作),。
(2)選擇設(shè)備(人工操作)。
(3)設(shè)備配對(duì)(人工操作),。
(4)OBEX 文件傳輸(自動(dòng)操作),。
NFC 通信的操作步驟:
(1) NFC 設(shè)備靠近(人工操作)。
(2) NFC 數(shù)據(jù)通信(自動(dòng)完成),。
基于 NFC 技術(shù)的文件推送方法的操作步驟:
(1) NFC 設(shè)備靠近(人工操作),。
(2) 交換藍(lán)牙 OBEX 傳輸?shù)膮?shù)(自動(dòng)完成)。
(3) OBEX 文件傳輸(自動(dòng)完成),。
從操作的步驟可知,,基于NFC 技術(shù)的對(duì)象交換方法,借助NFC 技術(shù)的方便性,,簡(jiǎn)化了藍(lán)牙文件推送技術(shù),。
2.3 JSR ‐257 NFC
JSR-257 是Java 語言的非接觸通信API 庫。使用該API 庫,,配合相應(yīng)的硬件,,可以處理的功能有:NFC 通信,RFID 讀寫,,智能卡讀寫,,閱讀條形碼。例如:當(dāng)標(biāo)簽靠近移動(dòng)電話時(shí),,可以自動(dòng)觸發(fā)事件,,運(yùn)行相應(yīng)的處理程序,進(jìn)行數(shù)據(jù)讀寫,。支持的標(biāo)簽類型,,如表2所示:
表 1
javax.microedition.contactless:該API 包提供為不同的目標(biāo)提供公共接口。
javax.microedition.contactless.ndef:該 API 包提供處理NFC 目標(biāo)的功能
javax.microedition.contactless.rf:該 API 包提供處理RFID 目標(biāo)的功能,。
javax.microedition.contactless.sc:該 API 包提供處理智能卡的功能,。
javax.microedition.contactless.visual:該 API 包提供處理可見的條形碼的功能。
3,、應(yīng)用實(shí)例
通過對(duì) OBEX 和NFC 技術(shù)的分析,,以及對(duì)這兩種通信方式的整合,我們給出的方法的示意圖,,所圖3 所示:
一臺(tái)具有藍(lán)牙以及 NFC 的手機(jī)(Nokia 6131i)
一臺(tái)普通的支持藍(lán)牙 OBEX 的手機(jī)(Nokia N70)
一張 Mifare 標(biāo)簽,。
操作步驟:
(1)讀出普通手機(jī)的藍(lán)牙地址,并寫到Mifare 標(biāo)簽中,。并將標(biāo)簽貼在普通手機(jī)上,。
(2)運(yùn)行NFC 手機(jī)上的J2ME 程序,并選擇要傳送的文件,。
(3):把普通手機(jī),,靠近NFC 手機(jī),使之得到相應(yīng)參數(shù)。
(4):文件自動(dòng)傳到普通手機(jī)中,。
該方法,,并不需要對(duì)現(xiàn)有的藍(lán)牙手機(jī)進(jìn)行硬件的改過,也不需要安裝任何軟件,,只需要多加一張RFID,,就可以使用基于NFC 技術(shù)的藍(lán)牙文件推送方法。
4,、結(jié)束語
本文給出一種改進(jìn)的對(duì)象交換方法,,并給出實(shí)用實(shí)例。該方法使得文件推送更加方便,,安全,。我們希望今后加強(qiáng)本方式,使得可以商業(yè)用途,。NFC 作為一種新型的近距離無線通信技術(shù)與相關(guān)硬件相結(jié)合,還有很多新應(yīng)用,,值得深入的研究,。
OBEX 使用請(qǐng)求(Request)和回應(yīng)(Response)作為最基本的操作,。請(qǐng)求的每個(gè)Request 必然有一個(gè)Response,否則可認(rèn)為Request 失敗,。
1.3 JSR‐82
JSR-82 是用于藍(lán)牙無線技術(shù)的官方 Java API,。使用這個(gè) API 可創(chuàng)建以下功能的應(yīng)用程序:判斷和檢測(cè)本地的藍(lán)牙設(shè)備的屬性;發(fā)現(xiàn)設(shè)備通信范圍內(nèi)的藍(lán)牙設(shè)備,;在遠(yuǎn)程藍(lán)牙設(shè)備上搜索服務(wù),;創(chuàng)建可以與遠(yuǎn)程藍(lán)牙服務(wù)器通信的藍(lán)牙客戶機(jī)。 JSR-82 包含兩個(gè)包,,
javax.bluetooth:提供Java 藍(lán)牙通信的一些類和接口,。
javax.obex:提供OBEX 協(xié)議中的一些Java 類和接口。
2,、NFC 技術(shù)
2.1 NFC 概述
ECMA-340(NFCIP-1)是NFC 的物理層和數(shù)據(jù)鏈接層的規(guī)范標(biāo)準(zhǔn),。該標(biāo)準(zhǔn)定義了兩種工作模式:主動(dòng)模式和被動(dòng)模式,。主動(dòng)模式下,通信發(fā)起方和目標(biāo)方自行產(chǎn)生無線射頻磁場(chǎng)進(jìn)行通信,。被動(dòng)模式下,通信發(fā)起方提供無線射頻磁場(chǎng),,目標(biāo)設(shè)備選擇發(fā)起設(shè)備的射頻磁場(chǎng),,并做出回應(yīng)。ECMA-352(NFCIP-2)規(guī)范標(biāo)準(zhǔn)詳細(xì)說明了工作于13.56MHz 的無線通信設(shè)備的通信模式選擇機(jī)制,,使得可以不同標(biāo)準(zhǔn)的設(shè)備可以正確工作,。ECMA-340, ECMA-352以及其它的通信標(biāo)準(zhǔn)的關(guān)系,如圖2 所示:
圖2 ECMA-340, ECMA-352 關(guān)系
短距離通信:根據(jù)靠近作為通訊啟動(dòng)方式,,可以保證通信的安全性防止被監(jiān)聽,保證通信的確定性,。
與現(xiàn)有的 RFID 標(biāo)準(zhǔn)兼容:省電模式下的NFC 設(shè)備,,相當(dāng)于一張RFID 標(biāo)簽。
簡(jiǎn)化其它通信其它程序的連結(jié)步驟:藍(lán)牙或者以太網(wǎng)的通訊協(xié)定都需要在眾多的設(shè)備當(dāng)中選擇正確的設(shè)備,。
2.2 NFC 對(duì)于OBEX 的改進(jìn)
現(xiàn)有的藍(lán)牙文件步驟:
(1)搜索藍(lán)牙設(shè)備(人工操作),。
(2)選擇設(shè)備(人工操作)。
(3)設(shè)備配對(duì)(人工操作),。
(4)OBEX 文件傳輸(自動(dòng)操作),。
NFC 通信的操作步驟:
(1) NFC 設(shè)備靠近(人工操作)。
(2) NFC 數(shù)據(jù)通信(自動(dòng)完成),。
基于 NFC 技術(shù)的文件推送方法的操作步驟:
(1) NFC 設(shè)備靠近(人工操作),。
(2) 交換藍(lán)牙 OBEX 傳輸?shù)膮?shù)(自動(dòng)完成)。
(3) OBEX 文件傳輸(自動(dòng)完成),。
從操作的步驟可知,,基于NFC 技術(shù)的對(duì)象交換方法,借助NFC 技術(shù)的方便性,,簡(jiǎn)化了藍(lán)牙文件推送技術(shù),。
2.3 JSR ‐257 NFC
JSR-257 是Java 語言的非接觸通信API 庫。使用該API 庫,,配合相應(yīng)的硬件,,可以處理的功能有:NFC 通信,RFID 讀寫,,智能卡讀寫,,閱讀條形碼。例如:當(dāng)標(biāo)簽靠近移動(dòng)電話時(shí),,可以自動(dòng)觸發(fā)事件,,運(yùn)行相應(yīng)的處理程序,進(jìn)行數(shù)據(jù)讀寫,。支持的標(biāo)簽類型,,如表2所示:
表 1
Nokia 公司提供的6131i 移動(dòng)電話,是目前少數(shù)支持NFC 技術(shù)的設(shè)備。該公司提供了Nokia 6131 NFC SDK 開發(fā)環(huán)境,,方便開發(fā)者開發(fā)基于NFC 技術(shù)的J2ME 程序,。該庫支持標(biāo)準(zhǔn)的JSR-257 功能。還提供了一些擴(kuò)展功能: NFC 點(diǎn)對(duì)點(diǎn)通信,,讀寫Sony's FeliCa 卡,。該包有五部份:
javax.microedition.contactless:該API 包提供為不同的目標(biāo)提供公共接口。
javax.microedition.contactless.ndef:該 API 包提供處理NFC 目標(biāo)的功能
javax.microedition.contactless.rf:該 API 包提供處理RFID 目標(biāo)的功能,。
javax.microedition.contactless.sc:該 API 包提供處理智能卡的功能,。
javax.microedition.contactless.visual:該 API 包提供處理可見的條形碼的功能。
3,、應(yīng)用實(shí)例
通過對(duì) OBEX 和NFC 技術(shù)的分析,,以及對(duì)這兩種通信方式的整合,我們給出的方法的示意圖,,所圖3 所示:
圖-3 基于NFC 的OBEX 示意圖
一臺(tái)具有藍(lán)牙以及 NFC 的手機(jī)(Nokia 6131i)
一臺(tái)普通的支持藍(lán)牙 OBEX 的手機(jī)(Nokia N70)
一張 Mifare 標(biāo)簽,。
操作步驟:
(1)讀出普通手機(jī)的藍(lán)牙地址,并寫到Mifare 標(biāo)簽中,。并將標(biāo)簽貼在普通手機(jī)上,。
(2)運(yùn)行NFC 手機(jī)上的J2ME 程序,并選擇要傳送的文件,。
(3):把普通手機(jī),,靠近NFC 手機(jī),使之得到相應(yīng)參數(shù)。
(4):文件自動(dòng)傳到普通手機(jī)中,。
該方法,,并不需要對(duì)現(xiàn)有的藍(lán)牙手機(jī)進(jìn)行硬件的改過,也不需要安裝任何軟件,,只需要多加一張RFID,,就可以使用基于NFC 技術(shù)的藍(lán)牙文件推送方法。
4,、結(jié)束語
本文給出一種改進(jìn)的對(duì)象交換方法,,并給出實(shí)用實(shí)例。該方法使得文件推送更加方便,,安全,。我們希望今后加強(qiáng)本方式,使得可以商業(yè)用途,。NFC 作為一種新型的近距離無線通信技術(shù)與相關(guān)硬件相結(jié)合,還有很多新應(yīng)用,,值得深入的研究,。