徐 波,李秋潔,束義平,孫 靚
(1.南京林業大學 機械電子工程學院,江蘇 南京 210037;2.華東理工大學 信息科學與工程學院,上海 200237)
基于Android平臺的WiFi無線遙控裝置設計
徐 波1,2,李秋潔1,束義平1,孫 靚1,2
(1.南京林業大學 機械電子工程學院,江蘇 南京 210037;2.華東理工大學 信息科學與工程學院,上海 200237)
隨著WiFi的不斷發展,WiFi無線通信技術的使用越來越常見。文章提出了基于Android平臺的WiFi無線遙控裝置的設計方案,介紹了基于Android平臺的遙控器以及控制器的設計方法,并闡述了遙控器與控制器間的WiFi通信方案。經試驗,Android遙控器能在WiFi環境下實現對控制器的遠程控制,同時界面能顯示控制器傳來的參數。
Android;WiFi通信;遙控
目前,隨著信息技術的快速發展,WiFi、ZigBee、藍牙等無線通信技術趨于成熟。相比于ZigBee,WiFi通信傳輸速率更高;而藍牙無線通信雖然傳輸速率快,但傳輸距離短,一般多適用于家居用品。WiFi具有覆蓋范圍廣、可靠性高、傳輸速度快等優點,是當前應用較為廣泛的無線網絡傳輸技術[1]。
隨著WiFi的不斷發展,國外已有很多城市實現了WiFi覆蓋計劃,我國北京、上海等十幾個城市實施了“無線城市”計劃,這對WiFi無線通信的使用提供了很大的幫助。現階段,WiFi無線通信已有較為廣泛的應用。屈川等[2]設計的農機工作狀態實時無線監測系統通過無線網絡對農機的工作狀態進行實時監測。薛金林等[3]設計的基于無線網絡的大田農業機械遙操作控制平臺通過無線網絡與農業機械進行通信。祝彥等[4]設計的基于WIFI技術的礦用機車無線通信系統采用WiFi無線通信技術進行數據傳輸。
系統整體結構如圖1所示。遙控器為基于Android平臺的平板電腦,采用Android Studio開發,采用Java語言編程;控制器采用Visual Studio 2015開發,采用C語言編程。首先通過遙控器設置模式、參數,按下啟停按鈕后,通過WiFi將模式、參數、啟停發送給控制器,控制器根據發來的參數進行數據處理后,將處理結果通過WiFi發送給遙控器,在界面顯示出來。

圖1 系統整體結構
2.1 遙控器整體結構
Android遙控器整體結構如圖2所示,采用了3個線程:界面主線程主要負責界面的加載、刷新;發送線程sendThread主要負責建立socket連接、控制器發送參數;接收線程recvThread接收來自控制器的處理結果。

圖2 Android遙控器整體結構
2.2 界面布局
點開Android Studio左邊的Project面板,就可以看到工程組織,如圖3(a)所示。遙控器添加控件實現結果狀態顯示、自動/手動模式選擇、左側/右側選擇、車速及距離閾值設置、IP地址端口號的輸入、連接啟停及系統退出,系統界面外觀如圖3(b)所示。
2.3 Handler通信過程
由于界面線程不能做耗時的工作,因而將耗時的工作放在了非界面線程中。而界面上的控件是由主線程創建的,非界面線程不能直接更改,所以采用Android 消息處理機制進行界面線程與非界面線程之間的通信[5]。
每個線程都有一個Looper對象和一個Handler。界面主線程的Handler為myHandler,線程sendThread的Handler為recHandler,線程recvThread的Handler為sendHandler。遙控器界面按下連接、啟動、停止、退出按鈕后,會利用Handler. sendEmptyMessage(msg.what)發送一個整型數。控制器處理結果則用一個8位數組NOZZLE存放,利用Bundle作為中間載體來傳遞噴頭狀態,在sendHandler中利用函數putByteArray將數組放入自定義字符串,在myHandler利用函數getByteArray取出即可。具體Handler過程如圖4所示。

