www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 電源 > 數字電源
[導讀]摘 要: 隨著嵌入式系統(tǒng)的發(fā)展,在Linux 下使用Qt 開發(fā)嵌入式應用程序是嵌入式圖形用戶界面( GUI) 系統(tǒng)應用研究的重點。通過一個通訊簿程序的設計,給出了基于Qt 的嵌入式L

摘 要: 隨著嵌入式系統(tǒng)的發(fā)展,在Linux 下使用Qt 開發(fā)嵌入式應用程序是嵌入式圖形用戶界面( GUI) 系統(tǒng)應用研究的重點。通過一個通訊簿程序的設計,給出了基于Qt 的嵌入式Linux 程序開發(fā)的關鍵技術,包括QtDesigner、信號與槽機制的使用、程序主要功能代碼的實現以及程序開發(fā)的整體過程。

Linux 操作系統(tǒng)具有開放的源碼、高效穩(wěn)定的內核、良好的開發(fā)環(huán)境以及支持多種硬件平臺的特點,且具有可配置性和模塊化的特點; Qt 是一個面向對象的支持多操作系統(tǒng)平臺的應用程序開發(fā)框架,它采用了一種獨有的Signal2Slot (信號與槽) 的對象間通信機制,以代替?zhèn)鹘y(tǒng)的不安全的回調技術。Qt 的自由版開放了源代碼,因此開發(fā)人員在Linux 下使用Qt 進行嵌入式系統(tǒng)開發(fā)是非常理想的選擇。

從目前國內嵌入式系統(tǒng)( Embedded system) 的開發(fā)情況來看,在Linux 下使用Qt 來開發(fā)嵌入式GUI 程序還不是很多,且相關中文資料也較少。

究其原因,主要是由于Qt 歷史較短,其比較穩(wěn)定的版本是在2002 年之后才逐漸被國內工程人員使用,雖然功能強大,但中文文檔匱乏,延緩了在國內的普及。另外一個主要原因是雖然嵌入式技術隨著半導體技術的進步得到長足的發(fā)展,但較為成熟的嵌入式操作系統(tǒng)及支持嵌入式操作系統(tǒng)的平臺是在近幾年才逐步發(fā)展起來,而Qt 需要在操作系統(tǒng)的支持下才可使用。文獻[ 2 ]~[ 4 ]從不同的方面闡述了Linux 下使用Qt 進行嵌入式開發(fā)的一般過程和特點,但沒有對其關鍵技術及程序開發(fā)實現過程進行具體的說明。為此,筆者通過通訊簿程序的設計,從工程文件的建立到可執(zhí)行程序的生成,詳細給出了其中關鍵技術的實現及關鍵代碼的運用。

1 基于Qt 的嵌入式Linux 通訊簿程序設計

在嵌入式開發(fā)之前,首先要搭建好開發(fā)環(huán)境。 正確設置編譯器、Qt 及Qt E 環(huán)境變量對后續(xù)程序編譯過程至關重要。本設計使用的嵌入式處理器為三星公司的基于ARM 920 T 的S3C2410X芯片,最高工作頻率203 MHz. 操作系統(tǒng)為REDHA T L INUX 910 , 內核版本214118. 串口通信程序為MINICOM , 使用Tro11 Tech 公司發(fā)布的自由版: qt2x1122. 3. 2 ,qt2embedded22. 3. 10 , 使用arm2linux2gcc231411 編譯器。

通訊簿程序主要記錄聯系人的姓名、電話、郵件地址及地址信息,具有新建、編輯、刪除、查詢聯系人信息等功能。

1.1 生成工程文件

通常一個應用程序對應一個工程。工程文件的作用是管理當前項目中所有的文件及其關系,可以使用progen 工具來生成程序的工程文件:

progen -t app1 t -o AddressBook. pro

生成的AddressBook1pro 工程文件并不完整,還需后續(xù)添加工程所包含的頭文件、源文件等信息。

1.2 使用QtDe signer 設計程序窗體

