生設(shè)計(jì)開題報(bào)告與2015年和田_第1頁
生設(shè)計(jì)開題報(bào)告與2015年和田_第2頁
生設(shè)計(jì)開題報(bào)告與2015年和田_第3頁
生設(shè)計(jì)開題報(bào)告與2015年和田_第4頁
生設(shè)計(jì)開題報(bào)告與2015年和田_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、摘 要隨著科技的發(fā)展,人民生活水平的提高,人們對住宅的要求也越來越高,智能家居就是為解決人們的這一要求誕生的。照明是建筑的重要組成部分,人們對房屋舒適度的需求不斷增多,智能照明行業(yè)發(fā)展前景可期。作者經(jīng)過對智能照明,針對上述問題提出了一個(gè)基于 Android系統(tǒng)相關(guān)技術(shù)的分析和和WIFI 無線網(wǎng)絡(luò)的智能家居照明系統(tǒng)的解決方案。該系統(tǒng)使用一個(gè) Android作為控制中心,CC2530 作為無線收發(fā)器,通過 WIFI 無線網(wǎng)絡(luò),從而達(dá)到對照明系統(tǒng)控制的目的。本智能照明系統(tǒng)設(shè)計(jì)方案基本可以滿足用戶對照明控制的功能需求,同時(shí)由于采用了 WIFI 無線技術(shù),大大降低了整個(gè)系統(tǒng)的成本。關(guān)鍵字:智能照明系統(tǒng),

2、Android,CC2530ABSTRACTWith the development of science and technology to improve peoples living standards, people demand more and more comfortable houses, smart home is tosolve this requires . Lighting is an important part of the building, the demand ofcomfortable houses continues to increase ,ellige

3、nt lighting industry wibright future. On theelligent lighting system through related technologyysis and market research, to address the problem presented a solutions based on Android platform and WIFI wireless network smart home lightingsystems . The system uses an Android phone as the control cente

4、r, CC2530 aswireless transceivers, via WIFI wireleetwork, so as to achieve the pureof the lighting system control. Theelligent lighting system design to meetthe basic needs of lighting control for users , butnks to the WIFI wirelesstechnology, which grey reduthe cost of the entire system.Key Words:e

5、lligent lighting system,Android,CC2530目 錄第 1 章1.4第 2 章2.1引言1智能燈控系統(tǒng)的研究背景1課題的研究價(jià)值及意義1智能燈控系統(tǒng)的研究現(xiàn)狀2課題重點(diǎn)研究內(nèi)容2理論基礎(chǔ)4Android 系統(tǒng)..4Android 系統(tǒng)架構(gòu)4Android Framework 框架6Android 的生命周期7Android 開發(fā)Eclipse82.2ZigBee 技術(shù).22.2.3無線通信技術(shù)比較10ZigBee 協(xié)議棧11ZigBee 開發(fā)模塊132.3Socket 通信15Socket 中

6、重要的 API16Socket 的連接過程16客戶端的設(shè)計(jì)與實(shí)現(xiàn)18UI 界面設(shè)計(jì)18幾種常用控件的實(shí)現(xiàn)19人機(jī)交互 UI 實(shí)現(xiàn)25Socket 通信的實(shí)現(xiàn)33硬件的設(shè)計(jì)與實(shí)現(xiàn)46第 3 章3.13.2第 4 章4.1 硬件電路設(shè)計(jì)4..4CC2530的優(yōu)勢46LED 模塊47天線模塊48串口模塊484.2 硬件編的通信協(xié)議49數(shù)據(jù)通信的報(bào)文格式49功能碼設(shè)置50第 5 章 系統(tǒng)測試5UI 測試53網(wǎng)關(guān)到 ZigBee 的測試56系統(tǒng)整體測試58第 6 章 結(jié)束語60本文總結(jié)60本系統(tǒng)展望60參考文獻(xiàn)61致 謝64外文資料原文65外文資料

7、譯文70第 1 章 引言由于計(jì)算機(jī)的不斷發(fā)展,智能家居系統(tǒng)也隨之誕生。智能家居是利用網(wǎng)絡(luò)技術(shù),通信技術(shù),綜合布線技術(shù)結(jié)合工程學(xué)原理,融合個(gè)性需求將家中使用的家電如冰箱,空調(diào),電視,暖氣,安防等有機(jī)的結(jié)合在一起,通過智能控制終端”的全新家居理念1。而照明是建筑的重要組控制和管理,實(shí)現(xiàn)“成部分,隨著人們生活水平的提高,對房屋舒適度的需求不斷增多,智能照明行業(yè)發(fā)展前景可期。1.1 智能燈控系統(tǒng)的研究背景智能家居2是人類住宅的一場新,在我國高科技和正在由智能智能住宅小區(qū),進(jìn)而走進(jìn)家庭?,F(xiàn)代社會(huì)的家庭正在以家庭智能化帶來的多元化信息和安全、舒適、便利的生活環(huán)境,作為一個(gè)理想的目標(biāo)來追求3。照明是建筑的重

8、要組成部分,隨著人們生活水平的提高,對房屋舒適度的需求不斷增多,智能照明行業(yè)發(fā)展前景可期。作為樓宇和家庭智能化的重要組成部分,智能照明市場份額也將隨之不斷增加,產(chǎn)業(yè)發(fā)展迎來突破4。此外,伴隨我地產(chǎn)市場的不斷發(fā)展,家用智能照明系統(tǒng)也將進(jìn)入快速發(fā)展時(shí)期。ZigBeeLight Link(ZLL)智能照明市場前景樂觀5。本智能家居系統(tǒng),主要是基于 Zigbee 網(wǎng)絡(luò)節(jié)點(diǎn)的智能家居系統(tǒng)。ZigBee 是基于IEEE802.15.4 標(biāo)準(zhǔn)的低功耗局域網(wǎng)協(xié)議,根據(jù)國際標(biāo)準(zhǔn)規(guī)定,ZigBee 技術(shù)是一種短距離、低功耗的無線通信技術(shù)。它成本低,可擴(kuò)展性強(qiáng),功耗低,靈活性強(qiáng),開放高效,安全可靠而且可以實(shí)現(xiàn)需求。

9、終端控制,真正滿足了用戶智能家居化的1.2 課題的研究價(jià)值及意義此項(xiàng)目的智能燈飾,主要是基于 Android和 Zigbee 網(wǎng)絡(luò)節(jié)點(diǎn)的智能家居系統(tǒng),它具有成本低,功耗小,可擴(kuò)展性強(qiáng),靈活性強(qiáng),開放高效,安全可靠的特點(diǎn)而且可以實(shí)現(xiàn)終端控制,真正滿足了用戶智能家居化的需求。它還能取代目前市場上的 43MMHZ、WIFI、藍(lán)牙等五項(xiàng)技術(shù)燈控方案,只要遵循 ZLL 標(biāo)準(zhǔn)協(xié)議的燈具都可以兼容使用,所以具有較高的實(shí)用價(jià)值。1.3 智能燈控系統(tǒng)的研究現(xiàn)狀智能照明的這些功能決定了它的應(yīng)用價(jià)值,國內(nèi)外已有一些領(lǐng)域已經(jīng)展開應(yīng)用。智能照明現(xiàn)在在國外應(yīng)用的比較多一些,像的醫(yī)院,通過智能照明系統(tǒng),實(shí)現(xiàn)了符合晝夜節(jié)律的

