徐 波,李秋潔,束義平,孫 靚
(1.南京林業(yè)大學(xué) 機(jī)械電子工程學(xué)院,江蘇 南京 210037;2.華東理工大學(xué) 信息科學(xué)與工程學(xué)院,上海 200237)
基于Android平臺(tái)的WiFi無(wú)線遙控裝置設(shè)計(jì)
徐 波1,2,李秋潔1,束義平1,孫 靚1,2
(1.南京林業(yè)大學(xué) 機(jī)械電子工程學(xué)院,江蘇 南京 210037;2.華東理工大學(xué) 信息科學(xué)與工程學(xué)院,上海 200237)
隨著WiFi的不斷發(fā)展,WiFi無(wú)線通信技術(shù)的使用越來(lái)越常見(jiàn)。文章提出了基于Android平臺(tái)的WiFi無(wú)線遙控裝置的設(shè)計(jì)方案,介紹了基于Android平臺(tái)的遙控器以及控制器的設(shè)計(jì)方法,并闡述了遙控器與控制器間的WiFi通信方案。經(jīng)試驗(yàn),Android遙控器能在WiFi環(huán)境下實(shí)現(xiàn)對(duì)控制器的遠(yuǎn)程控制,同時(shí)界面能顯示控制器傳來(lái)的參數(shù)。
Android;WiFi通信;遙控
目前,隨著信息技術(shù)的快速發(fā)展,WiFi、ZigBee、藍(lán)牙等無(wú)線通信技術(shù)趨于成熟。相比于ZigBee,WiFi通信傳輸速率更高;而藍(lán)牙無(wú)線通信雖然傳輸速率快,但傳輸距離短,一般多適用于家居用品。WiFi具有覆蓋范圍廣、可靠性高、傳輸速度快等優(yōu)點(diǎn),是當(dāng)前應(yīng)用較為廣泛的無(wú)線網(wǎng)絡(luò)傳輸技術(shù)[1]。
隨著WiFi的不斷發(fā)展,國(guó)外已有很多城市實(shí)現(xiàn)了WiFi覆蓋計(jì)劃,我國(guó)北京、上海等十幾個(gè)城市實(shí)施了“無(wú)線城市”計(jì)劃,這對(duì)WiFi無(wú)線通信的使用提供了很大的幫助?,F(xiàn)階段,WiFi無(wú)線通信已有較為廣泛的應(yīng)用。屈川等[2]設(shè)計(jì)的農(nóng)機(jī)工作狀態(tài)實(shí)時(shí)無(wú)線監(jiān)測(cè)系統(tǒng)通過(guò)無(wú)線網(wǎng)絡(luò)對(duì)農(nóng)機(jī)的工作狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)測(cè)。薛金林等[3]設(shè)計(jì)的基于無(wú)線網(wǎng)絡(luò)的大田農(nóng)業(yè)機(jī)械遙操作控制平臺(tái)通過(guò)無(wú)線網(wǎng)絡(luò)與農(nóng)業(yè)機(jī)械進(jìn)行通信。祝彥等[4]設(shè)計(jì)的基于WIFI技術(shù)的礦用機(jī)車無(wú)線通信系統(tǒng)采用WiFi無(wú)線通信技術(shù)進(jìn)行數(shù)據(jù)傳輸。
系統(tǒng)整體結(jié)構(gòu)如圖1所示。遙控器為基于Android平臺(tái)的平板電腦,采用Android Studio開(kāi)發(fā),采用Java語(yǔ)言編程;控制器采用Visual Studio 2015開(kāi)發(fā),采用C語(yǔ)言編程。首先通過(guò)遙控器設(shè)置模式、參數(shù),按下啟停按鈕后,通過(guò)WiFi將模式、參數(shù)、啟停發(fā)送給控制器,控制器根據(jù)發(fā)來(lái)的參數(shù)進(jìn)行數(shù)據(jù)處理后,將處理結(jié)果通過(guò)WiFi發(fā)送給遙控器,在界面顯示出來(lái)。
圖1 系統(tǒng)整體結(jié)構(gòu)
2.1 遙控器整體結(jié)構(gòu)
Android遙控器整體結(jié)構(gòu)如圖2所示,采用了3個(gè)線程:界面主線程主要負(fù)責(zé)界面的加載、刷新;發(fā)送線程sendThread主要負(fù)責(zé)建立socket連接、控制器發(fā)送參數(shù);接收線程recvThread接收來(lái)自控制器的處理結(jié)果。
圖2 Android遙控器整體結(jié)構(gòu)
2.2 界面布局
點(diǎn)開(kāi)Android Studio左邊的Project面板,就可以看到工程組織,如圖3(a)所示。遙控器添加控件實(shí)現(xiàn)結(jié)果狀態(tài)顯示、自動(dòng)/手動(dòng)模式選擇、左側(cè)/右側(cè)選擇、車速及距離閾值設(shè)置、IP地址端口號(hào)的輸入、連接啟停及系統(tǒng)退出,系統(tǒng)界面外觀如圖3(b)所示。
2.3 Handler通信過(guò)程
由于界面線程不能做耗時(shí)的工作,因而將耗時(shí)的工作放在了非界面線程中。而界面上的控件是由主線程創(chuàng)建的,非界面線程不能直接更改,所以采用Android 消息處理機(jī)制進(jìn)行界面線程與非界面線程之間的通信[5]。
每個(gè)線程都有一個(gè)Looper對(duì)象和一個(gè)Handler。界面主線程的Handler為myHandler,線程sendThread的Handler為recHandler,線程recvThread的Handler為sendHandler。遙控器界面按下連接、啟動(dòng)、停止、退出按鈕后,會(huì)利用Handler. sendEmptyMessage(msg.what)發(fā)送一個(gè)整型數(shù)??刂破魈幚斫Y(jié)果則用一個(gè)8位數(shù)組NOZZLE存放,利用Bundle作為中間載體來(lái)傳遞噴頭狀態(tài),在sendHandler中利用函數(shù)putByteArray將數(shù)組放入自定義字符串,在myHandler利用函數(shù)getByteArray取出即可。具體Handler過(guò)程如圖4所示。
圖3 Android遙控器界面設(shè)計(jì)
控制器用C語(yǔ)言開(kāi)發(fā),開(kāi)發(fā)軟件為Visual Studio 2015。該部分由3個(gè)線程構(gòu)成—主函數(shù)部分、數(shù)據(jù)接收線程、數(shù)據(jù)處理發(fā)送線程。
第一步,主函數(shù)初始化socket后創(chuàng)建數(shù)據(jù)接收、發(fā)送線程。第二步,作為socket服務(wù)器端,接收來(lái)自客戶端發(fā)來(lái)的參數(shù),將接收的參數(shù)分離并輸出到控制臺(tái)上,若未進(jìn)行初始化操作,則執(zhí)行第三步操作,否則跳過(guò)第三步執(zhí)行第四步操作。第三步,進(jìn)行初始化工作。第四步,初始化之后,使發(fā)送線程數(shù)據(jù)處理標(biāo)識(shí)DEAL置true,進(jìn)入數(shù)據(jù)處理循環(huán);若為停止,生成關(guān)閉全部指示燈指令;若為退出,則調(diào)用自定義函數(shù)ExitInstance,進(jìn)行釋放空間等操作。第五步,將數(shù)據(jù)處理結(jié)果通過(guò)socket發(fā)送給Android遙控器,進(jìn)行界面刷新。Handler通信流程如圖4所示。
圖4 Handler通信
Android遙控器與控制器間的WiFi通信采用基于TCP協(xié)議的通信方式[6-8],通過(guò)套接字Socket網(wǎng)絡(luò)來(lái)進(jìn)行通信[9-10],Android遙控器作為客戶端,控制器作為服務(wù)器端,具體通信過(guò)程如下:
第一步,服務(wù)器端調(diào)用函數(shù)listen將socket設(shè)為監(jiān)聽(tīng)模式。第二步,客戶端向服務(wù)器端發(fā)送連接請(qǐng)求。第三步,服務(wù)器端不斷調(diào)用函數(shù)accept接收連接請(qǐng)求,并創(chuàng)建線程來(lái)接收來(lái)自客戶端傳來(lái)的數(shù)據(jù),同時(shí)創(chuàng)建數(shù)據(jù)發(fā)送線程準(zhǔn)備進(jìn)行數(shù)據(jù)處理。第四步,客戶端向網(wǎng)絡(luò)發(fā)送參數(shù),并新建線程用來(lái)接收服務(wù)器端傳來(lái)的數(shù)據(jù)處理結(jié)果。第五步,服務(wù)器端調(diào)用函數(shù)recv不斷從網(wǎng)絡(luò)接收來(lái)自客戶端發(fā)來(lái)的數(shù)據(jù),接收完數(shù)據(jù)后發(fā)送線程線程根據(jù)客戶端傳來(lái)的參數(shù)進(jìn)行數(shù)據(jù)處理。第六步,調(diào)用函數(shù)send將數(shù)據(jù)處理結(jié)果發(fā)送給客戶端遙控器。第七步,客戶端從網(wǎng)絡(luò)接收服務(wù)器端發(fā)送的數(shù)據(jù)處理結(jié)果,并發(fā)送給遙控器界面進(jìn)行刷新顯示。在退出按鈕按下后,兩端都關(guān)閉socket,并清理緩存。
遙控器調(diào)試機(jī)型為華為榮耀平板T1-821w,操作系統(tǒng)為Android 4.4。Android遙控器手動(dòng)模式下右側(cè)選中時(shí)調(diào)試結(jié)果如圖5(a)所示,自動(dòng)模式下調(diào)試結(jié)果如圖5(b)所示。
圖5 Android 遙控器調(diào)試結(jié)果
本文設(shè)計(jì)了基于Android平臺(tái)的WiFi無(wú)線遙控裝置,主要工作如下:(1)基于Android平臺(tái)的遙控器的設(shè)計(jì),能夠設(shè)置相關(guān)參數(shù),控制控制器進(jìn)行相應(yīng)的工作,并能顯示控制器的數(shù)據(jù)處理結(jié)果。(2)設(shè)計(jì)了控制器,能夠根據(jù)遙控器設(shè)置的參數(shù)進(jìn)行相應(yīng)的數(shù)據(jù)處理工作,并將數(shù)據(jù)處理結(jié)果發(fā)送給Android遙控器進(jìn)行顯示。(3)Android遙控器與控制器間的WiFi無(wú)線通信,通過(guò)WiFi互相進(jìn)行數(shù)據(jù)傳輸。本文提出的遙控裝置操作簡(jiǎn)單,控制及時(shí),可移植到嵌入式平臺(tái),為遠(yuǎn)程控制對(duì)象進(jìn)行自動(dòng)化作業(yè)提供很大幫助。
[1]楊洪濤,王英卓,杜娟.基于Android平臺(tái)的WiFi控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].北京工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2016(3):10-16.
[2]屈川,劉思揚(yáng),吳昊宇.農(nóng)機(jī)工作狀態(tài)實(shí)時(shí)無(wú)線監(jiān)測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].南方農(nóng)機(jī),2016(8):59-60.
[3]薛金林,張欣欣,范博文,等.基于無(wú)線網(wǎng)絡(luò)的大田農(nóng)業(yè)機(jī)械遙操作控制平臺(tái)(CN205507418U)[P].南京:實(shí)用新型專利,2016.
[4祝彥,譚凱,羅劍.基于WIFI技術(shù)的礦用機(jī)車無(wú)線通信系統(tǒng)的應(yīng)用[J].遼寧工程技術(shù)大學(xué)學(xué)報(bào),2012(5):76-79.
[5]黃蓉. Android消息處理機(jī)制研究[J]. 黑龍江科技信息,2012(33):87.
[6]萬(wàn)書鵬,雷寶龍,翟明玉.調(diào)度與變電站一體化系統(tǒng)鏈路狀態(tài)監(jiān)測(cè)與 TCP 通信方案[J].電力系統(tǒng)自動(dòng)化,2014(1):92-96.
[7]劉爽,史國(guó)友,張遠(yuǎn)強(qiáng).基于TCP/IP協(xié)議和多線程的通信軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2010(7):1417-1420.
[8]李雅麗,李永江.基于TCP通信方案的電力線路狀態(tài)監(jiān)測(cè)系統(tǒng)研究[J].電源技術(shù),2015(1):175-177.
[9]劉建華,田歲苗,趙勇,等. 基于Android的智能家居系統(tǒng)設(shè)計(jì)[J].西安郵電大學(xué)學(xué)報(bào),2013(4):71-74.
[10]張秋波. 基于Android手機(jī)和WiFi的網(wǎng)絡(luò)定時(shí)開(kāi)關(guān)的設(shè)計(jì)與實(shí)現(xiàn)[D].長(zhǎng)春:吉林大學(xué),2015.
Design of WiFi wireless remote control device based on Android platform
Xu Bo1,2, Li Qiujie1, Shu Yiping1, Sun Jing1,2
(1.Mechanical and Electronic Engineering College of Nanjing Forestry University, Nanjing 210037, China; 2.Information Science and Engineering College of East China University of Science and Technology, Shanghai 200237, China)
With the continuous development of WiFi, it is more and more common to use WiFi wireless communication technology. This paper presents a design scheme of WiFi wireless remote control device based on Android platform, and introduces the design method of controller and the remote controller based on Android platform and the WiFi communication scheme between the remote controller and controller is expounded. After testing, Android remote controller can remote control the controller in WiFi environment, and the interface can display parameters from the controller.
Android; WiFi communication; remote control
徐波(1995— ),男,江蘇泰興,碩士。