国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于藍牙技術(shù)的手機與機頂盒互聯(lián)的設(shè)計與實現(xiàn)

2013-09-20 05:31:32國加磊苗方柴劍平宋金寶
關(guān)鍵詞:機頂盒內(nèi)核藍牙

國加磊,苗方,柴劍平,宋金寶

(1.中廣電廣播電影電視設(shè)計研究院,北京100045;2.中國傳媒大學(xué)信息工程學(xué)院,北京100024)

1 引言

智能化的家居生活,數(shù)字化、網(wǎng)絡(luò)化的娛樂是數(shù)字家庭多媒體的發(fā)展方向。目前,手機、機頂盒等信息設(shè)備是家庭中常見的多媒體終端,各有優(yōu)勢和局限性。手機側(cè)重于即時通信和便攜易用,但受限于小屏幕;機頂盒是理想的家庭媒體娛樂平臺,但目前因網(wǎng)絡(luò)、接口等條件所限,交互功能有所欠缺?,F(xiàn)有條件下,任一種網(wǎng)絡(luò)終端都很難實際完全取代另一種網(wǎng)絡(luò)終端。因此終端之間的互聯(lián)互通是促成融合的一種有效方式,有助于利用結(jié)合點開發(fā)新的業(yè)態(tài)。

本文介紹的基于藍牙技術(shù)的手機與機頂盒互聯(lián),正是解決上述問題的一種有效方式。

2 系統(tǒng)設(shè)計的技術(shù)原理

本設(shè)計旨在運用藍牙技術(shù)實現(xiàn)手機與機頂盒之間的互聯(lián)互通,而目前二者的發(fā)展日新月異,手機操作系統(tǒng)和機頂盒嵌入式系統(tǒng)種類繁多,在選擇它們互聯(lián)的實現(xiàn)方案時,必須考慮其通用性。因此,本設(shè)計采用通用性強的藍牙無線通信技術(shù),在手機端使用J2ME體系,在機頂盒端使用Linux嵌入式平臺,進行程序設(shè)計開發(fā)。

2.1 藍牙技術(shù)

藍牙是一種可以在短距離內(nèi)實現(xiàn)多種數(shù)字設(shè)備之間的無線數(shù)據(jù)通信的技術(shù),能夠簡化設(shè)備間通信,可提供較高的數(shù)據(jù)傳輸速率,現(xiàn)已被人們廣泛使用。手機與機頂盒各自特點不同,其互聯(lián)互通受到的設(shè)備性能、家庭環(huán)境特點等因素的制約,選擇藍牙技術(shù)作為它們之間的通信方式能夠有效解決這些問題。

藍牙技術(shù)擁有層次明確、分工嚴謹?shù)膮f(xié)議棧,其設(shè)計的主要原則是:盡可能利用現(xiàn)有的各種高層協(xié)議,保證現(xiàn)有協(xié)議與藍牙技術(shù)的融合,以及各種應(yīng)用之間的互通性,充分利用兼容藍牙技術(shù)規(guī)范的軟硬件系統(tǒng)[1]。藍牙協(xié)議棧結(jié)構(gòu)如圖所示:

圖1 藍牙協(xié)議棧結(jié)構(gòu)圖

藍牙標準的高層可選協(xié)議中有專門用于傳輸電話簿等小型文件對象的OBEX協(xié)議。但是由于經(jīng)過多層的封裝和開銷,使用OBEX在傳輸較大的多媒體文件如圖片、音頻文件時速度較慢。而RFCOMM協(xié)議提供了基于L2CAP協(xié)議的串口仿真,附加了對9針RS-232(EIATIA-232-E)串口仿真的規(guī)定,是一個簡單傳輸協(xié)議[2]。在開發(fā)過程中,本設(shè)計分別嘗試使用OBEX協(xié)議和直接在RFCOMM協(xié)議層測試文件傳輸,實驗結(jié)論表明前者速率通常只有幾十kbps,而后者傳輸文件的速率可以達到800~900kbps左右。因此本設(shè)計方案將底層的設(shè)備發(fā)現(xiàn)、服務(wù)搜索等,由藍牙協(xié)議棧提供的標準接口實現(xiàn);而將上層的應(yīng)用如指令控制、文件傳輸?shù)葯C頂盒與手機之間的通信,建立在RFCOMM層的端到端連接上。RFCOMM層之上采用自定義的通信協(xié)議和數(shù)據(jù)封裝格式,以達到靈活高效和輕量級的封裝。

2.2 Java及其J2ME體系

在手機端開發(fā)的程序,本設(shè)計運用了Java的J2ME體系。