10、照明,使得住院的生活周期保持穩(wěn)定,同時(shí)實(shí)現(xiàn)了節(jié)能6。例如世博會(huì)也用到了智能照明系統(tǒng),國內(nèi)的一些公司在這方面也做的不錯(cuò)??萍季屯瞥隽?50-100m2,100-200m2,100-200m2,以及別墅的智能燈控解決方案;針對酒店他們還提供客房的早安情景,浪漫情景和情景的燈控方案。國奧村花園酒店作為目前世界唯一以奧運(yùn)會(huì)及文化為的酒店,位于國奧村內(nèi)。國奧村即奧運(yùn)會(huì)賽時(shí)的運(yùn)動(dòng)員村(奧運(yùn)村),是 2008 年奧運(yùn)會(huì)、殘奧會(huì)各國運(yùn)動(dòng)員、住地及會(huì)議場所。這個(gè)酒店也是采用了當(dāng)時(shí)先進(jìn)的智能燈控系統(tǒng)。1.4 課題重點(diǎn)研究內(nèi)容介紹的是基于 Android決方案。其中涉及 Android和 WIFI 無線網(wǎng)絡(luò)的智能家

11、居燈控系統(tǒng)解的應(yīng)用開發(fā)技術(shù)、無線通信技術(shù)、控制技術(shù)。中所設(shè)計(jì)的智能家居燈控系統(tǒng)是以 Android作為控制端,以 WIFI 無線模塊組成室內(nèi)網(wǎng)絡(luò)作為信息傳輸網(wǎng)絡(luò),從而達(dá)到對家庭中的燈飾進(jìn)行集中控制和管理的目的7。課題的重點(diǎn)內(nèi)容有:(1)了解并分析國內(nèi)外智能燈控系統(tǒng)的研究現(xiàn)狀,對比世界上主流智能燈控系統(tǒng)系統(tǒng)的優(yōu)勢和,挖掘人們對智能燈控系統(tǒng)新的需求,提出具有較全功能且價(jià)格便宜的解決方案,給出系統(tǒng)的總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)。(2)直觀,最具端的人機(jī)交互界面設(shè)計(jì)。一個(gè)良好的人機(jī)交互界面無疑是對顧客最的。智能家居本來就是為了方便用戶生活,所以設(shè)計(jì)智能家居人機(jī)交互界面首要原則是要操作方便,其次還應(yīng)該遵循用戶原則

12、、信息量小原則、幫助提示原則和最佳組合原則。(3)是安卓和 CC2530 的通信設(shè)計(jì)。本智能家居解系統(tǒng)決方案的控制中心主要。安卓通過 WIFI 信號發(fā)送控制命令,控制命令通過網(wǎng)關(guān)進(jìn)行TCP/IP 和ZIGBEE 的協(xié)議轉(zhuǎn)換,最后經(jīng)過協(xié)議轉(zhuǎn)換令控制 CC2530。(4)(5)TCP/IP 和 ZIGBEE 協(xié)議的轉(zhuǎn)換。智能家居系統(tǒng)測試,中首先分別對智能家居系統(tǒng)的各個(gè)模塊進(jìn)行了測試,各個(gè)模塊運(yùn)行正常后,再對智能家居總體進(jìn)行了簡單的測試。第2章 理論基礎(chǔ)2.1Android 系統(tǒng)Android 系統(tǒng)是基于 Linux 內(nèi)核的開源操作系統(tǒng),自 2007 年展示這款名為 Android 的操作系統(tǒng),從此

13、 Android 便開始逐漸占領(lǐng)全球 市場。截止 2013 年 9 月,全球使用 Android 系統(tǒng)的移動(dòng)設(shè)備已經(jīng)超過向外平板10 億臺,智能市場占有率在 76%。系統(tǒng)之所以選擇 Android 操作系是它的優(yōu)點(diǎn):它開放性好,有強(qiáng)大的開發(fā)是因?yàn)樗F(xiàn)在極大的市場占有率,二者的支持,讓消費(fèi)者有很多可以使用;擺脫了運(yùn)營商的,用戶可以更加方便的連接網(wǎng)絡(luò);豐富的硬件選擇,由于 Android 的開放性,廠商們推出了各種各樣的產(chǎn)品,卻不影響兼容性;不受任何限制的開發(fā),Android為第開發(fā)商提供了一個(gè)很應(yīng)用,Android,寬泛的環(huán)境,無縫的結(jié)合了眾多的由此而生;無縫結(jié)合的服務(wù)如地圖、郵件、搜索等。2.

14、1.1 Android 系統(tǒng)架構(gòu)一個(gè)要成為一個(gè)優(yōu)秀的,它必須得有一個(gè)成系統(tǒng)架構(gòu)所支撐。眾所周知,Android 系統(tǒng)現(xiàn)在已經(jīng)占據(jù)大部分市場份額,可見其系統(tǒng)的優(yōu)秀性和成熟性。圖 2-1 為 Android 系統(tǒng)架構(gòu)圖。分層架構(gòu)在系統(tǒng)架構(gòu)中廣泛使用,Android 系統(tǒng)也是采用的分層架構(gòu),大概可以分為四層,從上至下依此為:應(yīng)用程序?qū)印?yīng)用程序框架層、系統(tǒng)運(yùn)行庫層以及 Linux 內(nèi)核層。下面分別簡單介紹下這四層:(1)應(yīng)用程序?qū)討?yīng)用程序?qū)邮?Android 系統(tǒng)架構(gòu)的最上面一層。Android之所以能取得成功,不僅僅是因?yàn)槠涫且粋€(gè)好的操作系統(tǒng),還因?yàn)槠浒撕芏鄡?yōu)秀的應(yīng)用程序,如:撥號程序、web

15、 瀏覽器程序、瀏覽器程序、機(jī)程序等。Android的這些程序都是由 java 語言開發(fā)的,開發(fā)也可以自己編寫自己的應(yīng)用程序來替代這些程序,這樣的方式使得 Android 操作系統(tǒng)更加的靈活和個(gè)性化,這點(diǎn)不同于其他操作系統(tǒng)是把這些在系統(tǒng),無法更改。(2)應(yīng)用程序框架層應(yīng)用程序框架層是 Android 系統(tǒng)很重要的一層,很多應(yīng)用程序的功能都是通過這一層來實(shí)現(xiàn)的,它是程序員進(jìn)行 Android 應(yīng)用開發(fā)的基礎(chǔ)。該層中實(shí)現(xiàn)了很多組件,程序員可以直接使用這些組件來進(jìn)行快速的應(yīng)用程序的開發(fā),也可以繼承這些組件來實(shí)現(xiàn)具有自己個(gè)性的一些應(yīng)用程序8。從圖 2-1 中不難看出,Android 的應(yīng)用程序框架層里面

16、主要包括:ActivityManager( 活動(dòng)管理器)、Window Manager(窗口管理器)、Content ProvIDer(內(nèi)容提供器)等。(3)系統(tǒng)運(yùn)行庫層從圖 2-1 中可以看出,Android的系統(tǒng)運(yùn)行庫這層分為兩部分:系統(tǒng)庫和 Android 運(yùn)行時(shí)。以下簡單介紹下這兩部分:a) 系統(tǒng)運(yùn)行庫:系統(tǒng)運(yùn)行庫支撐著應(yīng)用程序框架層,是應(yīng)用程序框架層和Linux 內(nèi)核層之間的橋梁,它起著連接這兩層的重要作用。系統(tǒng)運(yùn)行庫主要分為如下幾個(gè)部分:Surface Manager、Media Framework 等b)Android 運(yùn)行時(shí)是由庫和 Dalvik 虛擬機(jī)組成,Android 應(yīng)

