a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 手機與無線通信 > 設計應用 > 藍牙通信技術的模型解析與開發

藍牙通信技術的模型解析與開發

作者:華東師范大學電子系 張凌 姚萌 時間:2004-07-23 來源: 收藏
摘  要: 本文依據Ericsson藍牙開發包EBDK的特點,從多個方面解析藍牙模塊與計算機系統的通信過程,并介紹軟件編程中的接口設置。
關鍵詞: 藍牙技術;無線通信;解析

前言
藍牙技術是基于WPAN(Wireless Personal Area Network)的無線網絡連接技術,是以短程無線電收發技術為固定與移動設備通信環境建立了一個短程無線電的特別連接。它建立一個通用的無線電空中接口以及控制軟件的公開標準,使無線通信技術和計算機技術緊密結合,使不同廠家生產的便攜式設備在沒有電線或電纜相互連接的情況下在近距離范圍內具有互用、互操作的性能,代替固定與移動通訊設備之間的電纜。利用Ericsson藍牙開發包EBDK(Ericsson Bluetooth Development Kit),可以快速開發出建立在藍牙通信技術之上的應用,加速產品開發的進度。
藍牙系統模塊分析
藍牙協議體系結構框架如圖1所示。
從軟件和硬件來劃分,藍牙協議體系結構可分為底層硬件模塊,中間協議層(軟件模塊)和高端應用層三大部分。鏈路管理層(LM),基帶層(BB)和射頻層(RF)屬于藍牙的硬件模塊。
中間協議層包括邏輯鏈路控制和適配協議(1.2CAP),服務發現協議(SDP),串口仿真協議(RFCOMM)和電話通信協議(TCS)。藍牙協議棧的最上部是高端應用層,它對應于各種應用模型的profile,是profile的一部分。
主控制器接口HCI(Host Controller Interface)是藍牙協議中軟硬件之間的接口。它提供一個調用下層基帶,鏈路控制層,狀態和控制寄存器等統一的命令接口。HCI協議以上的協議軟件實體運行在主機上,而HCI以下的功能由藍牙設備來完成,兩者之間通過傳輸層進行交互。HCI提供對基帶控制器和鏈路管理器的命令接口,以及對硬件狀態和控制注冊成員的訪問。該接口還提供對藍牙基帶的統一訪問模式。

EBDK硬件結構
EBDK上的硬件分布結構如圖2所示。Radio模塊是藍牙硬件的射頻模擬部分,包括射頻發射器和射頻接收器,以跳頻技術實現頻率擴展,進行ISM頻段頻率信號的發送和接收。基帶模塊則對物理信道進行管理,鏈路控制模塊進行通信鏈路的建立、鑒權。

軟件功能分析
軟件分為兩部分:運行在主PC上的主機軟件和在藍牙基帶設備上運行的ROM程序。EBDK主機軟件在win98、NT PC上運行,通過RS-232或USB連接到EBDK。結構示意圖如圖3所示。
主機軟件功能機制
主機軟件有兩個主線程,一個執行主應用程序和傳輸數據包,另一個處理接收界面信息,如圖4所示。
圖4中左邊的圓圈代表主應用程序線程,右邊的圓圈代表接收器線程。接收器線程采用Microsoft定義的通信事件,一旦接收到一個通信事件(通常是接收緩沖區有一序列字符),就會產生一個windows消息,同時將接收到的字符序列送到包組裝器進行數據包的組裝。主應用程序處理windows消息隊列發現有輸入字符的消息后,就進行數據包的組裝,或者接收到用戶界面的變化,對windows的控制或輸入信息轉換成的數據流進行處理,進行數據包的整合,因為通常收到的數據不是一個完整的數據包。主程序判別出數據包的類型,然后進行圖形用戶界面的更新或發送數據包的相應處理。
通信過程
以EBDK中的Demo程序為例,其通信過程流程如圖5。
EBDK主機軟件結構為分層模塊化形式,每一層都進行了封裝,其他層只有通過接口才能訪問。
如果用戶應用程序發送了一序列數據,數據在到達RS-232之前,首先會進行包的組裝,生成通信協議格式的數據包,在發送數據包之前還必須檢測指令完成狀態機。指令完成狀態機指示從發送前一條指令之后系統是否仍在等待指令完成事件。如果狀態是空閑(IDLL)則發送數據包,如果狀態是等待指令完成(WAITING_FOR_CMD_COMF)用戶程序則被通知稍候再試。
在接收方向上,執行的操作與之相反。接收來的數據首先經過包組裝器,組裝成標準的數據包格式,然后解開包,抽取包中的數據,進行指令解碼,獲得數據中包含的指令。在指令被發送到指令處理器之前,仍然要檢測指令完成事件,以確定前一條指令是否已經被處理。之后,才被指令處理器處理,處理的結果反饋到應用程序進行界面的修改或通信狀態的改變處理。

