国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于Qt/Embedded的嵌入式控制界面開發(fā)

發(fā)布時(shí)間:2010-4-23 11:05    發(fā)布者:我芯依舊
關(guān)鍵詞: Embedded , 控制界面 , 嵌入式
基于GPL(General Public License)架構(gòu)之下的Linux,具有硬件需求低,架構(gòu)開放,系統(tǒng)穩(wěn)定,保密性好等特點(diǎn),嵌入式Linux的這些優(yōu)點(diǎn)正好符合工控領(lǐng)域安全性,穩(wěn)定性,實(shí)時(shí)性和易維護(hù)等要求。另外,嵌入式Linux操作系統(tǒng)中一個(gè)重要的組成部分就是圖形用戶界面GUl(Graphic User Interface)。風(fēng)電控制系統(tǒng)中人機(jī)界面功能復(fù)雜,種類繁多,其性能的好壞主要取決于圖形功能的設(shè)計(jì)。利用Qt/Embedded(簡稱qte)開發(fā)的GUI,能實(shí)現(xiàn)系統(tǒng)的監(jiān)視,控制,管理等功能。

1 控制界面的圖形化設(shè)計(jì)

在風(fēng)電控制界面設(shè)計(jì)中,對(duì)用戶特征分析十分重要,用戶一般是受過訓(xùn)練的,經(jīng)常使用計(jì)算機(jī)而且有相當(dāng)經(jīng)驗(yàn)的非程序員用戶。其人機(jī)界面開發(fā)中應(yīng)考慮以下幾方面:

(1)安全性:設(shè)定操作員級(jí)別,使畫面顯示,執(zhí)行和操作根據(jù)權(quán)限的不同而有區(qū)別。
(2)順序原則:信息分層,增強(qiáng)可讀,集成一致性。
(3)圖形系統(tǒng):完成特定圖形的輸入,顯示和操作。
(4)實(shí)時(shí)數(shù)據(jù)的操作:對(duì)現(xiàn)場(chǎng)采集的數(shù)據(jù)能在限定的時(shí)間內(nèi)給予顯示,通過畫面方便的在線調(diào)節(jié)和設(shè)定一些參數(shù)。如風(fēng)電中風(fēng)速顯示,葉輪的轉(zhuǎn)角調(diào)節(jié)等。
(5)先進(jìn)的報(bào)警系統(tǒng)。

眾多的自動(dòng)化控制設(shè)備,如微機(jī)調(diào)速器以及微機(jī)測(cè)量儀表等它們采用小體積的Flash或ROM,處理器性能相對(duì)較弱,它們適合用嵌入式GUI來完成人機(jī)交互的操作。嵌入式Linux系統(tǒng)的有代表性的GUI系統(tǒng)主要有MiniGUI、Microwindows、TinyX以及Qt/Embedded。很多工控軟件是使用c++語言編寫的,而且系統(tǒng)本身對(duì)庫的健壯性,穩(wěn)定性要求比較高,用qte能設(shè)計(jì)出優(yōu)秀的圖形界面,并且能和其它C++程序互相調(diào)用。

2 開發(fā)過程

開發(fā)使用的硬件平臺(tái)為H9200F系統(tǒng)主板,它是基于嵌入式工業(yè)控制系統(tǒng)的開發(fā)套件。系統(tǒng)的核心是32位ARM920T核的高速ARM處理器AT91RM9200,移植了Uboot,設(shè)備的驅(qū)動(dòng)程序包括觸摸屏驅(qū)動(dòng)和unux-2.4.27的內(nèi)核,交叉編譯工具為cross-2.95.3。

2.1 建立交叉編譯環(huán)境