17、用程序時(shí)采用 Java 語言編寫,程序在 Android 運(yùn)行時(shí)中執(zhí)行。(4)Linux 內(nèi)核層Android 系統(tǒng)的內(nèi)核是基于 Linux2.6 的,因此 Android 系統(tǒng)的一些系統(tǒng)服務(wù)如內(nèi)存管理、網(wǎng)路協(xié)議、驅(qū)動(dòng)模型、進(jìn)程管理、安全性等都依賴于 Linux 內(nèi)核。圖 2-1 為 Android 系統(tǒng)架構(gòu)圖2.1.2 Android Framework 框架開發(fā)者在開發(fā) Android 應(yīng)用程序的時(shí)候都是通過框架來與 Android 底層進(jìn)行通信的,所以框架在 Android 中是一個(gè)很重要的概念。框架其實(shí)是一個(gè)約定,凡是參與了應(yīng)用程序開發(fā)的程序員都必須遵守這個(gè)約定,大家在這個(gè)約定上可以進(jìn)

18、行一定的擴(kuò)展,以保證程序主體結(jié)構(gòu)的一致性,可以說,它就是應(yīng)用程序的其作用是讓程序保持清晰、一目了然,在滿足不同需求的同時(shí)又不互相影響9。,在 Android SDK 中內(nèi)置了一些對象,其中比較重要的組件有 Activities、ents、Servi以及 Content ProvIDers。 Activities 即活動(dòng),Activities 所有操作都與用戶相關(guān),即一個(gè)負(fù)責(zé)與用戶交互的組件。一個(gè) Activity 就是一個(gè)用戶界面,一個(gè)應(yīng)用程序可以定義一個(gè)或者多個(gè) Activity,每個(gè) Activity 都可以保存和恢復(fù)自身的狀態(tài)。ents 字面意思是“意圖”,它的作用其實(shí)是解決 Andro

19、id 應(yīng)用程序各個(gè)組件之間的通信問題。在應(yīng)用程序中,一次操作的動(dòng)作、動(dòng)作涉及的數(shù)據(jù)、附加數(shù)據(jù)的描述都是由ent 負(fù)責(zé),Android 根據(jù)ent 的描述,找到相應(yīng)的組件,將ent 傳遞給調(diào)用的組件,并完成組件的調(diào)用。所以,ent 其實(shí)就是一個(gè)媒介,專門提供組件之間相用的相關(guān)信息,實(shí)現(xiàn)調(diào)用者和被調(diào)用者之間的通信。Servi服務(wù),Service 是運(yùn)行在、沒有與用戶直接交互的任務(wù),比如要做一個(gè)音樂器,可能會(huì)被另一個(gè)活動(dòng)激活,但音樂是需要作為背景音樂,器這種程序就可以考慮作為一種服務(wù) Service,然后別的活動(dòng)可以來操作這個(gè)10。Content ProvIDer 即內(nèi)容提供者,一個(gè)內(nèi)容提供者 Co

20、ntent ProvIDer 就是由自定義的 API 封裝讀寫操作的一套數(shù)據(jù),Content ProvIDer 是不同應(yīng)用程序之間共享全局?jǐn)?shù)據(jù)最好的方式11。Android 應(yīng)用程序主要是由 src、gen、assets、res 四個(gè)文件。其中,src是文等源代碼文件,gen 中存放的是一些自動(dòng)的文件,主要是 R.java 文件,R.java件由 ADT 自動(dòng),不能修改,但可以通過這個(gè)文件系統(tǒng)中圖像、資源。assets 也是一個(gè)資源文件,其中的資源沒有ID,需要完整路徑來為資源目錄,里面的文件夾存放不同的資源。res以上只是簡單的介紹了下 Android 系統(tǒng)的構(gòu)架和 Android 應(yīng)用程序

21、的框架,其實(shí),Android 系統(tǒng)中還有很多值得關(guān)注的地方,但由于這不是本文的重點(diǎn),這里不再。2.1.3 Android 的生命周期Android 的應(yīng)用程序是有生命周期的,所謂生命周期就是指應(yīng)用程序從啟動(dòng)到終止的這個(gè)過程。Android 有五種進(jìn)程:前臺進(jìn)程,可見進(jìn)程,服務(wù)進(jìn)程,后臺進(jìn)程,空進(jìn)程。幾種進(jìn)程的優(yōu)先級見圖 2-2 Android 進(jìn)程的優(yōu)先級。由圖中可以知道優(yōu)先級最高的是前臺進(jìn)程,其次是可見進(jìn)程和服務(wù)進(jìn)程,優(yōu)先級最低的是進(jìn)程和空進(jìn)程。Android 的組件也是有生命周期的,這個(gè)周期就是組件從建立到銷毀的過程。在生命周期中,組件在可見、不可見、活動(dòng)、非活動(dòng)等狀態(tài)中不斷的轉(zhuǎn)換。And

22、roid 中最應(yīng)該關(guān)注的就是 Activity 的生命周期,Activity 表現(xiàn)為四種狀態(tài),分別是活動(dòng)狀態(tài)、非活動(dòng)狀態(tài)、暫停狀態(tài)和停止?fàn)顟B(tài)12。之間的變換關(guān)系如圖2-3 Activity的四種狀態(tài)的變化關(guān)系圖。圖 2-2 Android 進(jìn)程的優(yōu)先級圖 2-3 Activity 的四種狀態(tài)的變化關(guān)系圖2.1.4 Android 開發(fā)EclipseEclipse 是一個(gè)開放源的基于 Java 的可擴(kuò)展開發(fā)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 Java 開發(fā)工具(Java Development Tools

23、,JDT)。開放源代碼用戶的是這樣一種,它們在發(fā)布時(shí)附帶了旨在確保將某些權(quán)利授予證。當(dāng)然,最明顯的權(quán)利就是源代碼必須可用,以便用戶能地修。這種用戶權(quán)利的保護(hù)是通過一種稱為 copyleft 的策略來完成改和再分發(fā)該的:證主張保護(hù),除非明確授予用戶這樣的權(quán)利,否則用戶不得分發(fā)該了。copyleft 還要求同一證涵蓋任何被再分發(fā)的。這實(shí)際上倒置的目的使用來授予用戶權(quán)利,而不是為的開發(fā)者保留copyleft 經(jīng)常被描述為“保留所有Eclipse 工作臺”。在第一次打開 Eclipse 時(shí),首先看到的是下面的歡迎屏幕(如圖 2-4):圖 2-4 Eclipse 主界面圖Eclipse 工作臺由幾個(gè)稱為

24、視圖(view)的窗格組成,比如左上角的 Navigator視圖。窗格的集合稱為()。默認(rèn)的是 resource,它是一個(gè)基本的通用視圖集,用于管理項(xiàng)目以及查看和編輯項(xiàng)目中的文件。Navigator 視圖允許您創(chuàng)建、選擇和刪除項(xiàng)目。Navigator 右側(cè)的窗格是 編輯器區(qū)域。取決于 Navigator 中選定的文檔類型,一個(gè)適當(dāng)?shù)木庉嬈鞔翱趯⒃谶@里打開。如果 Eclipse 沒有用于某特定文檔類型(例如,Windows 系統(tǒng)上的.doc 文件)的適當(dāng)編輯器,Eclipse 將設(shè)法使用外部編輯器來打開該文檔。Navigator 下面的 Outline 視圖在編輯器中顯示文檔的大綱;這個(gè)大綱的準(zhǔn)

