<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

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

          基于Android的遠(yuǎn)程家電控制終端設(shè)計(jì)

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/159607.htm

          d.JPG


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

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

          e.JPG


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



          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();