在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

            藍牙通信技術的模型解析與開發(fā)

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

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

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

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

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

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


            關鍵詞:

            評論


            相關推薦

            技術專區(qū)

            關閉