25、確性取決于編輯器和文檔的類型;對于 Java 源文件,該大綱將顯示所有已 的類、屬性和方法。Tasks 視圖收集關(guān)于您正在操作的項(xiàng)目的信息;這可以是 Eclipse 生成的信息,比如編譯錯(cuò)誤,也可以是手動(dòng)添加的任務(wù)。2.2ZigBee 技術(shù)ZigBee 是基于IEEE802.15.4 標(biāo)準(zhǔn)的低功耗局域網(wǎng)協(xié)議。根據(jù)國際標(biāo)準(zhǔn)規(guī)定,ZigBee 技術(shù)是一種短距離、低功耗的無線通信技術(shù)。這一名稱(又稱紫蜂協(xié)議)來源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飛翔和“嗡嗡”(zig)地抖動(dòng)翅膀的“舞蹈”來與同伴傳遞花粉所在方位信息,也就是說蜜蜂依靠這樣的方式了群體中的通信網(wǎng)絡(luò)。其特點(diǎn)是近距離、低復(fù)雜度、自組織

26、、低功耗、低數(shù)據(jù)速率。主要適合用于自動(dòng)控制和控制領(lǐng)域,可以嵌入各種設(shè)備。簡而言之,ZigBee 就是一種便宜的,低功耗的近距離無線組網(wǎng)通訊技術(shù),ZigBee 協(xié)議是一種低速短距離傳輸?shù)臒o線網(wǎng)絡(luò)協(xié)議。ZigBee 協(xié)議從下到上分別為物理層(PHY)、等。其中物理層和控制層(MAC)、傳輸層(TL)、網(wǎng)絡(luò)層(NWK)、應(yīng)用層(APL)控制層遵循IEEE 802.15.4 標(biāo)準(zhǔn)的規(guī)定。2.2.1 無線通信技術(shù)比較智能家居與傳統(tǒng)家居最大的區(qū)別在于,前者通過有線或者無線的方式組成一個(gè)完整的各類通信、網(wǎng)絡(luò)。在這個(gè)網(wǎng)絡(luò)中不僅包含了家居設(shè)備,還包括人們?nèi)粘J褂玫慕K端。人與家居可以直接交互,也可以通過這些終端通

27、過網(wǎng)絡(luò)進(jìn)行交互,同時(shí)所有的設(shè)備也通過網(wǎng)絡(luò)進(jìn)行信息共享,以及配合完成某項(xiàng)家居功能。目前家居設(shè)備互信主要以無線連接為主,其中以基于 802.11 協(xié)議的 Wi-Fi 最為普遍,此外還有藍(lán)牙、NFC(RFID)、Zigbee、Z-wave、UWB、IrDA 等等。各種無線通信技術(shù)的特點(diǎn):a)Wi-Fi 技術(shù)突出的優(yōu)勢在于:1. 無線電波的覆蓋范圍廣,Wi-Fi 的半徑則可達(dá) 100 米,自不用說,就是在整棟大樓中也可使用;2. 傳輸速度非???,可以達(dá)到 11mbps,符合個(gè)人和社會(huì)信息化的需求。藍(lán)牙技術(shù)盡管是目前較為先進(jìn)的無線網(wǎng)絡(luò)技術(shù),而且已經(jīng)在很多設(shè)備進(jìn)行互操作中逐漸普及,但對于許多消費(fèi)電子設(shè)備而

28、言,利用它來作為電纜的替代方案,在成本和功耗方面還很難令人滿意13。Zigbee 是目前智能家居領(lǐng)域發(fā)展最快,應(yīng)用范圍最廣的無線傳輸技術(shù)。它具有近距離、低復(fù)雜度、低功耗、低數(shù)據(jù)速率、低成本等特征。其主要適用于自動(dòng)控制和控制領(lǐng)域,可以滿足對小型廉價(jià)設(shè)備的無線聯(lián)網(wǎng)和控制功能。對于家庭網(wǎng)絡(luò)通訊而言:傳輸?shù)臄?shù)據(jù)量小,在傳輸速率上不需要太高的要求。網(wǎng)絡(luò)的容量要大,家庭中的各種電器設(shè)備多。信息的實(shí)時(shí)性好,時(shí)延短,成本低。相對于現(xiàn)有的各種無線通信技術(shù),Zigbee 技術(shù)是功耗和成本最低的技術(shù)之一,很好地滿足了智能家居的需求。2.2.2 ZigBee 協(xié)議棧a)ZigBee 無線網(wǎng)絡(luò)協(xié)議協(xié)議是一系列的通信標(biāo)準(zhǔn)

29、,通信雙方需要共同按照這一標(biāo)準(zhǔn)進(jìn)行正常的數(shù)據(jù)發(fā)射和接收。協(xié)議棧是協(xié)議的具體實(shí)現(xiàn)形式,通俗點(diǎn)來理解就是協(xié)議棧是協(xié)議和用戶之間的一個(gè)接口,開發(fā)線數(shù)據(jù)收發(fā)。通過使用協(xié)議棧來使用這個(gè)協(xié)議的,進(jìn)而實(shí)現(xiàn)無ZigBee 無線網(wǎng)絡(luò)協(xié)議層的架構(gòu)圖:PHY(物理層)、MAC(介質(zhì)層)技術(shù)規(guī)范、NWK(網(wǎng)絡(luò)層)、 APS(應(yīng)用程序支持子層)、APL(應(yīng)用層)技術(shù)規(guī)范(如圖 2-5)。圖 2-5 ZigBee 協(xié)議棧圖ZigBee 協(xié)議棧就是將各個(gè)層定義的協(xié)議都集合在一直,以函數(shù)的形式實(shí)現(xiàn),并給用戶提供 API(應(yīng)用層),用戶可以直接調(diào)用。ZigBee 協(xié)議棧已經(jīng)實(shí)現(xiàn)了ZigBee 協(xié)議,用戶可以使用協(xié)議棧提供的 A

30、PI 進(jìn)行應(yīng)用程序的開發(fā),在開發(fā)過完全不必關(guān)心 ZigBee 協(xié)議的具體實(shí)現(xiàn)細(xì)節(jié),要關(guān)心是:應(yīng)用層的數(shù)據(jù)是使用哪些函數(shù)通過什么方式把數(shù)據(jù)發(fā)送出去或者把數(shù)據(jù)接收過來的。所以最重要的是要會(huì)使用 ZigBee 協(xié)議棧。舉個(gè)例子,用戶實(shí)現(xiàn)一個(gè)簡單的無線數(shù)據(jù)通信時(shí)的一般步驟:1、組網(wǎng):調(diào)用協(xié)議棧的組網(wǎng)函數(shù)、加入網(wǎng)絡(luò)函數(shù),實(shí)現(xiàn)網(wǎng)絡(luò)的建立與節(jié)點(diǎn)的加入;2、發(fā)送:發(fā)送節(jié)點(diǎn)調(diào)用協(xié)議棧的無線數(shù)據(jù)發(fā)送函數(shù),實(shí)現(xiàn)無線數(shù)據(jù)發(fā)送;3、接收:接收節(jié)點(diǎn)調(diào)用協(xié)議棧的無線數(shù)據(jù)接收函數(shù),實(shí)現(xiàn)無線數(shù)據(jù)接收。b)Z-stack OSAL API14 介紹OSAL 層是與協(xié)議棧獨(dú)立的,但是整個(gè)協(xié)議都要基于 OS 才能運(yùn)行。OSAL 提供

