劉鐘情
摘要: 為了實現機房環境監控系統實時性,可控性和可預警性,在軟硬件資源受限的嵌入式環境中,采用Qt/Embedded在嵌入式Linux系統下開發出友好的GUI界面,可以提供實驗室環境參數的查詢和設置,從而實現實時監控。通過結合Qt/Embedded的特點和優點,提出用Qt/Embedded實現實驗室環境監控系統的圖形用戶界面的設計思路,并對Qt/Embedded圖形系統應用開發過程中的一些關鍵問題進行了深入研究。
關鍵詞: Qt/Embedded; 嵌入式GUI; 嵌入式Linux; 控制界面
中圖分類號: TN911?34; TP311 文獻標識碼: A文章編號: 1004?373X(2014)08?0038?02
Qt/Embedded?based environment monitoring system for laboratory
LIU Zhong?qing
(Chengdu Sport University, Chengdu 610041, China)
Abstract: To achieve the real?time performance, controllability and early warning of computer room environment monitoring system, Qt/Embedded is adopted in the embedded Linux system to realize friendly GUI, which makes query and set of the laboratory environment parameters possible in the hardware and software resource?constrained embedded environment. In consideration of the characteristics and advantages of Qt/Embedded, Qt/Embedded is used to realize the GUI of remote monitoring system for the environment in the laboratory. Some key problems existing in the process of developing the GUI based on Qt/Embedded is deeply discussed in this paper.
Keywords: Qt/Embedded; embedded GUI; embedded Linux; control interface
0引言
智能監控是當前自動控制領域研究的熱點問題,在軟硬件資源受限的嵌入式環境中,將32位高性能微處理器和Qt/Embedded結合,應用到現實控制場合具有一定的可行性和前瞻性。
隨著自動化設備現場環境更加注重實效性,高精度,且對人體健康影響小等方面,目前,國內高等院校的實驗室已不能完全滿足要求,因此,研究開發具有高效實時監控,精密遠程控制,可靠安全預警等功能的的智能實驗室環境監控系統具有重要的實踐意義[1]。本文重點研究基于Qt/Embedded智能實驗室監控系統開發過程和應用難點。
1系統硬件架構圖
本系統主控制器以三星公司的S3C2410 ARM微處理器作為嵌入式前端機,通過MEGA8傳感器擴展板完成數據的采集,存儲,顯示和前端機的通信。以固定IP計算機為中層監控主機,通過以太網接入Internet。監控主機通過監控軟件實時掌握被監控點的環境參數,根據預設參數(閾值)邏輯判斷狀態,達到條件啟動異常警告[2],并將相關數據或報警信息傳送給遠程監控。遠程監控包括手機,固定電話,普通PC或移動PC等,他們通過GSM,PSTN,TCP/IP與監控中心相連見圖1。
系統功能流程為:軟件輪詢接收傳感器的狀態數據,同時發送中斷請求,前端機根據串口通信協議發送控制命令給單片機,單片機根據控制命令向指定傳感器的返回狀態或數據。前端機的觸摸屏呈現的友好的GUI界面是在嵌入式Linux系統下用Qt開發的,具備提供實驗室環境參數的查詢和設置等功能。
2Qt/Embedded系統平臺
2.1Qt/Embedded系統移植
Qt/Embedde系統是專為小型設備提供圖形用戶界面的應用框架和窗口系統,作為要移植的GUI,具體安裝移植參見文獻[3?4]。
圖1 系統硬件架構圖
2.2中文顯示支持
監控系統使用中文字體顯示可以方便用戶操作。采用Qt/Embedded開發的監控界面需要完成在編譯庫中加入對中文的支持和在程序中指定一個中文字體即可實現對中文支持[5]。
2.3Qt/Embedded程序開發流程
(1) 注冊環境變量,進入Qt/Embedded系統開發環境,PC機上使用Qt?x11.2.3.2的設計工具designer設計可視化界面,使用uic代碼自動生成工具把demo.ui生成C++代碼:demo.h和demo.cpp,并編寫main.cpp主程序,建立工程,然后編譯,生成可執行文件,使用qvfb工具運行此可執行文件查看仿真效果。
(2) 使用交叉編譯工具編譯源程序,編譯生成可在ARM?Linux系統中運行的可執行文件,將該可執行文件復制到ARM?Linux系統中,在ARM?Linux系統中運行該可執行文件,得到應用程序的實際效果[6]。
3GUI設計
3.1圖形用戶界面程序框架
用戶與嵌入式前端機的接口是圖形用戶界面,用戶可以根據圖形用戶界面所顯示的信息,結合觸摸屏選擇響應的菜單,查詢所需要的信息。圖形用戶界面主要模塊有:狀態設置,數據通信,數據采集,故障診斷,溫度管理示即實時管理機房的溫度變化曲線, 濕度管理,即實時管理機房的濕度變化曲線。如圖2所示。
3.2圖形用戶界面程序設計
3.2.1頭文件和源文件的生成
以下為使用QtDesigner開發溫度顯示界面,濕度管理及其他界面類似。使用uic工具,用temperature.ui界面文件生成temperature..h頭文件和源文件。
uic ?otemperature.htemperature.ui
uic ?otemperature.cpp ?impltemperature.htemperature.ui
圖2 圖形用戶界面程序基本架構
溫度管理界面要實現查詢當前或某個歷史時刻的溫度,在temperature.cpp文件里添加溫度曲線生成的代碼實現生成溫度曲線的功能。在文件temperature.cpp中定義一個temperature類的查詢當前或某個歷史時刻的溫度成員函數:
void temperature::searchtempSlot()
定義編輯生成溫度曲線成員函數:
void temperature::edittempSlot()
溫度管理窗口界面的2個按鈕的Signal?Slot的connect()代碼:
connect(searchtemp. SIGNAL(clicked()),this.SLOT(searchtempSlot)));
connect(edittemp. SIGNAL(clicked()),this.SLOT(edittempSlot)));
3.2.2main主函數文件編寫
為了生成main.cpp文件,必須先生成QApplication類的實例,定義窗口類實例,把窗口類實例作為程序的主窗口,設置mainwindow部件,調用show()和exec()方法,使溫度管理界面作為主窗口。以下是temperature的主函數文件main.cpp的主要代碼:
int main(int argc,char **argv)
{
QApplication temperature(argc,argv);
temperature *mainwindow=new temperature;
app.setMainWidget((&mainwindow);
mainwindow?>show();
retrun temperature.exec();
}
3.2.3編譯調試
先生成.pro工程文件,采用progen方法為:$TMAKEDIR/bin/progen?T.app.t?otemperature.pro。用tmake命令生成Makefile文件,方法為:$TMAKEDIR/bin/tmake?oMakefiletemperature.pro,用make命令對整個工程進行編譯鏈接。調試過程中,先在開發機上用Qt/Embedded提供的模擬環境qvfb即Qt/Embedded的虛擬仿真窗口中進行測試[7]。
3.2.4移植程序到目標機
重新編譯程序,復制Qt/Embedded二進制庫和應用程序的二進制代碼到某個目錄下,把該目錄制成某種類型的根文件系統,最后將該根文件系統燒寫到S3C410的FLASH存儲器上[8]。
4結語
高性能的監控系統需要一個高性能,高可靠性的用戶界面的支持,基于Qt/Embedded的人機界面的設計,開發和維護成本低,人機交互信息豐富,豐富的API接口和基于組件的編程模型使得嵌入式應用程序開發更加便捷[9]。本文設計了基于S3C2410ARM微處理器和嵌入式Linux系統的實驗室環境監控系統,對基于Qt/Embedded開發嵌入式GUI,及Qt/Embedded編程的關鍵技術問題做了較詳細的論述。
參考文獻
[1] 楊柳,岳坤,龐和明,等.Qt/Embedded及嵌入式Linux在智能監控系統控制中的應用[J].計算機應用,2010,30(1):289?291.
[2] 楊柳,龐和明,姜琳穎,等.嵌入式Linux及SQLite數據庫在智能監控中的應用研究[J].微計算機信息,2010,26(24):65?67.
[3] 郭海濤,王進華.基于Qt支持庫的嵌入式系統中GUI分析與設計[J].江蘇電氣,2008(10):8?10.
[4] 張亞君,孔帥.基于Qt/Embedded和Qtopia的嵌入式GUI移植開發[J].天津職業大學學報,2010,19(1):78?82.
[5] 趙毅,游有鵬.基于Qt/Embedded的嵌入式數控系統人機界面設計與開發[J].工業控制計算機,2008,21(4):68?71.
[6] 孫巍,馮偉興.Qt/Embedded應用程序在ARM?Linux系統中開發與應用[J].計算機應用,2011,30(8):9?12.
[7] 陳鯤,陳云秋,劉信新.基于Qt/Embedded的嵌入式Linux應用程序的設計[J].計算機與數字工程,2009,37(1):156?158.
[8] 劉勝玉,張志新.基于Qt/Embedded的嵌入式監測系統人機界面[J].工業控制計算機,2009,22(9):17?18.
[9] 連照亮,徐世國.基于Qt/Embedde在嵌入式Linux下的應用研究[J].微計算機信息,2010,26(12):81?83.
溫度管理窗口界面的2個按鈕的Signal?Slot的connect()代碼:
connect(searchtemp. SIGNAL(clicked()),this.SLOT(searchtempSlot)));
connect(edittemp. SIGNAL(clicked()),this.SLOT(edittempSlot)));
3.2.2main主函數文件編寫
為了生成main.cpp文件,必須先生成QApplication類的實例,定義窗口類實例,把窗口類實例作為程序的主窗口,設置mainwindow部件,調用show()和exec()方法,使溫度管理界面作為主窗口。以下是temperature的主函數文件main.cpp的主要代碼:
int main(int argc,char **argv)
{
QApplication temperature(argc,argv);
temperature *mainwindow=new temperature;
app.setMainWidget((&mainwindow);
mainwindow?>show();
retrun temperature.exec();
}
3.2.3編譯調試
先生成.pro工程文件,采用progen方法為:$TMAKEDIR/bin/progen?T.app.t?otemperature.pro。用tmake命令生成Makefile文件,方法為:$TMAKEDIR/bin/tmake?oMakefiletemperature.pro,用make命令對整個工程進行編譯鏈接。調試過程中,先在開發機上用Qt/Embedded提供的模擬環境qvfb即Qt/Embedded的虛擬仿真窗口中進行測試[7]。
3.2.4移植程序到目標機
重新編譯程序,復制Qt/Embedded二進制庫和應用程序的二進制代碼到某個目錄下,把該目錄制成某種類型的根文件系統,最后將該根文件系統燒寫到S3C410的FLASH存儲器上[8]。
4結語
高性能的監控系統需要一個高性能,高可靠性的用戶界面的支持,基于Qt/Embedded的人機界面的設計,開發和維護成本低,人機交互信息豐富,豐富的API接口和基于組件的編程模型使得嵌入式應用程序開發更加便捷[9]。本文設計了基于S3C2410ARM微處理器和嵌入式Linux系統的實驗室環境監控系統,對基于Qt/Embedded開發嵌入式GUI,及Qt/Embedded編程的關鍵技術問題做了較詳細的論述。
參考文獻
[1] 楊柳,岳坤,龐和明,等.Qt/Embedded及嵌入式Linux在智能監控系統控制中的應用[J].計算機應用,2010,30(1):289?291.
[2] 楊柳,龐和明,姜琳穎,等.嵌入式Linux及SQLite數據庫在智能監控中的應用研究[J].微計算機信息,2010,26(24):65?67.
[3] 郭海濤,王進華.基于Qt支持庫的嵌入式系統中GUI分析與設計[J].江蘇電氣,2008(10):8?10.
[4] 張亞君,孔帥.基于Qt/Embedded和Qtopia的嵌入式GUI移植開發[J].天津職業大學學報,2010,19(1):78?82.
[5] 趙毅,游有鵬.基于Qt/Embedded的嵌入式數控系統人機界面設計與開發[J].工業控制計算機,2008,21(4):68?71.
[6] 孫巍,馮偉興.Qt/Embedded應用程序在ARM?Linux系統中開發與應用[J].計算機應用,2011,30(8):9?12.
[7] 陳鯤,陳云秋,劉信新.基于Qt/Embedded的嵌入式Linux應用程序的設計[J].計算機與數字工程,2009,37(1):156?158.
[8] 劉勝玉,張志新.基于Qt/Embedded的嵌入式監測系統人機界面[J].工業控制計算機,2009,22(9):17?18.
[9] 連照亮,徐世國.基于Qt/Embedde在嵌入式Linux下的應用研究[J].微計算機信息,2010,26(12):81?83.
溫度管理窗口界面的2個按鈕的Signal?Slot的connect()代碼:
connect(searchtemp. SIGNAL(clicked()),this.SLOT(searchtempSlot)));
connect(edittemp. SIGNAL(clicked()),this.SLOT(edittempSlot)));
3.2.2main主函數文件編寫
為了生成main.cpp文件,必須先生成QApplication類的實例,定義窗口類實例,把窗口類實例作為程序的主窗口,設置mainwindow部件,調用show()和exec()方法,使溫度管理界面作為主窗口。以下是temperature的主函數文件main.cpp的主要代碼:
int main(int argc,char **argv)
{
QApplication temperature(argc,argv);
temperature *mainwindow=new temperature;
app.setMainWidget((&mainwindow);
mainwindow?>show();
retrun temperature.exec();
}
3.2.3編譯調試
先生成.pro工程文件,采用progen方法為:$TMAKEDIR/bin/progen?T.app.t?otemperature.pro。用tmake命令生成Makefile文件,方法為:$TMAKEDIR/bin/tmake?oMakefiletemperature.pro,用make命令對整個工程進行編譯鏈接。調試過程中,先在開發機上用Qt/Embedded提供的模擬環境qvfb即Qt/Embedded的虛擬仿真窗口中進行測試[7]。
3.2.4移植程序到目標機
重新編譯程序,復制Qt/Embedded二進制庫和應用程序的二進制代碼到某個目錄下,把該目錄制成某種類型的根文件系統,最后將該根文件系統燒寫到S3C410的FLASH存儲器上[8]。
4結語
高性能的監控系統需要一個高性能,高可靠性的用戶界面的支持,基于Qt/Embedded的人機界面的設計,開發和維護成本低,人機交互信息豐富,豐富的API接口和基于組件的編程模型使得嵌入式應用程序開發更加便捷[9]。本文設計了基于S3C2410ARM微處理器和嵌入式Linux系統的實驗室環境監控系統,對基于Qt/Embedded開發嵌入式GUI,及Qt/Embedded編程的關鍵技術問題做了較詳細的論述。
參考文獻
[1] 楊柳,岳坤,龐和明,等.Qt/Embedded及嵌入式Linux在智能監控系統控制中的應用[J].計算機應用,2010,30(1):289?291.
[2] 楊柳,龐和明,姜琳穎,等.嵌入式Linux及SQLite數據庫在智能監控中的應用研究[J].微計算機信息,2010,26(24):65?67.
[3] 郭海濤,王進華.基于Qt支持庫的嵌入式系統中GUI分析與設計[J].江蘇電氣,2008(10):8?10.
[4] 張亞君,孔帥.基于Qt/Embedded和Qtopia的嵌入式GUI移植開發[J].天津職業大學學報,2010,19(1):78?82.
[5] 趙毅,游有鵬.基于Qt/Embedded的嵌入式數控系統人機界面設計與開發[J].工業控制計算機,2008,21(4):68?71.
[6] 孫巍,馮偉興.Qt/Embedded應用程序在ARM?Linux系統中開發與應用[J].計算機應用,2011,30(8):9?12.
[7] 陳鯤,陳云秋,劉信新.基于Qt/Embedded的嵌入式Linux應用程序的設計[J].計算機與數字工程,2009,37(1):156?158.
[8] 劉勝玉,張志新.基于Qt/Embedded的嵌入式監測系統人機界面[J].工業控制計算機,2009,22(9):17?18.
[9] 連照亮,徐世國.基于Qt/Embedde在嵌入式Linux下的應用研究[J].微計算機信息,2010,26(12):81?83.