嵌入式系統(tǒng)應(yīng)用軟件的開發(fā)屬于跨平臺(tái)開發(fā),因?yàn)榍度胧皆O(shè)備所用的CPU和Pc機(jī)上的CPU有著不同的架構(gòu),需要一個(gè)交義開發(fā)環(huán)境在PC機(jī)上編譯出適用于嵌入式設(shè)備CPU架構(gòu)的軟件。用來開發(fā)的計(jì)算機(jī)一般稱為宿主機(jī)(X86),它運(yùn)行Linux程序;嵌入式設(shè)備稱為目標(biāo)機(jī),一般就是目標(biāo)板(arm),所以我們必須配置兩套開發(fā)環(huán)境((for ARM和for X86)。如圖1為完整的嵌入式Qt程序開發(fā)流程。


圖1 嵌入式Qt交叉編譯開發(fā)過程

從網(wǎng)上下載免費(fèi)的Qt/Embedded開發(fā)包,本系統(tǒng)采用qte3.3.4的版本:qt-embedded-free-3.3.4.tar.gz,qt-x11-free-3.3.4.tar.gz。其軟件包中自帶了qmake,可以生成工程文件和Makefile文件。

* 將壓縮包解壓后安裝在主機(jī)上。在qte的安裝過程中,研究了以下幾個(gè)問題:

(1)./configure后的命令指定Qt嵌入式開發(fā)包能否生成虛擬緩沖幀工具qvfb,支持的顯示顏色深度,支持的圖形種類等。如果qte的應(yīng)用是在UNIX/Linux平臺(tái)下開發(fā)的話,那么qvfb就可以在機(jī)器上以一個(gè)獨(dú)立的控制臺(tái)或者虛擬緩沖幀的方式來運(yùn)行,通過指定顯示設(shè)備的寬度,高度和顏色深度,虛擬出來的緩沖幀將和物理的顯示設(shè)備在每個(gè)像素卜保持一致。這樣每次調(diào)試應(yīng)用時(shí)開發(fā)人員就不用總是刷新嵌入式設(shè)備的FLASH存儲(chǔ)空間。從而加速了應(yīng)用的編譯、鏈接和運(yùn)行周期。

(2)安裝完成后為保證每次運(yùn)行程序的路徑都足正確的,需要修改個(gè)人設(shè)定文檔中的~/.bashrc文件或者~/.bash_profile或者系統(tǒng)路徑文件,在文檔中加入幾個(gè)路徑變量,特別是QTEDIR=qte安裝路徑,QTDIR=qte安裝路徑和qte的lib文件路徑的設(shè)定。

(3)運(yùn)行qvfb,若無法找到輸入設(shè)備,如顯示/dev下沒有fb0設(shè)備,則列臨時(shí)文件夾/tmp下刪除相應(yīng)的文件;如果是缺少字庫,則將系統(tǒng)里的字庫拷貝到QTDIR/lib下,最后必須保證環(huán)境變量PATH能搜尋到qvtb命令。

* 第二步是在交義編譯的目錄下重新安裝能編譯目標(biāo)板arm程序的qte。

首先在交叉編澤目錄下重新解壓qt-embedded-free-3.3.4.tar.gz,將X86的QTEDIR/bin文件罩的moc和uic二進(jìn)制文件復(fù)制到交義編譯的目錄下的bin文件夾里。然后配置交叉編譯工具(如qmake),修改.conf文件,指定文件的編譯器為安裝的交叉編譯工具,即QMAKE_CC,QMAKE_CXX,QMAKE_LINK,QMAKE_LINK_SHLIB所用的工具。

精簡Qt就在于make命令,按開發(fā)的實(shí)際需求可以增減Qt庫的大小。qte開發(fā)包有5種編譯范圍的選項(xiàng),使用這些選項(xiàng),可控制Qt生成的庫文件的大小。每個(gè)選項(xiàng)都對(duì)應(yīng)在$QTDIR/src/tools/的.h(標(biāo)頭檔)文件里.Tmlltech把這些標(biāo)頭檔定義為“Feature Definition Files”(特征定義檔)。除廠使用已有的五種定義外,也可以根據(jù)實(shí)際定義Qt的特征,把在sre/tools/中所不需要的項(xiàng)目用QT_NO_記錄下來創(chuàng)造一個(gè)自定義標(biāo)頭檔,但是還要注意項(xiàng)目之間功能的相依性問題。

最后,執(zhí)行strip命令:#strip -R.note -R.comment $QTDIR/lib/lihqte.so*。將交叉編譯好的Qt庫libqte.so*下載到開發(fā)板中的某個(gè)目錄下。

2.2 Qt/Embedded開發(fā)程序過程

Qt/Embedded的開發(fā)有兩種方式,一種是圖形編程方式,一種是傳統(tǒng)的代碼編程方式。不論是使用圖形界面編程還是直接寫代碼。都會(huì)涉及到Qt的元對(duì)象系統(tǒng)。Qt的一個(gè)主要成就就是使用了一個(gè)機(jī)制擴(kuò)展了c++并且可以創(chuàng)建獨(dú)立的軟件組件。這種機(jī)制被稱為元對(duì)象系統(tǒng),它有兩個(gè)關(guān)鍵技術(shù):信號(hào)和槽,以及內(nèi)省(introspection)。內(nèi)省功能是實(shí)現(xiàn)信號(hào)和槽的基礎(chǔ),它允許程序員在運(yùn)行時(shí)獲得有關(guān)QObject子類的“元信息”,包含對(duì)象的類名以及它所支持的信號(hào)和槽的列表。但是標(biāo)準(zhǔn)的c++沒有對(duì)Qt元對(duì)象系統(tǒng)提供支持。Qt通過提供一個(gè)獨(dú)立的工具moc來解析Q_OBJECT類定義。moc使用純c++來實(shí)現(xiàn)它所有功能,所以Qt的元對(duì)象系統(tǒng)可以在任意C++編譯器上工作。


圖2 Qt/Embedded編程過程

* 利用Qt Designer開發(fā)

這是一種所見即所得的方式。啟動(dòng)Qt圖形編輯器,編輯GUI界,保存后得到.ui文件。在Qt Designer的代碼編輯器里輸入的代碼保存為file.ui.h文件(一個(gè)C++源文件)。雙擊窗體啟動(dòng)Qt Designer的代碼編輯器,可以添加所制窗口的一些額外功能。比如添加新的槽函數(shù).Qt Designer會(huì)自動(dòng)監(jiān)測(cè)到在代碼中已經(jīng)創(chuàng)建了一個(gè)新槽,并且Uic(User Interface Compiler)會(huì)在窗體的類定義中自動(dòng)生成正確的函數(shù)聲明。在Qt中,uic是從XML文件生成代碼的用戶編輯器,用來將fiie.ui文件生成file.h和file.cpp文件。

在風(fēng)電控制系統(tǒng)中為了設(shè)定用戶級(jí)別,對(duì)信息進(jìn)行安全管理和根據(jù)權(quán)限而限制操作范圍,一般需要有用戶登錄管理,如:


圖3 用戶管理界面

兩個(gè)界面是用Qt Designer開發(fā)的,它們進(jìn)行切換的功能就可以在代碼編輯器中蓖寫accept ()函數(shù)實(shí)現(xiàn),即:Login1的對(duì)象->hide0;Login2的對(duì)象->show0,

* 編寫程序開發(fā)

這是一般程序員開發(fā)程序時(shí)所用的方式。在控制界面中,需要使用很多圖元和圖標(biāo),系統(tǒng)應(yīng)該有圖庫集和能調(diào)入圖形的擴(kuò)展接口。或者是有自己建立的基本圖元。Qt中有很多為應(yīng)用程序提供圖片的方法。常用的有:

(1)在運(yùn)行時(shí)候把圖片保存到文件中并且載人它們;
(2)在源文件中包含XMP文件(因?yàn)閄MP文件也是有效的C++文件)
(3)使用Qt的圖片集機(jī)制。

