3 G網(wǎng)絡的移動機器人遠程監(jiān)控系統(tǒng)
視頻數(shù)據(jù)傳輸通過Socket實現(xiàn),且直接在服務器設備端與Web客戶端之間進行傳輸,通過視頻流服務器實現(xiàn)對視頻的開關控制。由于視頻傳輸是連續(xù)的過程,所以客戶端和服務器端都通過線程來實現(xiàn)發(fā)送與接收。接收線程由函數(shù)pthread_create((servers[id].threadID),NULL,server thread,&(servers[id]))創(chuàng)建。
視頻的采集和傳輸是在兩個線程中實現(xiàn)的,它們共享一個緩沖池。這兩個線程都是在視頻采集服務器端的程序啟動時創(chuàng)建并運行的。其中采集視頻圖像的線程不斷通過攝像頭采集現(xiàn)場圖像,經(jīng)過JPEG壓縮后存放到緩沖池中,而傳輸視頻數(shù)據(jù)的線程創(chuàng)建一個Socket來監(jiān)聽等待遠程客戶的連接請求。當有客戶發(fā)送連接請求并建立連接后,就通過該連接向遠程客戶發(fā)送視頻數(shù)據(jù),而發(fā)送的視頻數(shù)據(jù)就是從緩沖池中獲取的。也就是說,在視頻采集服務器端,視頻數(shù)據(jù)傳輸所需要的一切都已經(jīng)準備好,就等著客戶的請求,一旦建立連接,就可以發(fā)送視頻數(shù)據(jù),從而實現(xiàn)較快的速度和較高的效率。
視頻采集和傳輸?shù)墓ぷ髁鞒虉D如圖2所示。本文引用地址:http://www.ex-cimer.com/article/148051.htm
2.2 遠程控制的實現(xiàn)
為了監(jiān)控界面能被通用瀏覽器打開,需要移植Web服務器Boa。Boa服務器是一款小型開源的嵌入式Web服務器,交叉編譯后的可執(zhí)行代碼大小約為60 KB,在Linux3.0.1內(nèi)核下運行時占用的內(nèi)存大小約為1.7 MB。其功能較為強大,支持身份認證、CGI動態(tài)Web技術等。它不像傳統(tǒng)的Web服務器那樣為每個訪問連接開啟一個進程,只能依次完成用戶的請求,即單進程響應多路請求,因此,Boa在同等硬件條件下相對于其他Web服務器表現(xiàn)出更快的速度,節(jié)省更多的資源。
通用網(wǎng)關接口(CGI)是用于Web服務器與外部應用程序之間信息交互的標準接口。CGI可以使外部程序處理客戶端傳來的表單和數(shù)據(jù),并對此作出某種反應。這種反應可以是HTML文件、圖片等可以在瀏覽器窗體上出現(xiàn)的任何數(shù)據(jù),也可以是對服務器端硬件資源的控制。
調(diào)用CGI程序的方法主要有兩種:
①GET方法,CGI程序從環(huán)境變量QUERY_STRING中獲得數(shù)據(jù);
②POST方法,Web服務器通過STDIN向CGI程序傳輸數(shù)據(jù),數(shù)據(jù)量超過1024字節(jié)時采用此方法。
本系統(tǒng)采用GET方法。
在串口應用程序中,數(shù)據(jù)的獲取通過以下代碼實現(xiàn):
……
char*data;
data=getenv(“QUERY STRING”);
……
評論