31、如下服務(wù)和管理:信息管理、任務(wù)同步、時(shí)間管理、中斷管理、任務(wù)管理、內(nèi)存管理、電源管理以及非易失一、信息管理 API管理。信息管理為任務(wù)間的信息交換或者外部處理事件(例如:中斷服務(wù)程序或一個(gè)控制循環(huán)內(nèi)的函數(shù)調(diào)用等)提供一種管理機(jī)制。包括允許任務(wù)分配或不分配信息緩存、發(fā)送命令信息到其他任務(wù)、接受應(yīng)答信息等 API 函數(shù)。二、同步任務(wù) API該 API允許一個(gè)任務(wù)等待某個(gè)事件的發(fā)生并返回等待期間的控制。該 API的功能是為某個(gè)任務(wù)設(shè)置事件,一旦任何一個(gè)事件被設(shè)置就修。三、時(shí)間管理 API該 API允許定時(shí)器被(Z-Stack)任務(wù)和外部任務(wù)使用。該 API提供開始和停止一個(gè)定時(shí)器的功能,這些定時(shí)器能

32、用毫秒(ms)設(shè)置。四、中斷管理 API這些 API 是外部中斷和任務(wù)的接口。這些 API 函數(shù)允許一個(gè)任務(wù)為每個(gè)中斷分配指定服務(wù)程序。這些中斷能被允許或務(wù)。五、任務(wù)管理 API。在服務(wù)程序內(nèi),可為其他的任該 API 用在管理 OSAL 中的任務(wù),包括系統(tǒng)任務(wù)和用戶自定義任務(wù)的創(chuàng)建、管理和信息處理等。六、內(nèi)存管理 API該 API 描繪了簡單的七、電源管理 API分配系統(tǒng)。這些函數(shù)允許動(dòng)態(tài)分配。這里描寫了 OSAL 的電源管理系統(tǒng)。當(dāng) OSAL 安全地關(guān)閉并使處理器進(jìn)入休眠模式時(shí),該系統(tǒng)提供向應(yīng)用/任務(wù)通告該事。與外部硬件2.2.3 ZigBee 開發(fā)模塊a)CC2530(如圖 2-6)CC2

33、530 是專門針對IEEE 802.15.4 和ZigBee 應(yīng)用的解決方案,經(jīng)濟(jì)且低功耗。CC2530 有四種不同的版本:CC2530-F32 / 64 / 128 / 256。分別帶有 32 / 64/ 128 / 256 KB 的閃存空間;它整合了全集成的高效射頻收發(fā)機(jī)及業(yè)界標(biāo)準(zhǔn)的增強(qiáng)型 8051 微控制器,8 KB 的RAM 和其他強(qiáng)大的支持功能和外設(shè)15。圖 2-6 CC2530 實(shí)物圖主要特點(diǎn):1、高達(dá) 256kB 的閃存和 20kB 的擦除周期,以支持無線更新和大型應(yīng)用程序;2、8kB RAM 用于更為復(fù)雜的應(yīng)用和Zigbee 應(yīng)用;3、可編程輸出功率達(dá)+4dBm;4、在掉電模式

34、下,只有睡眠定時(shí)器運(yùn)行時(shí),僅有不到 1uA 的電流損耗;5、具有強(qiáng)大的地址識別和數(shù)據(jù)包處理引擎;6、支持Zigbee / Zigbee PRO , Zigbee RF4CE, 6Lo他所有基于 802.15.4 標(biāo)準(zhǔn)的解決方案;N, WirelessHART 及其7、卓越的靈敏度和可編程輸出功率;8、在接收、發(fā)射和多種低功耗的模式下具有極低的電流消耗,能保證較長的電池使用時(shí)間;9、一流的選擇和阻斷性能(50-dB ACR)。應(yīng)用:1、智能能源/自動(dòng)化儀表;2、控制;3、居家及樓宇自動(dòng)化;4、消費(fèi)類電子產(chǎn)品;5、工業(yè)控制及監(jiān)測;6、低功耗無線傳感器網(wǎng)絡(luò)。b)ZigBee - WiFi 網(wǎng)關(guān)一)網(wǎng)

35、關(guān)(Gateway)又稱網(wǎng)間連接器、協(xié)議轉(zhuǎn)換器。網(wǎng)關(guān)在網(wǎng)絡(luò)層以上實(shí)現(xiàn)網(wǎng)絡(luò)互連,是最復(fù)雜的網(wǎng)絡(luò)互連設(shè)備,僅用于兩個(gè)協(xié)議不同的網(wǎng)絡(luò)互連16。網(wǎng)關(guān)既可以用于廣域網(wǎng)互連,也可以用于局域網(wǎng)互連。 它是一種充當(dāng)轉(zhuǎn)換重任的計(jì)算機(jī)系統(tǒng)或設(shè)備。使用在不同的通信協(xié)議、數(shù)據(jù)格式或語言,甚至體系結(jié)構(gòu)完全不同的兩種系統(tǒng)之間,網(wǎng)關(guān)是一個(gè)翻譯器。與網(wǎng)橋只是簡單地傳達(dá)信息不同,網(wǎng)關(guān)對收到的信息要重新打包,以適應(yīng)目的系統(tǒng)的需求。在使用不同的通信協(xié)議、數(shù)據(jù)格式或語言,甚至體系結(jié)構(gòu)完全不同的兩種系統(tǒng)之間,網(wǎng)關(guān)就是一個(gè)翻譯器,網(wǎng)關(guān)對收到的信息要重新打包,以適應(yīng)目的系統(tǒng)的需求,同時(shí)起到過濾和安全的作用。網(wǎng)關(guān)工作在 OSI/RM 的傳輸

36、層及以上的所有層次,它是通過重新封裝信息來使它們能夠被另一種系統(tǒng)處理的,為此網(wǎng)關(guān)還必須能夠同各種應(yīng)用進(jìn)行通信,包括建立和管理會(huì)話、傳輸以及數(shù)據(jù)等。事實(shí)上現(xiàn)在的網(wǎng)關(guān)已經(jīng)不能完全歸硬件的結(jié)合產(chǎn)品17。為一種網(wǎng)絡(luò)硬件,而可以概括為能夠連接不同網(wǎng)絡(luò)的為什么要使用ZigBee - WiFi 網(wǎng)關(guān)呢?原因:ZigBee 具有近距離、低復(fù)雜度、低功耗、低數(shù)據(jù)速率、低成本等特征。其主要適用于自動(dòng)控制和控制領(lǐng)域,可以滿足對小型廉價(jià)設(shè)備的無線聯(lián)網(wǎng)和控制功能,是能夠很好滿足智能家居需求的技術(shù)。所以在使用的是 ZigBee 協(xié)議。智能燈控系統(tǒng)中要使用 ZigBee 技術(shù),而 ZigBee 自組網(wǎng)沒有與 ZigBee