圖片集方法比在運(yùn)行的時(shí)候載入文件更加方便和迅速,并且它可以和所有支持的文件格式一起工作。這些圖片被存放在源代碼樹中名為images的子目錄下。

程序中繼承QMainWindow()類編寫桌面,采用Qt的布局管理器QGridLayout().QVBoxLayout()和QHBoxLayout(),在桌面上雙擊第三個(gè)圖標(biāo)Item 3打開表格處理程序?yàn)椋?br />

圖4 桌面系統(tǒng)

void desktop::iconView()
{ QIconView *qiconview=new QIconView(this);//定義按鈕類對(duì)象
⋯//對(duì)象的屬性設(shè)定
QIconViewItem *itemX:new QIconViewItem(qiconview, QString("Item X")); //定義各個(gè)按鈕
⋯//按鈕屬性(setRenameEnabled(),setPixmap()等)
QObject::connect(qiconview,SIGNAL(doubleClicked(QIconViewItem *)),this,SLOT(itemClicked(QIconViewItem *)));//按鈕信號(hào)與槽的設(shè)定
⋯//鼠標(biāo)移動(dòng)按鈕的監(jiān)聽}
void desktop::itemClicked(QIconViewItem *item)//按鈕按下的槽函數(shù)
{int id=item->index();
switch(id){
case 0-2:{...//其他應(yīng)用程序}break;
case 3:{表格程序的對(duì)象base;
base->show0;
base的屬性設(shè)定;}break;⋯}

2.3 將程序發(fā)布到目標(biāo)板上

將開發(fā)好的Qt/Embedded程序用交叉編譯工具重新編譯成可執(zhí)行文件,生成二進(jìn)制目標(biāo)可執(zhí)行代碼,再將嵌入式目標(biāo)系統(tǒng)掛載到Linux宿主機(jī)的共享分區(qū),讓qte程序直接運(yùn)行在嵌入式目標(biāo)系統(tǒng),并進(jìn)行調(diào)試。調(diào)試成功以后,就可以把程序同化到系統(tǒng)的FLASH存儲(chǔ)器中。如果需要程序開機(jī)自動(dòng)運(yùn)行,可以編輯啟動(dòng)時(shí)的執(zhí)行文件/usr/etc/rc.local,將啟動(dòng)運(yùn)行的程序路徑及文件名添加到這里,就可以實(shí)現(xiàn)系統(tǒng)啟動(dòng)時(shí)的程序自動(dòng)運(yùn)行。

3 結(jié)束語

桌面系統(tǒng)實(shí)現(xiàn)了圖像數(shù)據(jù)的載入,文字編輯,表格處理和屏幕鍵盤等基礎(chǔ)功能,為開發(fā)風(fēng)力發(fā)電組態(tài)軟件提供了一個(gè)很好的平臺(tái)。本文的創(chuàng)新點(diǎn)在于:1.以設(shè)計(jì)風(fēng)力發(fā)電控制臺(tái)人機(jī)交互界面為前提,以用戶需求結(jié)合qte特點(diǎn)來開發(fā)嵌入式GUI。2.對(duì)qte安裝和編程上的技術(shù)問題做了詳細(xì)分析,提出精簡qte的方法。


作者:趙瑩,徐大平,呂躍剛      來源:《微計(jì)算機(jī)信息》(嵌入式與SOC)2009年第4-2期
本文地址:http://www.qingdxww.cn/thread-10754-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • 我們是Microchip
  • 深度體驗(yàn)Microchip自動(dòng)輔助駕駛應(yīng)用方案——2025巡展開啟報(bào)名!
  • 想要避免發(fā)生災(zāi)難,就用MPLAB SiC電源仿真器!
  • Cortex-M4外設(shè) —— TC&TCC結(jié)合事件系統(tǒng)&DMA優(yōu)化任務(wù)培訓(xùn)教程
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品视频免费观看 | 日本不卡二卡三卡四卡无卡免费 | 91热在线| 天降奇兵国语高清在线观看 | 最新精品国偷自产在线91 | 欧美黑人性视频 | h版欧美一区二区三区四区 h版欧美大片免费观看 | 又粗又硬女人免费视频 | 亚洲一区二区视频在线观看 | 蜜臀久久99精品久久久久久 | 国精产品一区 | 午夜精品福利在线 | 久久精品免费i 国产 | 高清一级毛片免免费看 | 欧美在线视频导航 | 天天艹天天艹 | 精品一区二区国语对白 | 国产精品黄网站免费进入 | 99精品视频在线成人精彩视频 | 亚洲欧洲精品成人久久曰 | 欧美成人免费午夜影视 | 亚洲人成综合网站在线 | 日韩免费一区二区 | 日本一区二区三区精品 | 青青青青久在线观看视频 | 欧美日韩一 | 噜噜噜在线 | 日本最新新片在线观看免费 | h在线看免费视频网站男男 h在线看 | 黑人与欧洲性大战 | 毛片免费永久不卡视频观看 | 青青在线国产 | 在线观看国产精品日本不卡网 | 国产精品高清全国免费观看 | 国产精品国偷自产在线 | 久久夜夜视频 | 天天操天天干天天操 | 国内久久久久高清影视 | 中文精品久久久久国产网址 | 日韩精品一区二区三区不卡 | 蜜桃综合|