天天看點

ajax無線遙控器,基于WiFi網絡的可視化遙控搬運機器人設計

3.6 BOA伺服器搭建

由于MJPGstreamer伺服器隻能傳輸視訊資訊,而本設計需要接收用戶端的控制指令并且還需傳回機器人的傳感器資料,是以需要移植支援CGI應用腳本的伺服器。BOA伺服器是一個可運作在Unix或Linux下的非常小巧的單任務WEB伺服器,并且支援CGI腳本,廣泛應用于嵌入式領域。本設計通過編寫CGI腳本來完成伺服器與用戶端的資料交換。

3.7 伺服器端程式設計

服務程式主要完成機器人的初始化、讀取電量值并将電量值通過LED進行提示,讀取命名管道獲得指令字并将其解析執行。主要的流程圖如圖3所示。

ajax無線遙控器,基于WiFi網絡的可視化遙控搬運機器人設計

如圖3所示,本設計中的服務程式采用多程序程式設計方式,其子程序每60 s采集一次電源電量資訊并更新電量訓示燈顯示,主程序采用阻塞讀的方式讀取命名管道來等待客

戶端發送指令,獲得指令之後對指令進行解析,并調用驅動程式來執行相應的指令,進而實作對機器人的控制。

4 用戶端程式設計

4.1 Android用戶端設計

Android用戶端軟體流程圖如圖4所示。

ajax無線遙控器,基于WiFi網絡的可視化遙控搬運機器人設計

Android端的應用程式采用多線程技術,其中一個子線程每60 s向伺服器發送一個擷取電量的指令并根據收到的資料進行顯示更新,另一個線程根據MJPEG協定來解析出圖像資料并更新顯示。主線程主要完成使用者操控事件的監聽,并根據使用者的實際操控發送相應的指令給伺服器,并從伺服器獲得機器人的最新資料來實時更新,其指令的發送方式采用HTTP協定中的GET方法。

GET方法是HTTP協定中定義的多種與伺服器進行互動的方法之一,它一般用于擷取/查詢資源資訊。該方法請求的資料會附在URL之後,并且送出的資料最多隻能是1024位元組,但是本設計中隻需要傳送指令字即可,是以采用GET方法來傳送指令字與擷取機器人資料資訊。使用該方法來發送指令,伺服器端的CGI程式可以在QUERY—STRING環境變量中非常友善地擷取到用戶端傳送給伺服器的資料,并且用戶端應用程式可以在HttpResponse中獲得伺服器端傳回的資料。

MJPEG将伺服器端發送來的一張張JPEG圖像資料發送給用戶端,用戶端不斷地接收圖像資料并顯示更新,即形成了動态的圖像。擷取視訊圖像資料時,用戶端首先發一個GET方法,如果伺服器接收響應則會設定contexttype的boundary子屬性來指明,然後伺服器端開始發送圖檔資料,在資料頭部會有圖檔類型以及大小資訊,其中Content—Length字段指明圖像資料的長度,Content—Type字段指明圖像的類型值為image/jpeg。當一幀圖像資料發送完畢後,伺服器端将會發送邊界字元串來表示一幀圖像發送結束。

4.2 WEB用戶端設計

WEB用戶端程式流程圖如圖5所示。WEB用戶端采用AJAX技術,其功能子產品大體上分為3個部分:第一部分主要是監測使用者的操作并采用HTTP GET方法來發送控制指令,然後将伺服器傳回的資訊更新顯示;第二部分主要為120 s定時發送,擷取電源電量值的指令,并将獲得的資料更新顯示;第三部分擷取圖像資料并顯示。

ajax無線遙控器,基于WiFi網絡的可視化遙控搬運機器人設計

AJAX(Asynchronous Javascript+XML)即異步JavaScript和XML技術的簡稱,它可以實作網頁異步更新。采用該方法來設計WEB應用,可以隻對網頁的部分内容進行更新,而不需要重新對整個頁面進行加載。其工作原理如圖6所示。

ajax無線遙控器,基于WiFi網絡的可視化遙控搬運機器人設計

結語

本文從硬體選型、硬體電路設計、系統移植、驅動程式移植編寫、伺服器搭建、伺服器程式編寫,以及Android用戶端和WEB用戶端應用程式編寫方面進行了較為詳細的介紹。最終,使用者能夠通過Android用戶端和WEB用戶端對機器人進行夾持、運輸、擺放動作的控制,并且可以實時地傳回機器人采集到的圖像資料和傳感器資料。