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