Java,是Java計算機程序設(shè)計語言和Java平臺的總稱。Java平臺由Java虛擬機和Java API組成,向Java應(yīng)用程序提供了獨立于操作系統(tǒng)的標準接口,大大提高了Java的可移植性。

Java中的J2ME體系,專為小型設(shè)備、獨立設(shè)備、互聯(lián)移動設(shè)備、嵌入式設(shè)備程序開發(fā)而設(shè)計,應(yīng)用程序根據(jù)該規(guī)范只需編寫一次,就可以用于多種設(shè)備,其基本體系結(jié)構(gòu)如圖2所示:

圖2 J2ME的基本體系結(jié)構(gòu)

如圖2所示,在最底層的是主機操作系統(tǒng),任何程序必須在某個操作系統(tǒng)平臺下面才能運行。在配置層中,本設(shè)計選用CLDC(互聯(lián)受限設(shè)備配置)開發(fā)程序,它主要為微型設(shè)備或者嵌入式設(shè)備而設(shè)計[3]。但是,只有CLDC的基礎(chǔ)API是難以開發(fā)手機程序的,而且手機屬于互聯(lián)受限設(shè)備中的移動信息設(shè)備,所以需要在簡表層選用MIDP(Mobile Information Device Profile,移動信息設(shè)備描述)。最后,本設(shè)計使用手機的藍牙功能,需要選用可選包(Optional Packages)JSR 82,使用其中定義的與手機藍牙通信相關(guān)的 API[4]。

2.3 Linux與BlueZ

由于各種機頂盒平臺缺乏相對統(tǒng)一的開發(fā)接口并存在開放性的限制,本課題選擇更具有代表性的基于嵌入式Linux系統(tǒng)的機頂盒。Linux的官方藍牙協(xié)議棧使用了BlueZ,這也是目前應(yīng)用最廣泛的協(xié)議棧,幾乎支持所有已通過認證的藍牙設(shè)備。

BlueZ由多個獨立的模塊組成,內(nèi)核空間主要包括設(shè)備驅(qū)動層、藍牙核心及 HCI層、L2CAP與SCO 音頻層、RFCOMM、BNEP、CMTP與 HIDP層、通用藍牙SDP庫和后臺服務(wù)及面向所有層的標準套接字接口;在用戶空間提供了藍牙配置、測試及協(xié)議分析等工具。用戶空間的應(yīng)用程序通過API調(diào)用BlueZ下層模塊,進而通過USB等接口實現(xiàn)HCI層訪問底層硬件,即藍牙適配器。利用BlueZ HCI層的API,可以實現(xiàn)開啟、關(guān)閉藍牙設(shè)備,搜索周邊藍牙設(shè)備等功能。

3 系統(tǒng)的開發(fā)與實現(xiàn)

本設(shè)計以實現(xiàn)手機與機頂盒的互聯(lián)互通為目的,其系統(tǒng)組成的關(guān)系如圖3所示:

圖3 系統(tǒng)組成關(guān)系圖

如圖3所示,系統(tǒng)包括手機模塊和機頂盒模塊兩部分,它們互聯(lián)互通,為用戶提供更多功能體驗。系統(tǒng)功能包含了機頂盒與手機之間的設(shè)備發(fā)現(xiàn)、服務(wù)搜索、指令控制、文件共享,并使用以上功能實現(xiàn)典型應(yīng)用:手機遙控機頂盒,手機和機頂盒之間文件共享。系統(tǒng)的開發(fā)和實現(xiàn)將分別從手機端和機頂盒端的程序設(shè)計兩方面介紹。

3.1 手機端程序設(shè)計

為開發(fā)支持藍牙技術(shù)的手機程序,JCP(Java Community Process)制定了JSR 82標準,即Java藍牙無線技術(shù)API。該標準包括javax.bluetooth和javax.obex兩個包,前者定義了基于串口通信的API。本設(shè)計在J2ME體系中運用javax.bluetooth包,實現(xiàn)了手機端相關(guān)程序設(shè)計。