37、直接通訊的接口,直接連接的是ernet。ernet 使用的是TCP/IP 協(xié)議,所以如果想用來控制ZigBee 協(xié)議的控制 ZigBee 設(shè)備,就相關(guān)設(shè)備,就必須要進(jìn)行協(xié)議之間的轉(zhuǎn)換。所以為了使要使用ZigBee - WiFi 網(wǎng)關(guān)來完成協(xié)議轉(zhuǎn)換這個(gè)任務(wù)。二)網(wǎng)關(guān)的工作原理:比網(wǎng)絡(luò) A 和網(wǎng)絡(luò) B,網(wǎng)絡(luò) A 的 IP 地址范圍為“192. 168.1.254”,子網(wǎng)掩碼為 ;網(wǎng)絡(luò) B 的 IP 地址范圍“54”,子網(wǎng)掩碼為 16。在沒有路由器的情況下,兩個(gè)網(wǎng)絡(luò)之間是不能進(jìn)行 TCP/IP 通信的,即使是兩個(gè)網(wǎng)絡(luò)連接在同一臺交換機(jī)(或集線器)上,TCP/IP 協(xié)議也會(huì)根據(jù)子網(wǎng)掩碼()判定兩個(gè)網(wǎng)絡(luò)

38、中的主機(jī)處在不同的網(wǎng)絡(luò)里。而要實(shí)現(xiàn)這兩個(gè)網(wǎng)絡(luò)之間的通信,則必須通過網(wǎng)關(guān)。如果網(wǎng)絡(luò)A 中的主機(jī)發(fā)現(xiàn)數(shù)據(jù)包的目的主機(jī)不在本地網(wǎng)絡(luò)中,就把數(shù)據(jù)包轉(zhuǎn)發(fā)給它自己的網(wǎng)關(guān),再由網(wǎng)關(guān)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)B 的網(wǎng)關(guān),網(wǎng)絡(luò) B 的網(wǎng)關(guān)再轉(zhuǎn)發(fā)給網(wǎng)絡(luò)B 的某個(gè)主機(jī)。網(wǎng)絡(luò) B 向網(wǎng)絡(luò) A 轉(zhuǎn)發(fā)數(shù)據(jù)包的過程也是如此。的ernet 網(wǎng)絡(luò)和 LED 燈的ZigBee 網(wǎng)絡(luò)就是在的智能燈控系統(tǒng)中,兩個(gè)不同的網(wǎng)絡(luò)。當(dāng)將 LED 燈的控制命令通過 WiFi 信號發(fā)出后,的網(wǎng)絡(luò)發(fā)現(xiàn)目的地址不在本地網(wǎng)絡(luò)中,于是它就把包含命令的數(shù)據(jù)包轉(zhuǎn)發(fā)給 ZigBee - WiFi 網(wǎng)關(guān)。網(wǎng)關(guān)接收到這個(gè)數(shù)據(jù)包后,網(wǎng)關(guān)首先將這個(gè)數(shù)據(jù)包進(jìn)行重新打包,將它打包成適應(yīng)

39、ZigBee 網(wǎng)絡(luò)的數(shù)據(jù)包,然后將它發(fā)給ZigBee 板上的 LED 燈,實(shí)現(xiàn)了發(fā)送命令控制 LED 燈的目的。在無線傳輸中,網(wǎng)關(guān)主要根據(jù)地址信息來進(jìn)行數(shù)據(jù)的發(fā)送和轉(zhuǎn)發(fā)。ZigBee 通信協(xié)議中規(guī)定了兩種地址:64 位的IEEE 長地址和 16 位的短地址(SADDR)。IEEE長地址作為全局地址,可在大范圍內(nèi)調(diào)用;短地址作為個(gè)域網(wǎng)地址,僅限于圍局域網(wǎng)內(nèi)通信使用。為了方便設(shè)備間的信息傳送,在協(xié)議轉(zhuǎn)換過進(jìn)行了地址。通過建立地址表現(xiàn)場設(shè)備的短地址(網(wǎng)關(guān)通信短地址固定為 0000H),表中每個(gè)短地址對應(yīng)一個(gè)設(shè)備對象標(biāo)識符(Ob-jectID),控制網(wǎng)絡(luò)協(xié)議根據(jù) ObjectID來對不同設(shè)備進(jìn)行操作。

40、如需實(shí)現(xiàn)組播功能,只須定義一組 ObjectID 作為網(wǎng)關(guān)目的地址.2.3Socket 通信Android 與服務(wù)器的通信方式主要有兩種,一是 Http 通信,一是 Socket 通信。兩者的最大差異在于,http 連接使用的是“請求響應(yīng)方式”,即在請求時(shí)建立連接通道,當(dāng)客戶端向服務(wù)器發(fā)送請求后,服務(wù)器端才能向客戶端返回?cái)?shù)據(jù)。而 Socket 通信則是在雙方建立起連接后就可以直接進(jìn)行數(shù)據(jù)的傳輸,在連接時(shí)可實(shí)現(xiàn)信息的主動(dòng)推送,而不需要每次由客戶端向服務(wù)器發(fā)送請求。那么網(wǎng)絡(luò)中的進(jìn)程之間又是如何通信的呢?首要解決一個(gè)進(jìn)程,否則通信無從談起!在本地可以通過進(jìn)程但是在網(wǎng)絡(luò)中這是行不通的。其實(shí) TCP/I

41、P 協(xié)議族已經(jīng)幫是如何唯一標(biāo)識來唯一標(biāo)識一個(gè)進(jìn)程,解決了這個(gè)問題,網(wǎng)絡(luò)層的“IP 地址”可以唯一標(biāo)識網(wǎng)絡(luò)中的主機(jī),而傳輸層的“協(xié)議+端口”可以唯一標(biāo)識主機(jī)中的應(yīng)用程序(進(jìn)程)。這樣利用三元組(IP 地址,協(xié)議,端口)就可以標(biāo)識網(wǎng)絡(luò)的進(jìn)程了,網(wǎng)絡(luò)中的進(jìn)程通信就可以利用這個(gè)標(biāo)志與其它進(jìn)程進(jìn)行交互。使用TCP/IP 協(xié)議的應(yīng)用程序通常采用應(yīng)用編程接口:UNIX BSD 的套接字Socket 和 UNIX System V 的TLI(已經(jīng)被淘汰),來實(shí)現(xiàn)網(wǎng)絡(luò)進(jìn)程之間的通信。就目前而言,幾乎所有的應(yīng)用程序都是采用Socket,而現(xiàn)在又是網(wǎng)絡(luò)時(shí)代,網(wǎng)絡(luò)中進(jìn)程通信是無處不在,這就是為什么說“一切皆Socke

42、t”。其實(shí) Socket 就是一種抽象層,應(yīng)用程序通過它來發(fā)送和接收數(shù)據(jù),使用 Socket 可以將應(yīng)用程序添加到網(wǎng)絡(luò)中,與處于同一網(wǎng)絡(luò)中的其他應(yīng)用程序進(jìn)行通信。簡單來說,Socket 提供了程序 與外界通信的端口并為通信雙方的提供了數(shù)據(jù)傳輸通道18。2.3.1 Socket 中重要的 API首先,說明一下API。API(Application Programmingerface,應(yīng)用程序編程接口)是一些預(yù)先定義的函數(shù),目的是提供應(yīng)用程序與開發(fā)基于某軟件或硬件得以細(xì)節(jié)。一組例程的能力,而又無需源碼,或理解工作機(jī)制的重要的Socket API:java .net.Socket 繼承于java.l

43、ang.Object,有八個(gè)構(gòu)造器,其方法并不多,下面介紹使用最頻繁的三個(gè)方法,其它方法大家可以見 JDK-1.3文檔。1)Accept 方法用于產(chǎn)生阻塞,直到接受到接,并且返回一個(gè)客戶端的Socket 對象實(shí)例。阻塞是一個(gè)術(shù)語,它使程序運(yùn)行暫時(shí)停留在這個(gè)地方,直到一個(gè)會(huì)話產(chǎn)生,然后程序繼續(xù),通常阻塞是由循環(huán)產(chǎn)生的。getInputStream 方法獲得網(wǎng)絡(luò)連接輸入,同時(shí)返回一個(gè)InputStream 對象實(shí)例。getOutputStream 方法連接的另一端將得到輸入,同時(shí)返回一個(gè)OutputStream對象實(shí)例。注意:其中g(shù)etInputStream 和getOutputStream 方法

