關(guān) 閉

新聞中心

EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 基于Android的遠程家電控制終端設(shè)計

基于Android的遠程家電控制終端設(shè)計

作者: 時間:2012-12-21 來源:網(wǎng)絡(luò) 收藏

(3)應(yīng)用程序框架層
應(yīng)用程序框架層為開發(fā)者提供開發(fā)所需的各種API,常用的組件有:UI組件、Content Providers(提供一種使應(yīng)用程序之間可以實現(xiàn)數(shù)據(jù)互相訪問和共享的服務(wù))、資源管理(管理字體、圖片、組件ID等)、活動管理(它管理了整個程序的生命周期)等。
(4)應(yīng)用程序?qū)?br /> 應(yīng)用層是和用戶交互的一個層次,用戶可以看得見和操作的一些應(yīng)用。本身提供了桌面,聯(lián)系人,撥打電話,瀏覽器等很多基本的應(yīng)用程序。開發(fā)人員可以使用應(yīng)用框架提供的API編寫自己的應(yīng)用程序。

2 遠程系統(tǒng)的組成
整個系統(tǒng)主要包括3個部分:遠程控制終端(手機或者平板電腦),服務(wù)器和器。先由遠程終端發(fā)送帶有控制命令的數(shù)據(jù)包到服務(wù)器,當(dāng)服務(wù)器收到控制指令之后,再由服務(wù)器發(fā)送控制命令到相應(yīng)的器上。圖2是遠程家電控制系統(tǒng)的結(jié)構(gòu)圖。

本文引用地址:http://butianyuan.cn/article/159607.htm

d.JPG


在本文中,主要介紹控制終端的設(shè)計,下面簡單地介紹一下服務(wù)器和家電控制終端。服務(wù)器收到命令數(shù)據(jù)時,通過設(shè)備類型和子設(shè)備號來識別是哪個設(shè)備的控制命令,然后將相應(yīng)的控制命令發(fā)送到相應(yīng)的控制器上。具體的幀格式定義,會在下一章節(jié)中講解。對于家電控制器,分為兩種。一種是簡單控制電路的通斷來控制電器的控制器,主要可控制燈光、冰箱、排風(fēng)扇等家電,一種是模擬紅外遙控器發(fā)出信號的控制器,主要可控制空調(diào)、電視機等使用紅外遙控器的家電。我們有了家電控制器之后,就可以在不對家電做任何的改動的情況下,對家電進行控制。

3 終端程序設(shè)計
3.1 傳輸協(xié)議的選擇
中的應(yīng)用原則中,TCP和UDP作為目前最常用到的網(wǎng)絡(luò)通信協(xié)議,可以看出TCP是基于連接的協(xié)議,UDP是一個無連接的、不可靠的協(xié)議,相對于基于流傳輸?shù)腡CP而言,UDP是基于消息傳輸?shù)?,整體上具有傳輸速度快等優(yōu)點。通過研究可以看出家用電器的控制信息特點是數(shù)據(jù)量小,控制信息短,適合用于傳送少量數(shù)據(jù)、對可靠性要求不高的應(yīng)用環(huán)境,因此更適合采用簡單的、面向數(shù)據(jù)報的。
3.2 應(yīng)用層幀格式的定義
由于目前沒有統(tǒng)一的標準,各個不同的系統(tǒng)都是自己定義各個設(shè)備的通信協(xié)議。表1是本系統(tǒng)家電控制系統(tǒng)應(yīng)用層報文幀格式的定義。

e.JPG


(1)報頭:固定為0x66、0xAD兩字節(jié),表示一個報文幀的開始。
(2)數(shù)據(jù)長度:從報頭段0x開始算到命令數(shù)據(jù)段的最后一個字節(jié)總和。表示整個幀的字節(jié)數(shù)。
(3)路由地址:這個數(shù)據(jù)位是對路由進行選擇。根據(jù)部署的網(wǎng)絡(luò)不同的位置,選擇鏈路質(zhì)量最好的路由節(jié)點進行數(shù)據(jù)傳輸。
(4)設(shè)備類型:表示家居設(shè)備的種類,我們將家電控制系統(tǒng)固定為0xF4。
(5)子設(shè)備號:此字段為家電控制系統(tǒng)里的設(shè)備分配唯一的地址,這樣我們可通過設(shè)備類型段和子設(shè)備號兩個字段唯一標識某個家電設(shè)備,便于控制信息的準確有效送達到控制器。
(6)命令數(shù)據(jù):裝載具體的家電控制命令,告訴家電控制器收到數(shù)據(jù)之后需要對家用電器做哪些操作。
3.3 Socket套接宇
在網(wǎng)絡(luò)層通過傳輸層進行數(shù)據(jù)通信時,常常會遇到多個應(yīng)用程序提供并發(fā)服務(wù)的問題,為了區(qū)別不同的應(yīng)用程序進程間的網(wǎng)絡(luò)通信和連接,就需要使用socket套接字這個接口。對于使用不同的協(xié)議通信,TCP是使用socket對象來實現(xiàn),而UDP是使用DatagramSocket對象來實現(xiàn)。由于我們遠程家電控制系統(tǒng)使用的是,在這里我只介紹DatagramSocket。
DatagramSocket是用于連接兩個端點的分組投遞服務(wù),是由系統(tǒng)提供的一個公共類。根據(jù)編程人員所給的參數(shù),它可以建立與任意可用端口或者與給定端口的連接。
這里我們需要了解的方法有close()、receive(Datagram Packet pack)和send(DatagramPaeket pack)。它們分別是關(guān)閉套接字、接收數(shù)據(jù)報和發(fā)送數(shù)據(jù)報。
從上文我們可以看到發(fā)送和接收數(shù)據(jù)報時,我們接收到的是一個DatagramPaeket對象。所以在這里必須得提到的就是用來存儲數(shù)據(jù)報數(shù)據(jù)的final類DatagramPacket。DatagramPacket有多個構(gòu)造方法,但是它的每個構(gòu)造方法中一定包括byte[]buf和int lcnsth這兩個參數(shù)。buf是用來存儲所要傳輸?shù)臄?shù)據(jù),length是表示傳輸?shù)臄?shù)據(jù)的長度。當(dāng)然你在創(chuàng)建DatagramPaeket對象時,還可以指定接收端的IP地址和端口號。
發(fā)送數(shù)據(jù)報的代碼為:
f.JPG
其中portNumber是指服務(wù)器的端口號,message是根據(jù)應(yīng)用層幀格式得到的控制命令,serverAddr是指服務(wù)器的IP地址。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