通過藍牙在手機端實現(xiàn)服務(wù)器功能的設(shè)計主要包含六部分內(nèi)容。首先通過LocalDevice類的getLocalDevice方法獲取本地藍牙設(shè)備管理器,實現(xiàn)藍牙設(shè)備通信的基本初始化。其次,生成用于串口通信的連接字符串,該字符串指定了在通信過程中本地藍牙設(shè)備使用RFCOMM層協(xié)議,標明了其在通信中服務(wù)器的身份、服務(wù)UUID、服務(wù)名稱以及相關(guān)安全參數(shù)。第三,利用連接字符串給連接通知者(Notifier)賦值,該連接通知者只在接收到遠程設(shè)備請求時才返回與該遠程設(shè)備的連接,否則一直等待。第四,設(shè)置本地藍牙設(shè)備的服務(wù)記錄屬性,供客戶端搜索并獲取。接著,通過連接通知者繼續(xù)等待遠程設(shè)備的連接。最后,通過連接對象創(chuàng)建輸入/輸出流,來實現(xiàn)服務(wù)端和客戶端的通信,直到通信結(jié)束[4]。

通過藍牙在手機端實現(xiàn)客戶端功能的設(shè)計主要包含四部分內(nèi)容。首先,獲取本地藍牙設(shè)備管理器,完成相關(guān)初始化工作。其次,設(shè)置該管理器處于搜索模式,實例化搜索代理,開始搜索遠程設(shè)備和服務(wù),并記錄搜索結(jié)果。第三,獲取連接字符串,建立與遠程設(shè)備的連接。最后,與服務(wù)器端相同,創(chuàng)建輸入/輸出流以實現(xiàn)通信,直到通信結(jié)束。

另外,在本設(shè)計中還需要考慮到通信時數(shù)據(jù)格式的問題,因為J2ME體系和C語言兩個平臺的數(shù)據(jù)結(jié)構(gòu)等細節(jié)規(guī)定不盡相同,這給二者通信造成了一定困難,尤其在手機遙控機頂盒的功能上,發(fā)送用于控制的字符時,需要在程序設(shè)計中做相應(yīng)的轉(zhuǎn)碼,機頂盒才可以正確識別。

手機端藍牙程序通過以上設(shè)計,調(diào)用相關(guān)API以開啟藍牙,搜索周邊可用設(shè)備,選中其中指定目標設(shè)備即發(fā)起RFCOMM層連接,實現(xiàn)了遙控機頂盒、與機頂盒共享文件的功能。

3.2 機頂盒端程序設(shè)計

本設(shè)計中的機頂盒端程序,是在Linux官方協(xié)議棧BlueZ的支持下完成的。在Ubuntu 8.10系統(tǒng)平臺上,開發(fā)過程中首先基于ARM9內(nèi)核的嵌入式開發(fā)板進行開發(fā)調(diào)試,然后移植到基于同為ARM926內(nèi)核的海思Hi3110的機頂盒平臺進行開發(fā)調(diào)試。機頂盒通過USB接口外接藍牙適配器以支持藍牙的硬件功能。

要在機頂盒平臺上正確使用藍牙功能需要重新編譯系統(tǒng)內(nèi)核以及藍牙適配器的驅(qū)動模塊,編譯BlueZ庫及藍牙工具集,制作文件系統(tǒng),從而能正確識別和使用USB藍牙適配器,并使用BlueZ提供的編程接口進行開發(fā)。在編譯Linux內(nèi)核時,進入“Bluetooth subsystem support”子選項,將所列全部編譯項目選中。然后進入“Bluetooth device drivers”,除“HCI BCM203x USB driver”和“HCI BPA10x USB driver”之外,選中其它所有編譯項目。完成上述操作后,進行內(nèi)核編譯,生成支持藍牙模塊的內(nèi)核鏡像文件。下一步,交叉編譯bluez-lib-2.25和bluez-lib-3.36,在lib子目錄下生成相關(guān)庫文件,并將其加入到嵌入式系統(tǒng)的文件系統(tǒng)當中,與添加了藍牙支持的Linux內(nèi)核一起,對藍牙設(shè)備提供全面的服務(wù)。

在機頂盒內(nèi)完成配置藍牙設(shè)備的基礎(chǔ)上,藍牙通信程序利用BlueZ提供的編程接口就可以實現(xiàn)與手機的互聯(lián)功能。藍牙協(xié)議棧的底層硬件協(xié)議在適配器的硬件中已經(jīng)實現(xiàn);軟件層面上的藍牙開發(fā)就要從HCI層之上的各協(xié)議層開始。藍牙功能的開和關(guān)、搜索周邊設(shè)備的功能由BlueZ的HCI層API直接提供。BlueZ提供了Socket編程接口,通過一個類似TCP/IP套接字的接口封裝了對L2CAP和RFCOMM的操作。本設(shè)計應(yīng)用層的各功能模塊,如指令控制、文件傳輸?shù)龋赗FCOMM層實現(xiàn)。創(chuàng)建一個Socket,其中第一個參數(shù)domain必須是:PF_BLUETOOTH,即指明采用藍牙協(xié)議族的結(jié)構(gòu)定義。Protocol參數(shù)為BTPROTO_RFCOMM,即指定使用的協(xié)議層。