44、均可能會(huì)產(chǎn)生一個(gè)IOException,它必須使用。獲,因?yàn)樗鼈兎祷氐牧鲗ο?,通常都?huì)被另一個(gè)流對象2.3.2 Socket 的連接過程根據(jù)連接啟動(dòng)的方式以及本地套接字要連接的目標(biāo),套接字之間的連接過程可以分為三個(gè)步驟:服務(wù)器,客戶端請求,連接確認(rèn)。服務(wù)器:是服務(wù)器端套接字并不定位具體的客戶端套接字,而是處于等待連接的狀態(tài),實(shí)時(shí)網(wǎng)絡(luò)狀態(tài)??蛻舳苏埱螅菏侵赣煽蛻舳说奶捉幼痔岢鲞B接請求,要連接的目標(biāo)是服務(wù)器端的套接字。為此,客戶端的套接字必須首先描述它要連接的服務(wù)器的套接字,服務(wù)器端套接字的地址和端,然后就向服務(wù)器端套接字提出連接請求。連接確認(rèn):是指當(dāng)服務(wù)器端套接字到或者說接收到客戶端套接字的連接

45、請求,它就響應(yīng)客戶端套接字的請求,建立一個(gè)新的線程,把服務(wù)器端套接字的描述發(fā)給客戶端,一旦客戶端確認(rèn)了此描述,連接就建立好了。而服務(wù)器端套接字繼續(xù)處于狀態(tài),繼續(xù)接收其他客戶端套接字的連接請求。第3章客戶端的設(shè)計(jì)與實(shí)現(xiàn)Android客戶端在本系統(tǒng)中起著作用,它不僅是整個(gè)系統(tǒng)的控制樞紐,還是直接和用戶打交道的模塊,所以客戶端的設(shè)計(jì)的好壞直接影響著整個(gè)系統(tǒng)的性能和用戶的體驗(yàn)19。這里,我重申一下客戶端的具體作用:客戶端在整個(gè)系統(tǒng)中起著集中控制的作用。用戶可以直接使用對LED 燈進(jìn)行控制,當(dāng)用戶點(diǎn)擊客戶端上的控件時(shí),控件所代表的控制命令通過 WIFI 網(wǎng)絡(luò)傳到網(wǎng)關(guān),網(wǎng)關(guān)將 TCP/IP 協(xié)議下的數(shù)據(jù)包

46、轉(zhuǎn)換為ZigBee 協(xié)議下的數(shù)據(jù)包后,發(fā)送給 CC2530控制LED 的亮滅20。,再由 CC2530由上面所述,客戶端的設(shè)計(jì)大致分成兩部分:一是端 UI 界面設(shè)計(jì);二是和網(wǎng)關(guān)之間的通信設(shè)計(jì)21。下面就來一一講述一下這兩個(gè)部分的詳細(xì)設(shè)計(jì)。3.1UI 界面設(shè)計(jì)UI 界面(如圖 3-1)設(shè)計(jì):圖 3-1 UI 界面圖上面的 UI 界面圖已經(jīng)大致向APP 的功能和界面布局。但是展現(xiàn)了由于智能家居用戶的多樣性,教育背景和層次結(jié)構(gòu)存在著巨大的差異,所以 UI 的設(shè)計(jì)必須在保證功能的前提下,盡可能的做到美觀簡潔、易于操作。在進(jìn)行APP 的設(shè)計(jì)之前UI 設(shè)計(jì)的大致基于美觀簡潔的目的,首先設(shè)計(jì)了 APP 的

47、UI 結(jié)構(gòu)圖,作為和總的思路(UI 結(jié)構(gòu)圖如圖 3-2 所示)。系統(tǒng)主界面燈光連網(wǎng)場景設(shè)備退出客廳燈光餐廳燈光書房燈光臥室燈光圖 3-2UI 結(jié)構(gòu)圖端的 UI 主界面主要可以分為六個(gè)部分:燈從上圖可以看出,本系統(tǒng)中光、連網(wǎng)、場景、設(shè)備、的作用。,退出。從每個(gè)部分的名字可以大致知道每個(gè)部分連網(wǎng)這個(gè)部分是實(shí)現(xiàn)整個(gè) APP 功能的基礎(chǔ)所在,想使用這個(gè) APP 來控制家中的燈光,就必須要聯(lián)網(wǎng)。打開過網(wǎng)絡(luò)來傳遞控制命令,進(jìn)而起到APP 后首先要做的就是連接網(wǎng)絡(luò),這樣才能通控制的作用。連接網(wǎng)絡(luò)這個(gè)部分,首先需要輸入網(wǎng)關(guān)的IPV4 地址,例如 03,從而通過Socket 通信連接網(wǎng)關(guān)26。當(dāng)連接網(wǎng)絡(luò)成功之后