QtDesigner 是Qt 的一個可視化的程序界面設計工具,使用它來設計程序的界面非常方便,從而開發(fā)者可以專注于程序功能的實現。通訊簿主窗口包括聯系人信息查詢、新建、編輯及刪除功能部件。查詢功能使用2 個TextLable , 1 個LineEdit ,1 個ComboBox 及1 個PushButton 部件,其中ComboBox 可以設置NAME , Telep hone , Email ,Address 4 種查詢方式。新建聯系人可以單獨彈出新建窗口來實現,使用4 個TextLable 及4 個LineEdit 部件。編輯和刪除聯系人由1 個ListView 和2 個PushBut ton 部件構成,其中ListView 包括1 個List 和4 個Column ( 包括Name , Telep hone ,Email ,Address)。

在Qt 中,"事件驅動"通過Signal2Slot (信號和槽) 機制實現。Signal 主要是各可視化組件產生的事件,這些事件通常由Qt 控件預定義,如按鈕單擊事件clicked 等。Slot 是對某個事件的處理方法,它也屬于類的成員函數,其編寫和普通成員函數類似。當需要處理某組件的Signal 事件并要求把定義好的Slot 作為響應事件的方法時,只要在實現文件中使用connect 函數把Signal 和指定的Slot 連接起來即可。當對象改變其狀態(tài)時,信號被發(fā)送,對象不關心有沒有其它對象接收到這信號,可以將信號和槽通過connect 函數任意相連。信號與槽的連接原理如圖1 所示。

 

 

圖1 信號與槽連接抽象圖

以下是通訊簿程序主窗口5 個按鈕的Signal2Slot 的connect 代碼:

connect (add ,SIGNAL (clicked () ) ,this , SLOT(addSlot) ) ) ;

connect (edit , SIGNAL (clicked () ) ,this , SLOT(editSlot) ) ) ;

connect (del , SIGNAL (clicked () ) ,this , SLOT(delSlot) ) ) ;

connect (exit , SIGNAL (clicked () ) ,this , SLOT(exitSlot) ) ) ;

connect ( search , SIGNAL (clicked ( ) ) , this , SLOT ( searchSlot) ) ) ;

窗口(如圖2 及圖3 所示) 設計完成后,將通訊簿主窗口及新建聯系人窗口分別保存為AddressBook. ui 和New. ui 界面文件。

 

 

圖2 通訊簿主窗口

 

 

圖3 新建聯系人窗口

1.3 生成窗體類的頭文件和源文件

使用Qt 提供的uic 工具通過界面文件AddressBook.ui 來生成AddressBook. h 文件和AddressBook.cpp 文件(同樣,使用uic 工具通過界面文件New.ui 來生成New.h 和New.cpp 文件) :

uic -o AddressBook. h AddressBook. ui

uic -o AddressBook. cpp -impl AddressBook. h

AddressBook. ui

通訊簿要實現新建、編輯、刪除、查詢聯系人信息等功能還需要在AddressBook1cpp 文件里添加相應的功能實現代碼。

為實現新建聯系人功能,在文件AddressBook1cpp 中定義一個AddressBook 類的成員函數:

void AddressBook∶∶addSlot ()[!--empirenews.page--]

新建聯系人信息包括姓名、電話、郵件及地址,在函數中定義一個字符串類型函數:

st ring lSQL St ring

并給lSQL St ring 賦值:

lSQLSt ring = " Create Table " + Const ∶∶DBTBL _ADDRESS + " (" +

Const∶∶DBCOL _NAME + " ," + Const ∶∶DBCOL _TEL EPHONE + " ," +

Const∶∶DBCOL _ EMAIL + " ," + Const ∶∶DBCOL _ADDRESS + " ," + " ) " ;

編輯聯系人信息時,定義成員函數:

void AddressBook∶∶edit Slot ()

分別在姓名、電話、郵件及地址欄中輸入信息:

ent ry - > setName (lRows[0 ]) ; / / 在第1 行0 列輸入name

ent ry - > set TelePhone (lRows[ 1 ]) ;/ / 在第1 行1 列輸入telephone