RFCOMM層以端口(Port)區(qū)分不同的連接,可用的Port只有32個,需要在使用時動態(tài)分配。被連接方先向系統(tǒng)注冊一個服務(wù),分配到端口號,連接時將該端口號通過SDP協(xié)議通告連接發(fā)起方。使用藍牙MAC地址和端口號可以在RFCOMM層標識一個Socket連接。類似套接字在IP網(wǎng)絡(luò)的編程開發(fā)方式,服務(wù)器端使用bind,listen等API綁定、監(jiān)聽該套接字;客戶端用connectAPI發(fā)起連接。建立連接后雙方使用read,write或send,recv等API發(fā)送接收數(shù)據(jù)。

本設(shè)計針對指令控制和文件傳輸制訂了相應(yīng)的通信協(xié)議。當機頂盒收到標識為控制信息的字符串數(shù)據(jù)時進行字符串解析,判斷進行換臺鍵、方向鍵或其它操作,并將鍵值消息發(fā)送給機頂盒DVB軟件系統(tǒng),實現(xiàn)遙控器的功能。傳輸文件時使用了單獨的線程,使用不同于指令控制的端口,這樣在傳輸文件的同時不影響遙控操作。接收文件線程在收到要求傳輸?shù)奈募笮『臀募笤谥付窂絼?chuàng)建該文件并開始接收,如創(chuàng)建失敗則向手機返回出錯代碼。

通過上述功能設(shè)計,機頂盒端藍牙應(yīng)用程序?qū)崿F(xiàn)了典型應(yīng)用:開啟藍牙并搜索周邊可被發(fā)現(xiàn)的設(shè)備,開啟服務(wù)器端線程等待手機客戶端的接入。根據(jù)接收的指令內(nèi)容響應(yīng)相應(yīng)的操作,開啟文件傳輸線程以接收傳輸?shù)奈募?/p>

4 結(jié)論

經(jīng)實驗和測試,本設(shè)計已實現(xiàn)手機與機頂盒之間的跨平臺無線互聯(lián):手機遙控機頂盒,二者之間彼此發(fā)現(xiàn)、連接、傳輸數(shù)據(jù)。

本設(shè)計基于不同技術(shù)原理,在實踐中不斷摸索和改進程序,最終基于藍牙技術(shù)設(shè)計實現(xiàn)了手機與機頂盒之間的互聯(lián)互通,這為數(shù)字家電向網(wǎng)絡(luò)化、智能化發(fā)展提供了一種新方式。

[1]劉書生,趙海.藍牙技術(shù)應(yīng)用[M].沈陽:東北大學(xué)出版社,2001.6-9.

[2]張祿林,雷春娟,郎曉虹.藍牙協(xié)議及其實現(xiàn)[M].北京:人民郵電出版社,2001.138-139.

[3]郭克華.JavaME移動開發(fā)實例精講[M].北京:清華大學(xué)出版社,2010.1-4.

[4]汪永松.J2ME手機高級編程[M].北京:機械工業(yè)出版社,2009.66-73.

猜你喜歡
機頂盒內(nèi)核藍牙
萬物皆可IP的時代,我們當夯實的IP內(nèi)核是什么?
藍牙音箱的直線之美
強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
安全使用機頂盒注意五點
基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
Linux內(nèi)核mmap保護機制研究
簡單、易用,可玩性強Q AcousticsBT3藍牙音箱
適合自己的才是最好的 德生(TECSUN) BT-50藍牙耳機放大器
數(shù)字電視機頂盒軟件自動測試系統(tǒng)的開發(fā)及應(yīng)用
電子測試(2017年15期)2017-12-18 07:19:23
緊急:藍牙指尖陀螺自燃!安全隱患頻出
玩具世界(2017年8期)2017-02-06 03:01:38
荆门市| 唐海县| 贺州市| 苍山县| 东阳市| 探索| 永福县| 铁岭市| 陆良县| 天镇县| 京山县| 禄丰县| 神池县| 马鞍山市| 普兰县| 历史| 高淳县| 晋城| 桃园市| 札达县| 子洲县| 宣威市| 长沙县| 溧水县| 马公市| 乐山市| 唐河县| 阳原县| 波密县| 武宁县| 吉木萨尔县| 禄劝| 贵阳市| 肇源县| 昌都县| 霍邱县| 富顺县| 岳普湖县| 永定县| 张家港市| 上蔡县|