摘 要:在linux操作系統下,以qtopia為圖形界面應用程序開發平臺,介紹了圖形界面控制系統的開發過程。首先闡述了控制界面的開發環境的建立,介紹了界面應用程序的設計,以完成后續溫度數據采集、顯示、目標預設等功能。
關鍵詞:Qt技術圖形界面控制系統程序的設計
中圖分類號:TP29文獻標識碼:A文章編號:1674-098X(2011)07(c)-0023-02
隨著嵌入式技術的發展,越來越多的智能化帶有界面控制功能的小型設備深入到人們生活當中。開發者基于嵌入式領域中的Qt技術,設計出一套應用于工控領域的具有人機交互界面的智能控制系統,該系統實現AD雙路讀取、數據顯示、溫度預設、PWM自動調節等功能,本文著重介紹界面設計過程。
1 圖形用戶接口環境的建立
1.1 安裝Qt/Embedded2.3.7命令
tar xvzf qt-embeded-2.3.7.tar.gz
cd qt.2.3.7
export QTDIR=$QTDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH./configure –qconfig –qvfb –depths 4,8,16,32
Make sub-src
其中設置QT嵌入式開發包虛擬緩沖幀工具qvfb,并支持4,8,16,32位顯示顏色的深度。虛擬出來的緩沖幀和硬件平臺設備上的每個像素保持一致,這樣在軟件開發和系統調用時就不用總是刷新嵌入式設備的FLASH存儲空間,加速了整個研發的周期。
1.2 安裝Qt/X112.3.2
Qt/X112.3.2提供用戶接口編譯器uic,它所產生的源文件和Qt/embedded的庫一應起被編譯鏈接,但是QT for X11的版本該要比Qt/Embedded舊,否則會導致軟件不兼容。
1.3 安裝qtopia
為了避免qtopia2.2.0復雜的配置編譯的過程,我們直接從arm9論壇下載了關于qtopia的安裝腳本并執行。
2 圖形界面的設計
2.1 用QT圖形設計器設計控制界面
用QT圖形設計器是一個具有可視化用戶接口的設計工具。按照項目需要,控制界面要求簡單,可預設控制值,將界面分為一級主目錄和若干個二級子目錄和三級子目錄。其中主菜單為功能選項,二級子菜單包括狀態顯示、溫度預設、視頻監控、功能簡介等(視頻監控,和多算法選擇現在還沒有開發完全)。如圖一、圖二所示,為上位機QT環境下設計的一級菜單界面和子菜單中的狀態顯示界面:
uic自動創建了類 CDlgMonitorBase,這個類是以公有方式對QDialog窗口類的繼承:class CDlgMonitorBase : public QDialog。在該類中添加公有成員:QPushButton* btn_up;提供上選擇按鈕部件;其他三個觸摸按鍵添加同此方法,完成父類控件的信號與槽的配對,實現上下選擇、確定、取消功能:
connect((QObject*)btn_ok,SIGNAL(clicked()),this,SLOT(menu_select()));
在QT應用程序的read_adc(int ch)函數中,命令int ret = ioctl(adc_fd, ADC_SEL_CHANN, ch),其中ch是傳遞進來的通道號0或者1;adc_fd是設備號,這里傳遞進來的為ADC的設備號,而ADC_SEL_CHANN可以理解為一條命令,直接與ADC的驅動相聯系,調用驅動里命令讀取ADC數據寄存器ADCDAT0里的值,如果讀到值,ioctl返回值為1。最終read_adc(int ch)實現了讀取ADC數據寄存器中的值。系統不僅具備觸摸屏按鍵控制功能,而且具備硬件面板真實按鍵功能,為了能夠使兩者建立映射關系,在MyPIGPC.cpp中具體實現如下:
bt[0] = btn_status[0];
bt[1] = btn_status[1];
bt[2] = btn_status[2];
bt[3] = btn_status[3];
for (int i=0; i { btn_status[i] = 0; } if (bt[0]) menu_movedn(); if (bt[1]) menu_select(); if (bt[2]) menu_moveup(); if (bt[3]) closeme(); btn_status[]是在頭文件中用靜態變量定義的四成員的數組,分別對應著控制的液晶觸摸按鍵,當硬件面板上有按鍵被按下,驅動程序會使btn_status[]中的相應變量值為1,然后btn_status[]數組值將賦值給數組bt[],值得注意的是兩個數組的區別,前者使用靜態變量定義的,會在內存中永久性地分成一片空間用來單獨感應按鍵是否被按下,將其值付給char型數組bt[]后,btn_status[]數組隨即清零以便感受是否有新的鍵被按下。menu_movedn();menu_select();menu_moveup();closeme();分別是觸摸上四個按鍵觸發后所對應的槽函數,當硬件按鍵被按下后,調用相應函數,實現的效果與點擊觸摸屏所實現的效果是一樣的。 2.2 硬件平臺控制界面的實現 將編寫好的程序經交叉編譯生成mypigpc,mypigpc.desktop,mypigpc.png三個文件,通過ftp傳到目標板以下三個目錄: mkdir -p /opt/Qtopia/pics/mypigpc cp mypigpc.png /opt/Qtopia/pics/mypigpc/ 應用程序圖標存放在該文件夾下。 chmod 777 mypigpc 使登錄的所有人具有最高權限。 cp mypigpc /opt/Qtopia/bin 可執行文件存放該文件夾下。 cp mypigpc.desktop /opt/Qtopia/apps/Application 此時已把程序固化到硬件平臺的FLASH中。 3 結語 本文簡述了界面開發環境的建立,各級界面的設計,應用程序工作的流程。實現了界面控制、顯示、觸摸按鍵與硬件平臺按鍵的映射功能。