指令通信示例
以一個簡單的示例來說明數據流動的全過程。
從EBDK的通信界面發送一條指令:
cmd cclk 0x2345
并按回車,將產生一個Windows事件調用字符串分析器對以空格分界的字符串進行標記和處理,生成一條消息字符序列。這個字符序列是對應指令的HCI位字符流。這個字符序列被封裝到數據包中,經過通信過程中的一系列過程發送給RS-232DLL,RS-232DLL再立即將它放到COMM口上,攜帶HCI指令的電信號從PC 的COM或USB口發出,沿著RS-232或USB線,到達EBDK的COM或USB中,穿過RS-232緩沖區buffer以及Mother Board進入基帶連接器和基帶設備。基帶的ROM程序將消息解碼并執行。在這種情況下,它生成一個數據幀,在空中通過電磁波傳輸。這個幀通過與Radio Module的接口,以串行序列的形式從射頻天線發送出去。
射頻信號被附近的一個EBDK獲取,它的射頻模塊將射頻調制信號轉換為一個數字信號,再以串行形式送到基帶設備。基帶控制和一個HCI數據包或事件包,再由基帶設備將該包通過RS-232(或USB)線送到PC。PC的CPU收到一個中斷指示收到一些字節數據,這些數據被送到緩沖器中,然后被RS-232包組裝器(Packet Builder)進行處理。應用程序收到一個消息指明有一個數據包要處理,最后根據抽取出來的指令,調用相應的函數進行操作。這樣就完成了一個消息通信的過程。
要以程序編程實現上述的過程,就需要在程序中設置上述操作中的軟件接口動作機制。在C++中以一個通信類可以實現上述的基本操作。
一個基本的藍牙通信對象應該具有以下的基本操作接口。
發送消息:
LssuoCommand:發送指令
TransmitRewData:發送數據
接收消息:
CommandCompleteSuccess:指令成功完成
CommandPending:指令延遲
CotRxPacket:收到數據包
ReadyForData:準備接收數據
DisconnectionOccurred:發生連接中斷
GotBTAddress:獲得藍牙通信地址
而在實際通信操作中,要分為通信客戶端和通信服務器端。因此,在基本的通信對象的基礎上要派生出Client 和Server對象,分別就具體的操作進行處理。
另外需要一個包組裝器專門處理數據包:
On_WMC_RXD_DATA:處理接收到數據之后的動作
PackelComplete:包接收完畢的動作
InvalidPacket:判斷包是否有效
在VC++中,可以利用藍牙工程模板自動生成,因此藍牙通信包軟件的開發具有易于實現和易與其他軟件捆綁的特點。

結語
本文分析了基于EBDK的藍牙通信的整個過程以及軟件實現機制,可以作為藍牙通信的應用開發的借鑒。具備了Ericsson藍牙開發工具包之后,由于藍牙軟件包具有捆綁性與易實現性,可以在此基礎上直接進行應用的開發,也可以從藍牙通信的軟件實現機制上理出應用的實現思路。■


關鍵詞:

評論


相關推薦

技術專區

關閉