圖3 Android遙控器界面設計
控制器用C語言開發,開發軟件為Visual Studio 2015。該部分由3個線程構成—主函數部分、數據接收線程、數據處理發送線程。
第一步,主函數初始化socket后創建數據接收、發送線程。第二步,作為socket服務器端,接收來自客戶端發來的參數,將接收的參數分離并輸出到控制臺上,若未進行初始化操作,則執行第三步操作,否則跳過第三步執行第四步操作。第三步,進行初始化工作。第四步,初始化之后,使發送線程數據處理標識DEAL置true,進入數據處理循環;若為停止,生成關閉全部指示燈指令;若為退出,則調用自定義函數ExitInstance,進行釋放空間等操作。第五步,將數據處理結果通過socket發送給Android遙控器,進行界面刷新。Handler通信流程如圖4所示。

圖4 Handler通信
Android遙控器與控制器間的WiFi通信采用基于TCP協議的通信方式[6-8],通過套接字Socket網絡來進行通信[9-10],Android遙控器作為客戶端,控制器作為服務器端,具體通信過程如下:
第一步,服務器端調用函數listen將socket設為監聽模式。第二步,客戶端向服務器端發送連接請求。第三步,服務器端不斷調用函數accept接收連接請求,并創建線程來接收來自客戶端傳來的數據,同時創建數據發送線程準備進行數據處理。第四步,客戶端向網絡發送參數,并新建線程用來接收服務器端傳來的數據處理結果。第五步,服務器端調用函數recv不斷從網絡接收來自客戶端發來的數據,接收完數據后發送線程線程根據客戶端傳來的參數進行數據處理。第六步,調用函數send將數據處理結果發送給客戶端遙控器。第七步,客戶端從網絡接收服務器端發送的數據處理結果,并發送給遙控器界面進行刷新顯示。在退出按鈕按下后,兩端都關閉socket,并清理緩存。
遙控器調試機型為華為榮耀平板T1-821w,操作系統為Android 4.4。Android遙控器手動模式下右側選中時調試結果如圖5(a)所示,自動模式下調試結果如圖5(b)所示。


圖5 Android 遙控器調試結果
本文設計了基于Android平臺的WiFi無線遙控裝置,主要工作如下:(1)基于Android平臺的遙控器的設計,能夠設置相關參數,控制控制器進行相應的工作,并能顯示控制器的數據處理結果。(2)設計了控制器,能夠根據遙控器設置的參數進行相應的數據處理工作,并將數據處理結果發送給Android遙控器進行顯示。(3)Android遙控器與控制器間的WiFi無線通信,通過WiFi互相進行數據傳輸。本文提出的遙控裝置操作簡單,控制及時,可移植到嵌入式平臺,為遠程控制對象進行自動化作業提供很大幫助。
[1]楊洪濤,王英卓,杜娟.基于Android平臺的WiFi控制系統的設計與實現[J].北京工業職業技術學院學報,2016(3):10-16.
[2]屈川,劉思揚,吳昊宇.農機工作狀態實時無線監測系統設計與實現[J].南方農機,2016(8):59-60.
[3]薛金林,張欣欣,范博文,等.基于無線網絡的大田農業機械遙操作控制平臺(CN205507418U)[P].南京:實用新型專利,2016.
[4祝彥,譚凱,羅劍.基于WIFI技術的礦用機車無線通信系統的應用[J].遼寧工程技術大學學報,2012(5):76-79.
[5]黃蓉. Android消息處理機制研究[J]. 黑龍江科技信息,2012(33):87.
[6]萬書鵬,雷寶龍,翟明玉.調度與變電站一體化系統鏈路狀態監測與 TCP 通信方案[J].電力系統自動化,2014(1):92-96.
[7]劉爽,史國友,張遠強.基于TCP/IP協議和多線程的通信軟件的設計與實現[J].計算機工程與設計,2010(7):1417-1420.
[8]李雅麗,李永江.基于TCP通信方案的電力線路狀態監測系統研究[J].電源技術,2015(1):175-177.
[9]劉建華,田歲苗,趙勇,等. 基于Android的智能家居系統設計[J].西安郵電大學學報,2013(4):71-74.
[10]張秋波. 基于Android手機和WiFi的網絡定時開關的設計與實現[D].長春:吉林大學,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— ),男,江蘇泰興,碩士。