ent ry - > set Email (lRows[2 ]) ; / / 在第1 行2 列輸入email

ent ry - > setAddress (lRows[3 ]) ; / / 在第1 行3 列輸入address

刪除聯系人信息時,定義成員函數:

void AddressBook∶∶delSlot ()

選擇要刪除的聯系人,從數據庫刪除該聯系人信息:

st ring lSQLSt ring ;

lSQLSt ring = " Delete f rom " + Const ∶∶DBTBL _ADDRESS + " where " +

Const∶∶DBCOL_NAME + " = " + aName ;

查詢聯系人時,定義成員函數:

void AddressBook∶∶searchSlot ()

在查詢框中輸入聯系人的姓名、電話、郵件及地址信息之一,選擇相應的查詢方式:

st ring lSQLSt ring = " Select " + Const ∶∶DBCOL _NAME + " ,"

+ Const ∶∶DBCOL _ TEL EPHONE + " ," + Const ∶∶DBCOL_EMAIL + " ,"

+ Const∶∶DBCOL _ADDRESS + " f rom " + Const ∶∶DBTBL_ADDRESS

+ " where " + Const ∶∶DBCOL _ NAME + " = " +aName ;

受篇幅限制,AddressBook1 h , New1 h ,New1cpp ,SQL1cpp ,SQL1 h 代碼不再給出。

1.4 編寫主函數

每一個Qt 應用程序都包含一個主函數main1cpp . 主函數是應用程序執(zhí)行的入口點。以下是AddressBook 的主函數文件main1cpp 的關鍵代碼:

int main (int argc , char 3 3argv)

{

QApplication AddressBook ( argc , argv ) ;/ / 創(chuàng)建Qapplication 對象,管理整個程序資源

AddressBook 3 AddressBook = new AddressBook(log) ;/ / 創(chuàng)建程序主窗口

app . setMainWidget ( mainWin ) ;/ / 設置mainWin 部件為程序的主部件

mainWin - > show() ;/ / 使mainWin 部件可視

return AddressBook. exec () ;/ / 把程序控制權交還給Qt

}

1.5 編輯工程文件

代碼編寫完成后,需要把文件AddressBook1cpp , AddressBook1 h , New1 h ,New1cpp , SQL1 h 及SQL1cpp 添加到工程文件AddressBook1pro 中:

HEADERS = AddressBook. h New. h SQL . h

SOURCES = AddressBook. cpp New. cpp SQL.cpp main. cpp

1.6 生成可執(zhí)行文件

編譯器是根據Makefile 文件內容來進行編譯的,所以需要生成一個Makefile 文件1Qt 提供的qmake 工具可以從一個工程文件( . pro 文件) 中產生Makefile 文件,然后再使用make 命令對整個工程進行編譯鏈接:

生成的二進制文件AddressBook 就是可以直接運行的可執(zhí)行文件。程序運行結果如下面圖示,圖4是按照姓名(Name) 查詢聯系人Mat rix 的信息,圖5是編輯新聯系人Mat rix 的信息。

 

 

圖4 按姓名查詢聯系人

 

 

圖5 編輯新聯系人信息

程序編譯成功后可先在Virt ual f ramebuffer(虛擬緩沖幀) 中運行,確證無誤后再交叉編譯在開發(fā)板上運行。交叉編譯時要確保$Q TEDIR/ lib 下有需要在開發(fā)板上運行的庫文件。

2 結論

所設計的通訊簿程序具有對聯系人的姓名、電話、郵件地址及通訊地址等信息的記錄、新建、編輯、刪除、查詢等功能,且可按照姓名、電話、郵件地址及通訊地址4 種查詢方式來檢索聯系人。程序的設計很好地體現了Qt 的信號與槽機制,并且使用QtDesigner 可方便地進行可視化程序界面設計,通過使用Qt 中豐富的類函數,利用其面向對象和模塊化的特征,避免了繁瑣的X 編程。通訊簿程序的設計對在Linux 下使用Qt 開發(fā)其他嵌入式GUI 程序具有一定的指導意義。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