當(dāng)前位置: 首頁 > 傳感測量產(chǎn)品 > 數(shù)據(jù)采集產(chǎn)品 > RFID系統(tǒng) > 讀寫器
發(fā)布日期:2022-05-20 點(diǎn)擊率:28
藍(lán)牙(Bluetooth)是由東芝、愛立信、IBM、Intel和諾基亞等公司等于1998 年5 月共同提出的近距離無線數(shù)據(jù)通信技術(shù)標(biāo)準(zhǔn)。它能夠在10 米的半徑范圍內(nèi)實(shí)現(xiàn)單點(diǎn)對多點(diǎn)的無線數(shù)據(jù)和聲音傳輸,其數(shù)據(jù)傳輸帶寬可達(dá)到1Mbps.本文利用藍(lán)牙技術(shù)開發(fā)一個(gè)用于手機(jī)文件數(shù)據(jù)傳輸?shù)能浖哂屑唇催B、使用靈活、安全高效等特點(diǎn),避免傳統(tǒng)網(wǎng)絡(luò)文件傳輸軟件存在的問題。
1 藍(lán)牙通信的關(guān)鍵技術(shù)
藍(lán)牙無線電技術(shù)基于在工業(yè)、科學(xué)以及醫(yī)學(xué)(ISM)上公用的2.45GHz 開放頻段,這一頻段無需授權(quán)并全球通用。當(dāng)藍(lán)牙設(shè)備互相連接時(shí),他們將組成一個(gè)微微網(wǎng)(piconet),即以一個(gè)主設(shè)備和最大7 個(gè)從設(shè)備的形式動(dòng)態(tài)創(chuàng)建網(wǎng)絡(luò)。其私有化和個(gè)性化特征表現(xiàn)得尤為突出。
1.1 藍(lán)牙協(xié)議棧
藍(lán)牙協(xié)議棧提供了一組的高層協(xié)議和API 以完成發(fā)現(xiàn)服務(wù)和模擬串行I/O,還有一個(gè)關(guān)于包分割和重組的低層協(xié)議以及多路技術(shù)協(xié)議和質(zhì)量服務(wù)。藍(lán)牙協(xié)議棧分為硬件和軟件兩部分,藍(lán)牙硬件協(xié)議棧由設(shè)備硬件提供,藍(lán)牙軟件協(xié)議棧則由軟件實(shí)現(xiàn)。
藍(lán)牙軟件協(xié)議棧是程序開發(fā)中的關(guān)鍵部分,其層次從下至上依次是: 宿主控制器接口(HostController Interface,HCI) 是藍(lán)牙軟件協(xié)議棧的最底層,直接和宿主控制器接口固件(Host ControllerInterface FIRmware)交互。邏輯鏈路控制和適配協(xié)議(Logical link Control and Adaptation Protocol,L2CAP) 該層負(fù)責(zé)處理包分割重組,為上層協(xié)議提供了有保證的服務(wù)。服務(wù)發(fā)現(xiàn)協(xié)議(ServiceDiscovery Protocol,SDP)包含用于發(fā)現(xiàn)服務(wù)是否有效等操作。RFCOMM 位于L2CAP 之上,提供了模擬標(biāo)準(zhǔn)串口通信的能力。對象交換協(xié)議(Object Exchange Protocol,OBEX)用于實(shí)際程序中的對象數(shù)據(jù)交換。
圖1 藍(lán)牙協(xié)議棧
1.2 J2ME 對藍(lán)牙的支持
早在JSR82 規(guī)范中就定義了javax.bluetooth 和javax.obex 兩個(gè)包,其中javax.bluetooth 定義了與藍(lán)牙通信相關(guān)的API , 而javax.obex(Object ExchangeProtocol)是建立在串口通信之上,實(shí)現(xiàn)以對象為單位的通信。在javax.bluetooth 中,Java 藍(lán)牙API 可以被分解為三個(gè)部分:發(fā)現(xiàn)服務(wù)、設(shè)備管理和藍(lán)牙通信,其主要類及接口有:本地藍(lán)牙管理器LocalDevice、遠(yuǎn)程藍(lán)牙設(shè)備RemoteDevice、搜索代理DiscoveryAgent、搜索偵聽DiscoveryListener、描述藍(lán)牙服務(wù)的特征屬性ServiceRecord 及藍(lán)牙服務(wù)屬性的類型DataElement.
1.3 J2ME 平臺下藍(lán)牙通信流程
圖2 藍(lán)牙通信流程圖
藍(lán)牙通信也是基于通用連接框架,與常見的C/S架構(gòu)類似,只是客戶端不知服務(wù)端的存在,需要通過無線搜索去發(fā)現(xiàn)。搜索到遠(yuǎn)程設(shè)備后,還需要進(jìn)行服務(wù)搜索去發(fā)現(xiàn)對方提供了哪些服務(wù)。
其中,藍(lán)牙通信是基于通用連接框架,對不同客戶端而言,需要通過搜索來獲得與服務(wù)端的連接信息。
藍(lán)牙服務(wù)端使用連接通知者對象,用于等待遠(yuǎn)程設(shè)備的連接,類似于阻塞式socket 服務(wù)端,它將一直等待直到接收到客戶端的連接請求。對于藍(lán)牙客戶端的搜索服務(wù)分為設(shè)備搜索和服務(wù)搜索,后者需要基于指定的遠(yuǎn)程設(shè)備才能進(jìn)行。客戶端和服務(wù)器端在獲得藍(lán)牙協(xié)議連接后,通過連接創(chuàng)建輸入/輸出流來進(jìn)行通信。
2 手機(jī)文件傳輸軟件的實(shí)現(xiàn)
2.1 藍(lán)牙服務(wù)端的實(shí)現(xiàn)
2.1.1 獲得本地設(shè)備管理器
獲得本地設(shè)備管理器會導(dǎo)致系統(tǒng)提示是否需要啟動(dòng)藍(lán)牙服務(wù),該步驟是藍(lán)牙設(shè)備通信最基本的初始化。
通過LocalDevice 類的getLocalDevice 方法即可獲取本地設(shè)備管理器。
try {
localDevice = LocalDevice.getLocalDevice();
} catch (BluetoothStateException init) {
init.printStackTrace();
}
1234
下一篇: PLC、DCS、FCS三大控