陳安 郭文榮 鄧惟記
摘 要:文章在對(duì)基于Linux的嵌入式車(chē)輛遠(yuǎn)程監(jiān)控報(bào)警系統(tǒng)的功能進(jìn)行分析的基礎(chǔ)上,采用Qt軟件設(shè)計(jì)了系統(tǒng)的圖形界面,包括監(jiān)控主窗口和各個(gè)子窗口。詳細(xì)闡述了系統(tǒng)圖形界面的設(shè)計(jì)方法以及功能實(shí)現(xiàn)方法,并對(duì)系統(tǒng)采用的關(guān)鍵編程技術(shù)進(jìn)行了詳細(xì)介紹。經(jīng)系統(tǒng)運(yùn)行測(cè)試,系統(tǒng)圖形界面的設(shè)計(jì)和功能達(dá)到了預(yù)期設(shè)計(jì)需求。
關(guān)鍵詞:嵌入式;車(chē)輛;遠(yuǎn)程監(jiān)控報(bào)警;Qt;圖形界面設(shè)計(jì)
中圖分類(lèi)號(hào):TP319 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):2095-2945(2018)34-0022-03
Abstract: On the basis of the analysis of the functions of the embedded vehicle remote monitoring and alarming system based on Linux, this paper designs the graphical interface of the system using Qt software, including the main monitoring window and each sub-window. The design method and function realization method of the system graphical interface are described in detail, and the key programming technology used in the system is introduced in detail. Through the system running test, the system graphical interface design and the function achieved the anticipated design demand.
Keywords: embedded; vehicle; remote monitoring and alarming; Qt; graphical interface design
1 概述
隨著嵌入式技術(shù)的快速發(fā)展和廣泛應(yīng)用,嵌入式技術(shù)也越來(lái)越多地應(yīng)用于車(chē)載系統(tǒng)以便為用戶提供更多樣、便捷和實(shí)用的應(yīng)用服務(wù)。在此背景下,針對(duì)當(dāng)今愈發(fā)突出的車(chē)輛安全問(wèn)題,開(kāi)發(fā)了一套基于嵌入式Linux的車(chē)輛遠(yuǎn)程監(jiān)控報(bào)警系統(tǒng),以實(shí)現(xiàn)對(duì)車(chē)輛安全情況的實(shí)時(shí)監(jiān)測(cè)和危險(xiǎn)報(bào)警,方便車(chē)主或管理人員對(duì)車(chē)輛的遠(yuǎn)程監(jiān)控和管理。
在車(chē)輛遠(yuǎn)程監(jiān)控報(bào)警系統(tǒng)的設(shè)計(jì)開(kāi)發(fā)中,為了使系統(tǒng)的界面設(shè)計(jì)美觀、實(shí)用,同時(shí)保證系統(tǒng)的功能性、實(shí)時(shí)性等需求,選擇一套合適的開(kāi)發(fā)工具非常重要。Qt軟件是一種跨平臺(tái)、面向?qū)ο蟮腃++應(yīng)用程序圖形界面設(shè)計(jì)軟件,具有界面設(shè)計(jì)簡(jiǎn)捷、美觀,設(shè)計(jì)的應(yīng)用程序?qū)崟r(shí)性和靈活性高等特點(diǎn),在嵌入式系統(tǒng)GUI圖形界面設(shè)計(jì)中有著廣泛的應(yīng)用,能夠滿足本系統(tǒng)的設(shè)計(jì)開(kāi)發(fā)需求,因此選擇其作為本系統(tǒng)的圖形界面設(shè)計(jì)軟件。
2 系統(tǒng)概述
本文所研究的車(chē)輛遠(yuǎn)程監(jiān)控報(bào)警系統(tǒng)用于車(chē)主或管理人員對(duì)車(chē)輛的遠(yuǎn)程監(jiān)控和報(bào)警,通過(guò)車(chē)載GPS模塊、溫度傳感器、加速度傳感器、振動(dòng)傳感器和熱釋電傳感器實(shí)時(shí)采集車(chē)輛的位置、行駛狀態(tài)以及非法入侵等信息,并將這些信息顯示主控制器的監(jiān)控界面中。主控制器對(duì)實(shí)時(shí)采集的車(chē)輛信息進(jìn)行分析處理,若發(fā)生危險(xiǎn)則通過(guò)GSM網(wǎng)絡(luò)將報(bào)警信息和車(chē)輛信息發(fā)送給車(chē)主或管理者手機(jī),從而實(shí)現(xiàn)車(chē)輛的快速報(bào)警處理。主控制器的功能包括車(chē)輛信息的實(shí)時(shí)顯示與處理、監(jiān)控短消息的收發(fā)與顯示、GPS模塊測(cè)試、GSM模塊測(cè)試、報(bào)警設(shè)置、自動(dòng)報(bào)警、手動(dòng)報(bào)警等。
主控制器采用飛凌OK6410-A ARM11開(kāi)發(fā)板,采用S3C6410處理器,4.3寸屏幕,運(yùn)行Linux3.0.1嵌入式系統(tǒng)。各種車(chē)載傳感器分別連接主控板的GPIO、I2C等接口。GPS模塊和GSM/GPRS模塊通過(guò)不同串口連接主控制器,實(shí)現(xiàn)車(chē)輛GPS信息的實(shí)時(shí)采集和監(jiān)控報(bào)警短信息的收發(fā)。
3 主控制器圖形界面設(shè)計(jì)
3.1 軟件開(kāi)發(fā)環(huán)境的搭建
主控制器程序的圖形界面設(shè)計(jì)是在PC宿主機(jī)的Linux虛擬機(jī)上完成的,程序需要編譯后下載到主控制器上運(yùn)行。本文的PC宿主機(jī)采用Window7系統(tǒng),安裝Linux Ubuntu12.04虛擬機(jī)。在Ubuntu虛擬機(jī)上需完成主控制器qt-4.7.1應(yīng)用開(kāi)發(fā)工具包的編譯、Qt Creator 2.4.1軟件的安裝。此外,還需安裝arm-linux-gcc-4.3.2交叉編譯器,以便編譯在主控制器ARM板上運(yùn)行的qt-4.7.1應(yīng)用程序。在完成上述工作后,還需在Qt Creator 2.4.1軟件中添加qt-4.7.1的qmake編譯文件路徑,并為其添加arm-linux-gcc-4.3.2交叉編譯器路徑,以實(shí)現(xiàn)主控制器程序的編譯。
3.2 監(jiān)控主窗口的設(shè)計(jì)與實(shí)現(xiàn)
監(jiān)控主窗口是主控制器上顯示的主界面,其功能是實(shí)時(shí)顯示車(chē)輛狀態(tài)信息、GPS定位信息、GSM遠(yuǎn)程監(jiān)控報(bào)警短信息,以及GPS測(cè)試、GSM測(cè)試、報(bào)警設(shè)置、自動(dòng)報(bào)警、手動(dòng)報(bào)警等功能。
3.2.1 創(chuàng)建應(yīng)用程序項(xiàng)目和監(jiān)控主窗口
首先,在Qt Creator 2.4.1軟件中創(chuàng)建車(chē)輛遠(yuǎn)程監(jiān)控報(bào)警系統(tǒng)的應(yīng)用程序項(xiàng)目(Project),項(xiàng)目類(lèi)型為“Qt Widget Project”下的“Qt Gui Application”。隨后,創(chuàng)建基于QDialog的對(duì)話框類(lèi),并自動(dòng)生成無(wú)模式對(duì)話框,此對(duì)話框即監(jiān)控主窗口。
3.2.2 監(jiān)控主窗口設(shè)計(jì)
根據(jù)監(jiān)控主窗口的功能需求,其界面設(shè)計(jì)包括四個(gè)部分:車(chē)輛信息顯示、GPS信息顯示、GSM遠(yuǎn)程監(jiān)控報(bào)警信息顯示以及各個(gè)功能按鈕,如圖1所示。窗口元素采用Qlabel標(biāo)簽顯示靜態(tài)文本信息、QlineEdit單行文本框顯示內(nèi)容簡(jiǎn)短的動(dòng)態(tài)文本信息,各個(gè)功能按鈕則利用QpushButton來(lái)實(shí)現(xiàn)。窗口文字采用簡(jiǎn)體中文“文泉驛字體”。窗口布局采用 QgridLayout網(wǎng)格布局形式,以便當(dāng)窗口縮放時(shí)各窗口元素能夠根據(jù)窗口大小自動(dòng)進(jìn)行縮放調(diào)整。
3.2.3 監(jiān)控主窗口功能的實(shí)現(xiàn)
(1)車(chē)輛信息的實(shí)時(shí)動(dòng)態(tài)顯示
監(jiān)控主窗口采用定時(shí)器每隔1秒鐘讀取各種車(chē)載傳感器采集的溫度、加速度、振動(dòng)以及外人非法進(jìn)入車(chē)輛等信息并顯示在車(chē)輛信息顯示界面中。具體實(shí)現(xiàn)方法如下:
首先,在監(jiān)控主窗口源文件(.cpp)中包含定時(shí)器庫(kù)文件“Qtimer”,創(chuàng)建定時(shí)器并設(shè)置定時(shí)器的超時(shí)時(shí)間為1秒。然后,通過(guò)Qt 的“信號(hào)——槽”機(jī)制將定時(shí)器超時(shí)信號(hào)與傳感器的數(shù)據(jù)采集和顯示程序相關(guān)聯(lián),從而實(shí)現(xiàn)定時(shí)器超時(shí)后自動(dòng)執(zhí)行傳感器的數(shù)據(jù)采集和顯示程序。
以車(chē)輛溫度為例,關(guān)聯(lián)定時(shí)器超時(shí)信號(hào)與溫度采集和顯示程序的代碼如下:
connect(tempTimer,SIGNAL(timeout()),this,SLOT(show_Temprature()));
其中,“tempTimer”為發(fā)送信號(hào)的定時(shí)器對(duì)象指針,“SIGNAL(timeout())”為定時(shí)器發(fā)送的超時(shí)信號(hào),“this”為接收信號(hào)的主窗口對(duì)象指針, “show_Temprature() ”為主窗口接收到定時(shí)器超時(shí)信號(hào)后自動(dòng)執(zhí)行的車(chē)輛溫度采集和顯示槽函數(shù)。
(2)GPS信息的實(shí)時(shí)動(dòng)態(tài)顯示
監(jiān)控主窗口每隔一秒鐘實(shí)時(shí)顯示車(chē)輛的GPS經(jīng)度和緯度定位信息,其GPS定位信息來(lái)自于GPS子窗口。當(dāng)主控制器程序運(yùn)行后,將創(chuàng)建監(jiān)控主窗口、GPS子窗口以及其他子窗口。GPS子窗口采用定時(shí)器每隔一秒鐘通過(guò)串口讀取GPS模塊接收的GPS定位信息,經(jīng)解析處理后將GPS經(jīng)度和緯度信息同步回傳到主窗口進(jìn)行顯示。
GPS子窗口與主窗口之間通過(guò)Qt 帶參數(shù)的“信號(hào)——槽”機(jī)制來(lái)實(shí)現(xiàn)數(shù)據(jù)的同步傳遞。GPS子窗口(GPSDialog)定時(shí)向主窗口發(fā)送sendGPSsignal(QString,QString)信號(hào),將GPS經(jīng)度和緯度數(shù)據(jù)通過(guò)兩個(gè)Qstring參數(shù)發(fā)送給主窗口。主窗口接收到該信號(hào)后,將自動(dòng)執(zhí)行show_GPS(QString,QString)槽函數(shù)顯示接收到的GPS經(jīng)度和緯度數(shù)據(jù)。
主窗口和GPS子窗口的“信號(hào)——槽”關(guān)聯(lián)代碼如下:
connect(GPSDialog,SIGNAL(sendGPSsignal(QString,QString)),this,SLOT(show_GPS(QString,QString)));
(3)GSM監(jiān)控短信息的實(shí)時(shí)動(dòng)態(tài)顯示
與GPS信息的顯示方法類(lèi)似,GSM監(jiān)控短信息的實(shí)時(shí)顯示也是利用帶參數(shù)的“信號(hào)——槽”將GSM子窗口中實(shí)時(shí)接收的監(jiān)控短信息同步回傳到主窗口中進(jìn)行顯示,具體實(shí)現(xiàn)過(guò)程不再贅述。
(4)子窗口的顯示
在監(jiān)控主窗口中設(shè)置了GPS測(cè)試、GSM測(cè)試、報(bào)警設(shè)置等按鈕,單擊某按鈕將打開(kāi)相應(yīng)的子窗口實(shí)現(xiàn)其功能。
以“GPS測(cè)試”按鈕為例,單擊該按鈕將打開(kāi)GPS子窗口。具體實(shí)現(xiàn)方法為:
在主窗口的“.cpp”文件中定義“GPS測(cè)試”按鈕的鼠標(biāo)單擊槽函數(shù),函數(shù)實(shí)現(xiàn)代碼如下:
void JkDialog::on_Button_GPSTest_clicked()
{
GPSDialog->show(); // 顯示GPS子窗口
}
3.3 GPS子窗口的設(shè)計(jì)與實(shí)現(xiàn)
除監(jiān)控主窗口之外,主控制器程序還包括GPS、GSM、報(bào)警設(shè)置等子窗口,各自實(shí)現(xiàn)不同的系統(tǒng)功能。由于篇幅所限,本文僅以GPS子窗口為例說(shuō)明其設(shè)計(jì)與實(shí)現(xiàn)方法。
3.3.1 創(chuàng)建GPS子窗口
在應(yīng)用程序項(xiàng)目中,選擇創(chuàng)建新的“Qt Designer Form Class”,然后選擇窗體模板“Dialog without Buttons”,設(shè)置窗體類(lèi)名,完成GPS對(duì)話框的創(chuàng)建,此對(duì)話框?yàn)闊o(wú)模式對(duì)話框。
3.3.2 GPS子窗口設(shè)計(jì)
GPS子窗口的功能是測(cè)試GPS模塊狀態(tài)、定時(shí)讀取GPS模塊所接收的原始GPS定位信息,并對(duì)信息進(jìn)行解析處理,獲得詳細(xì)的GPS定位信息(包括經(jīng)度、緯度、速度、航向、UTC時(shí)間等)并加以顯示。此外,還會(huì)將車(chē)輛的GPS經(jīng)緯度信息同步傳送給主窗口進(jìn)行顯示。
根據(jù)GPS子窗口的功能需求,其界面設(shè)計(jì)包括:經(jīng)度、緯度、速度、航向、UTC時(shí)間、GPS狀態(tài)、GPS信息(GPS原始信息)等文本信息以及GPS測(cè)試和退出等按鈕,如圖2所示。界面元素采用Qlabel標(biāo)簽顯示靜態(tài)文本信息,采用QlineEdit單行文本框顯示緯度、經(jīng)度、速度、航向等簡(jiǎn)短動(dòng)態(tài)文本信息,采用QtextBrower多行文本瀏覽框顯示GPS模塊接收的原始GPS信息,GPS測(cè)試和退出等按鈕則采用QpushButton來(lái)實(shí)現(xiàn)。對(duì)話框窗口文字和窗口布局形式與監(jiān)控主窗口相同。
3.3.3 GPS子窗口功能的實(shí)現(xiàn)
(1)GPS初始化設(shè)置
在GPS子窗口中,單擊“GPS測(cè)試”按鈕開(kāi)始GPS模塊的初始化和測(cè)試。具體實(shí)現(xiàn)方法如下:
程序首先打開(kāi)GPS模塊所連接的串口,若成功則設(shè)置串口的通信參數(shù),本文的GPS串口的通信速率設(shè)置為9600KBps、8位數(shù)據(jù)位、無(wú)奇偶校驗(yàn)、1位停止位、無(wú)數(shù)據(jù)流控制。隨后,創(chuàng)建并啟動(dòng)定時(shí)器,設(shè)置定時(shí)器的超時(shí)時(shí)間為1秒。然后,將定時(shí)器的超時(shí)信號(hào)與GPS信息接收和處理槽函數(shù)相關(guān)聯(lián),以實(shí)現(xiàn)定時(shí)讀取GPS信息進(jìn)行處理及顯示。若串口打開(kāi)失敗,則顯示提示信息。
(2)GPS信息的接收與處理
GPS信息接收和處理槽函數(shù)首先讀取GPS串口所接收的GPS原始信息,并根據(jù)GPS 的NMEA0183通信標(biāo)準(zhǔn), 對(duì)GPS原始信息中的“$GPRMC”部分進(jìn)行解析處理,從而得到經(jīng)度、緯度、速度、航向、UTC時(shí)間等詳細(xì)信息。隨后,將GPS原始信息和解析處理后的GPS定位信息顯示在GPS子窗口中。若GPS信息中出現(xiàn)無(wú)效定位字符,則提示GPS定位失敗。
(3)GPS子窗口向主窗口同步傳送GPS數(shù)據(jù)
在GPS信息接收和處理槽函數(shù)中,當(dāng)完成GPS信息的解析處理后,將向主窗口發(fā)送“sendGPSsignal(QString,
QString)”信號(hào),將GPS經(jīng)度和緯度數(shù)據(jù)作為參數(shù)傳遞給主窗口進(jìn)行顯示。發(fā)送該信號(hào)的代碼如下:
emit sendGPSsignal(longtitude,latitude);
其中,參數(shù)longtitude和latitude分別為解析后得到的GPS經(jīng)度和緯度數(shù)據(jù)。
4 結(jié)束語(yǔ)
本文采用Qt軟件實(shí)現(xiàn)了基于Linux的嵌入式車(chē)輛遠(yuǎn)程監(jiān)控報(bào)警系統(tǒng)的設(shè)計(jì),完成了監(jiān)控主窗口和各個(gè)子窗口的界面設(shè)計(jì),實(shí)現(xiàn)了各窗口的功能和窗口之間的數(shù)據(jù)傳遞,界面簡(jiǎn)潔、實(shí)用,系統(tǒng)功能達(dá)到了車(chē)輛遠(yuǎn)程監(jiān)控和自動(dòng)報(bào)警的應(yīng)用需求,提高了車(chē)輛的安全性,具有較高的實(shí)用性。
參考文獻(xiàn):
[1]田磊.嵌入式Linux系統(tǒng)中基于QT庫(kù)的應(yīng)用程序設(shè)計(jì)[J].實(shí)驗(yàn)室研究與探索,2014,33(5):84-86+115.
[2]孫弋,張曉剛.基于嵌入式Linux的車(chē)載終端的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2009,25(6-2):86-88.
[3]王存健,張建正.嵌入式Linux下Qt/Embedded的應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2006,16(11):179-181.
[4]成潔,路欣.嵌入式Linux平臺(tái)的GPS數(shù)據(jù)采集研究[J].江西理工大學(xué)學(xué)報(bào),2006,27(3):24-26.
[5]趙慶麗,魏東興,郭永山.基于嵌入式LINUX的GPRS數(shù)據(jù)傳輸系統(tǒng)[J].信息技術(shù),2004,28(3):1-4+19.
[6]張歡慶,高麗,宋承祥.基于ARM的嵌入式Linux交叉編譯環(huán)境的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2012(2):151-153.