48、,在端的 APP 和網(wǎng)關(guān)端的都會(huì)顯示聯(lián)網(wǎng)成功的提示信息,提醒用戶網(wǎng)絡(luò)已經(jīng)連接成功,此時(shí)就可以使用 APP 的控制功能了(網(wǎng)絡(luò)連接流程圖如圖 3-3 所示)。圖 3-3 網(wǎng)絡(luò)連接流程圖燈光這個(gè)部分就是對家中的燈光進(jìn)行控制,它分為客廳燈光,餐廳燈光,書房燈光,臥室燈光四個(gè)部分(流程圖如圖 3-4 所示),基本囊括普通家庭需要控制的燈光。當(dāng)用戶進(jìn)入的這個(gè)主界面時(shí),映入眼簾的就是對燈光的控制。用戶連接網(wǎng)絡(luò)后可以根據(jù)自己的想法,點(diǎn)擊相應(yīng)的按鈕來控制相應(yīng)位置的燈光。圖 3-4 燈光控制流程圖調(diào)節(jié)室內(nèi)光線的,如:浪漫型,溫馨型等。這場景模塊里面主要是用來樣可以使用戶想對室內(nèi)的照明進(jìn)行的調(diào)整時(shí),能夠更加方便(

49、場景模塊流程圖如圖 3-5 所示)。圖 3-5 場景模塊流程圖設(shè)備模塊是用來查詢可以被控制設(shè)備的詳細(xì)信息,進(jìn)而使用戶能夠更好的了解他所使用的設(shè)備,并且管理(設(shè)備模塊流程圖如圖 3-6 所示)。圖 3-6 設(shè)備模塊流程圖這個(gè)模塊是用來對房間的一些位置進(jìn)行控模塊流程圖如圖 3-7 所示)。,進(jìn)而提高房屋的安全度(監(jiān)圖 3-7模塊流程圖3.1.1 幾種常用控件的實(shí)現(xiàn)Android UI 的設(shè)計(jì)是把一些常用的控件組合在一起,設(shè)定控件大小以及控件之間的相對位置,再加一點(diǎn)美化,就得到了日常所見的美輪美奐的 UI。所以,UI 設(shè)計(jì)的好壞與設(shè)計(jì)者對該系統(tǒng)中控件的理解程度有很大的關(guān)系接下來的部分就來介紹一下 A

50、ndroid 中常用的一些控件的實(shí)現(xiàn)方法,本系統(tǒng)中的 UI 設(shè)計(jì)也是基于這些常用控件的。在 Android 眾多控件中比較常用的控件有 Button、TextView、EditText、 RadioButton、CheckBox、ProgressBar 等。由于篇幅有限,本文只對 Button 這個(gè)控件進(jìn)行一個(gè)簡單的實(shí)現(xiàn)說明。其他的一些控件只介紹它的一些特殊的屬性和使用方法。如下圖 3-8 為 Android 布局文件視圖層次結(jié)構(gòu)圖。 在 layout 里面定義的控件大概可以分為兩類,一類稱作為 View,一類稱作為 ViewGroup。從他們的名字大概可以知道他們之間的關(guān)系,ViewGrou

51、p 中可以包含多個(gè) View。但程序員在平時(shí)的日常開發(fā)中都不直接常用 View 和 ViewGoup,而是用他們的派生類。View 和ViewGroup 的派生類分為直接派生類和間接派生類。常見的 View 直接的派生類有:TextView、ImageView、ProgressBar 等,常見的 View 的間接派生類有:Button、CheckBox、AbsSpinner 等。常見的 ViewGroup 的直接派生類有:RelativeLayout、Absoluayout、LinearLayout 等,常見的 ViewGroup 的間等24。接派生類有:ListView、Horizontal

52、ScrollViewViewGroupViewGroupViewViewViewViewView如圖 3-8布局文件層次結(jié)構(gòu)圖在下面的這段代碼中,簡單的實(shí)現(xiàn)了一個(gè) Button 的布局,這段代碼的位置是在 res 文件下的 layout 文件夾里面,程序的布局文件都放在這個(gè)地方。LinearLayout的屬性25TextView 的屬性Button 的屬性這行是說明程序使用的版本號等信息,接著是一個(gè)根。LinearLayout 是一個(gè)線性布局,也就是說使用這個(gè) layout 的 Activity 的 UI是采用的是線性布局。線性布局的含義是這個(gè)布局中的控件是從上到下或者從左到右一字排開決定程序

53、布局到底是從上到下,還是從左到右的屬性代碼就是: Android:orien ion=vertical。orien ion 表示方向,它有兩個(gè)值可以選,一個(gè)是本文中的 vertical,垂直布局;另一個(gè)是 horizontal ,水平布局。Android:layout_width=fill_parent Android:layout_height=fill_parent這兩行代碼是用來控制這個(gè) LinearLayout 的大小的,Android:layout_width屬性用于控制寬度,Android:layout_height 屬性用于控制高度22。兩個(gè)屬性的值都是 fill_parent,

54、它表示的是 LinearLayout 這個(gè)線性布局把他的父控件填滿。因?yàn)?UI 設(shè)計(jì)中很多時(shí)候要用到布局的嵌套,上一級的布局控件就是父控件。由于本代碼中的父控件就是整個(gè)屏幕了,所以上面這兩句話的意思是這個(gè) LinearLayout 寬度和高度把整個(gè)屏幕填滿。layout_width 和 layout_height 還有一個(gè)屬性是 wrap_content,這個(gè)值表示的意思的剛好與它的內(nèi)容的大小相同。接下來的幾行代碼定義了一個(gè) TextView 和 Button 控件,這兩個(gè)控件是在 Linearlayout 的里面,由于布局文件是垂直線性的,所以運(yùn)行出來的效果是上面一個(gè) TextView 下面

55、接著跟著一個(gè) Button??梢远x控件的屬性,例如Android:ID=+ID/textview這行代碼的意思是這個(gè)控件的名字屬性叫 textview。前面已經(jīng)介紹,layout 的每一個(gè)資源文件都會(huì)在 R.java 中生成一個(gè)ID,所以這兩個(gè)控件也會(huì)在 R.java public sic final clapublic sic final public sic final里面生成相應(yīng)的ID。如下面所示。textview =0 x7f050004;drawingroom=0 x7f050000;程序源文件中可以相應(yīng)的ID 來Android:text=string/zt相應(yīng)的控件。text 這

56、個(gè)屬性表示的是相應(yīng)控件上的文本是什么。上面這就代碼的意思是引用string.xml 文件中的 zt 來作為這個(gè)控件上的文本。TextView 和 Button 控件是Android 應(yīng)用程序最常見的兩種控件,這兩個(gè)控件的屬性除了上面介紹的外,還有一些其他屬性,這里就不一一介紹了。對于其他控件,會(huì)在后面 UI 設(shè)計(jì)中使用到了再介紹。前面的內(nèi)容介紹了控件的一些基本控件。在介紹控件的先介紹一下 Android 應(yīng)用程序代碼架構(gòu)。使用之前,package com.house; import java.util.Timer; import java.util.TimerTask;import java.

57、util.regex.Matcher; import java.util.regex.Pattern; public class MainActivity extendivityprotected void onCreate(Bundle savedInstane) super.onCreate(savedInstansetContentView(R.layout.main);e);上述代碼中第一行表示的是這個(gè)程序的包名,后面的 import 行表示的是類。src 文件的每一個(gè) Activity 其實(shí)都是一個(gè)類,比如本程序的 MainActivity,它必須繼承 Activity 類方法。on

58、Create 方法是這Activity 的主方法,本 Activity 要干什么事情都是在這里面實(shí)現(xiàn)。super.onCreate(savedInstane) 繼 承 父 類 的onCreate() 方 法 。setContentView(R.layout. main) 設(shè) 置這個(gè) Activity 所使用 的布局 文件是 MainActivity.xml。Android 中,源代碼中使用布局文件里面的控件的接口函數(shù)就是 findViewByID()。如果程序員在 layout 里面的 MainActivity.xml 文件了面了一個(gè)TextView 控件,并取名為 textview,這里可以

59、用 findViewByID(R.ID.textview)就可以取得這個(gè)控件,然后在源代碼中就可以對這個(gè)控件進(jìn)行操作了。3.1.2 人機(jī)交互 UI 程序?qū)崿F(xiàn)從圖 3-9 可以看出,本系統(tǒng)中端的 UI 的主界面主要可以分為六個(gè)部分:燈光、連網(wǎng)、場景、設(shè)備、,退出。從每個(gè)部分的名字可以大致知道每個(gè)部分的作用。UI 界面設(shè)計(jì)的詳細(xì)分析及相關(guān)代碼:1)頂部標(biāo)題欄(如圖 3-9 所示)頂部標(biāo)題欄 UI,分別是 APP 的 LOGO 和 APP 名稱圖 3-9 APP 頂部標(biāo)題欄當(dāng)用戶一打開 APP 時(shí),看到上面的標(biāo)題欄上的LOGO 和 APP 名稱,就能夠顯而易見的知道 APP 的功能。具體程序如下:/

60、apk/res/Android這行是說明程序使用的版本號等信息,接下來是一個(gè)根。LinearLayout 是對頂部整個(gè)標(biāo)題欄的線性布局,起到一個(gè)總體規(guī)范的功能。Android:layout_width=match_parent是對寬度的布局,他的具體意思是匹配該布局的寬度,簡單說就是父類有多寬,該布局就有多寬。而程序中的父類是整個(gè)屏幕,程序的意思就成了屏幕有多寬,該布局就有多寬。Android:layout_height=match_parent是對布局就有多高。高度的布局,父類有多高,該Android:orienion=vertical 這句話的意思是布局中起到了總體規(guī)劃作用。采用垂直布局。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論