當(dāng)前位置:首頁 > 消費(fèi)電子 > 消費(fèi)電子
[導(dǎo)讀]系統(tǒng)使用Qt Creator作為開發(fā)工具,綜合嵌入式數(shù)據(jù)庫SQLite、開源多媒體播放器MPlayer技術(shù),設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)具有良好人機(jī)交互界面的嵌入式機(jī)車車輛車載播放系統(tǒng),可對(duì)主流音視頻文件進(jìn)行播放,且系統(tǒng)易于移植和擴(kuò)展。

1.Qt簡介

Qt是Trolltech公司的標(biāo)志性產(chǎn)品(現(xiàn)Trolltech公司已被手機(jī)巨頭NOKIA公司收購),是一個(gè)跨平臺(tái)的C++圖形用戶界面(GUI)工具包。它既可以開發(fā)GUI程式,也可用于開發(fā)非GUI程式,比如控制臺(tái)工具和服務(wù)器。Qt是面向?qū)ο笳Z言,易于擴(kuò)展,并且允許組件編程。Qt應(yīng)用程序接口與工具兼容于所有支持平臺(tái),讓開發(fā)員們掌握一個(gè)應(yīng)用程序接口便可執(zhí)行與平臺(tái)非相關(guān)的應(yīng)用開發(fā)與配置。

Qt支持下述平臺(tái):

1)MS/Windows-95、98、NT 4.0、ME、2000、XP、Vista和Win7;

2)Unix/X11-Linux、Sun Solaris、HPUX、CompaqTru64 UNIX、IBM AIX、SGI IRIX、FreeBSD、BSD/OS和其它很多X11平臺(tái);3)Macintosh-Mac OS X;

4)Embedded-有幀緩沖(framebuffer)支持的嵌入式Linux平臺(tái),Windows CE.

Qt對(duì)不同平臺(tái)的專門API進(jìn)行了專門的封裝(文件處理、網(wǎng)絡(luò)等)。

Qt被Nokia收購后推出了一款新的輕量級(jí)集成開發(fā)環(huán)境(IDE)Qt Creator.QtCreator可帶來兩大關(guān)鍵益處:提供首個(gè)專為支持跨平臺(tái)開發(fā)而設(shè)計(jì)的集成開發(fā)環(huán)境(IDE),并確保首次接觸Qt框架的開發(fā)人員能迅速上手和操作。

Qt Creator包含了一套用于創(chuàng)建和測試基于Qt應(yīng)用程序的高效工具,包括:一個(gè)高級(jí)的C++代碼編輯器、上下文感知幫助系統(tǒng)、可視化調(diào)試器、源代碼管理、項(xiàng)目和構(gòu)建管理工具。

Qt/Embedded(簡稱QT/E)是一個(gè)專門為嵌入式系統(tǒng)設(shè)計(jì)圖形用戶界面的工具包,是NOKIA公司的圖形化界面開發(fā)工具Qt的嵌入式版本,它通過QtAPI與LinuxI/O以及Framebuffer直接交互,擁有較高的運(yùn)行效率,而且整體采用面向?qū)ο缶幊蹋瑩碛辛己玫伢w系架構(gòu)和編程模式。

Qt/embedded和Qt一樣,在4.5版本之后提供了三種不同的授權(quán)協(xié)議GPL,LGPL和Commercial.開發(fā)者使用QT/E開發(fā)的應(yīng)用程序要移植到不同平臺(tái)時(shí),只需要重新編譯代碼,而不需要對(duì)代碼進(jìn)行修改。并可以隨意設(shè)置程序界面的外觀、方便地為程序連接數(shù)據(jù)庫、使程序本地化、將程序與Java集成等。

2.使用Qt Creator設(shè)計(jì)界面

在Qt Creator中完成車載播放器工程的創(chuàng)建后首先是設(shè)計(jì)界面。界面可用代碼生成,也可用Qt Designer輔助設(shè)計(jì)。使用Qt Designer設(shè)計(jì)界面只需將界面中所需的窗口部件拖入ui界面文件中,然后設(shè)置屬性修改其顯示效果,最后使用布局控件設(shè)置布局效果。通過拖放窗口部件完成的界面在布局上不夠精確,因此本系統(tǒng)采用純代碼來完成界面開發(fā)。

本系統(tǒng)的界面主要包括的窗口部件有Table View、Push Button等。在界面的布局上,系統(tǒng)采用了手工布局方式。

手工布局方式通過基類Q W i d g e t提供的setGeometry()函數(shù)來設(shè)置子窗口部件的位置和大小,當(dāng)窗口大小改變的時(shí)候,重新計(jì)算窗口的大小或者變化比例,然后重載QWidget::resizeEvent(QResizeEvent*)函數(shù),能夠使得子窗口部件的大小和位置作出適應(yīng)性的改變。

如圖1所示為本系統(tǒng)的主界面:

 

 

界面設(shè)計(jì)的主要開發(fā)過程如下:

1)使基礎(chǔ)窗口QWidget繼承于主窗口QMainWindow,窗體構(gòu)造函數(shù)負(fù)責(zé)模板的初始化;

2)創(chuàng)建MyButton類構(gòu)造窗體按鈕部件,并對(duì)窗口部件中使用的對(duì)象以及函數(shù)進(jìn)行聲明,包括圖標(biāo)、名稱、字體、文本、坐標(biāo)、畫筆、按鈕是否有效、重繪時(shí)間、鼠標(biāo)按下事件等;

3)添加按鈕的信號(hào)與槽。系統(tǒng)界面中每個(gè)功能按鈕都對(duì)應(yīng)一個(gè)信號(hào)和槽,信號(hào)和槽式Qt編程的核心技術(shù),通過信號(hào)可以將界面上的空間所發(fā)生的事件進(jìn)行發(fā)射,槽函數(shù)負(fù)責(zé)接受相應(yīng)信號(hào)并作出響應(yīng)處理。如播放暫停按鈕,與其對(duì)應(yīng)的信號(hào)是單擊,它的單擊信號(hào)連接一個(gè)槽處理函數(shù),在這個(gè)函數(shù)中通過QProcess來向slave模式下的MPlayer發(fā)送命令,達(dá)到控制播放的目的。其他的控件在處理方式上都與播放暫停按鈕類似,都有自己得信號(hào)和槽。

3.軟件功能模塊設(shè)計(jì)

機(jī)車車輛車載播放器主要由音頻播放和視頻播放兩大部分組成,這兩部分存在著很多相同和相似的功能,為避免重復(fù)編碼,采用C++面向?qū)ο蟮哪K化設(shè)計(jì)思想,將兩部分中功能相似的部分抽取出來,形成獨(dú)立的功能模塊,提高了軟件的可重用性和系統(tǒng)的運(yùn)行效率。各功能模塊均采用C++類來實(shí)現(xiàn),對(duì)模塊內(nèi)部的數(shù)據(jù)進(jìn)行封轉(zhuǎn),對(duì)外提供接口供外部調(diào)用,一方面提高了系統(tǒng)的數(shù)據(jù)安全性,另一方面也使軟件編碼更加的規(guī)范。

為實(shí)現(xiàn)機(jī)車車輛車載播放系統(tǒng)的功能,創(chuàng)建了窗體文件用于設(shè)置車載播放器的窗體;創(chuàng)建了配置文件用于處理系統(tǒng)配置信息;創(chuàng)建了用于實(shí)現(xiàn)對(duì)數(shù)據(jù)庫操作的源文件;創(chuàng)建了觸摸屏控制文件以及歌曲列表文件。

具體功能模塊設(shè)計(jì)方式如下:

1)搜索歌曲

點(diǎn)擊搜索歌曲按鈕時(shí),跳出一個(gè)對(duì)話框,當(dāng)用戶輸入了歌曲名或名稱中的部分內(nèi)容并確定后,發(fā)送消息到服務(wù)器端,服務(wù)器端對(duì)表song進(jìn)行模糊查詢,得到符合的歌曲列表,將這些信息返回給客戶端,在客戶端形成一個(gè)QwidgetTable控件,用來顯示搜索的結(jié)果。當(dāng)用戶點(diǎn)擊其中的一行時(shí),將相應(yīng)行的歌曲信息賦值給current并播放。

2)上一首

上一首按鈕連接了prev()函數(shù),它的功能是通過prev()函數(shù)來實(shí)現(xiàn)的。在此函數(shù)中,實(shí)現(xiàn)讀取usersong.xml文件中位置為songpos-1的歌曲信息,賦值給current,然后進(jìn)行播放,實(shí)現(xiàn)上一首功能。

3)播放

當(dāng)點(diǎn)擊播放按鈕時(shí),隱藏播放按鈕,顯示暫停按鈕,并讀取c u r r e n t中的信息,通過Phonon的函數(shù)play()實(shí)現(xiàn)播放。

4)暫停

當(dāng)點(diǎn)擊暫停按鈕時(shí),隱藏暫停按鈕,顯示播放按鈕,調(diào)用Phonon中的pause()函數(shù),將播放暫停。

5)下一首

當(dāng)點(diǎn)擊下一首按鈕時(shí),調(diào)用nextFile()函數(shù),并且當(dāng)歌曲播放完之后會(huì)產(chǎn)生一個(gè)aboutToFinish()信號(hào),這個(gè)時(shí)候也會(huì)調(diào)用nextFile()函數(shù)。在此函數(shù)中調(diào)用readinformation()函數(shù),得到下一首的信息,并播放。[!--empirenews.page--]

6)打開本地文件

Qt和QT/Embedded提供了一套標(biāo)準(zhǔn)的通用對(duì)話框?yàn)榉奖愠绦騿T進(jìn)行某些特定功能對(duì)話框的編程,其中包括了文件對(duì)話框QFileDialog.通過彈出QFileDialog對(duì)話框,我們既可以選擇一個(gè)或者多個(gè)文件以及目錄,也可以輸入文件名或者路徑。它可以限制用戶只能選擇已經(jīng)存在的文件,也可以允許用戶輸入一個(gè)新的文件名;此外,使用過濾器,則只能選擇符合特殊標(biāo)準(zhǔn)的文件名。點(diǎn)擊打開按鈕會(huì)彈出獲取本地文件路徑和名稱的對(duì)話框,當(dāng)用戶選中后,因?yàn)樗潜镜匚募?,?huì)直接把地址賦給播放的對(duì)象,當(dāng)播放完后繼續(xù)播放usersong.xml中的下一首。

7)靜音

音量的控制是通過Phonon::VolumSlid e r控件實(shí)現(xiàn)的,通過執(zhí)行語句:u i ->volumeSlider->setAudioOutput(audiooutput)將音量的控件連接到了音頻輸出的設(shè)備上,通過語句Phonon::createPath(mediaobject,audiooutput)音頻輸出的設(shè)備和播放的對(duì)象mediaobject連接,因此實(shí)現(xiàn)靜音功能。

8)顯示歌曲名稱

void Player::setLabel(QString

track)

{

QString filename = mediaObject-

>currentSource()。fileName();

filename = filename.right

( f i l e n a m e . l e n g t h ( ) - f i l e n a m e .

lastIndexOf(‘/’)-1);

this->setWindowTitle(“Player

~”+filename);

}

9)關(guān)閉窗口

雙擊窗體空白處可關(guān)閉播放器。需重定義鼠標(biāo)雙擊事件調(diào)用close()函數(shù)加以實(shí)現(xiàn)。

10)數(shù)據(jù)庫操作

程序中使用SQLite數(shù)據(jù)庫對(duì)歌曲及用戶信息進(jìn)行管理。

SQLite是D.Richard Hipp用C語言編寫的開源嵌入式數(shù)據(jù)庫引擎。它是完全獨(dú)立的,不具有外部依賴性,非常健壯。SQLite第一個(gè)Alpha版本誕生于2000年5月,至今已經(jīng)有11個(gè)年頭,最新版本SQLite3也已經(jīng)發(fā)布。SQLite是完全免費(fèi)開源的軟件。

SQLite能夠運(yùn)行在Windows/Linux/Unix等各種操作系統(tǒng)。SQLite源代碼大約3萬行,250KB大小,占用資源非常少。相比Mysql、PostgreSQL這兩款著名的開源數(shù)據(jù)庫,SQLite占用資源更少,處理速度更快,非常適合用于嵌入式系統(tǒng)開發(fā)中。

在系統(tǒng)中采用SQLite數(shù)據(jù)庫對(duì)歌曲信息結(jié)構(gòu)進(jìn)行組織、存儲(chǔ)以及管理。通過使用SQLite建立歌曲信息數(shù)據(jù)庫表,然后就可以在程序通過相關(guān)接口函數(shù)對(duì)歌曲信息進(jìn)行操作,如插入、刪除、更新、查詢等。采用SQLite數(shù)據(jù)庫進(jìn)行歌曲信息的管理大大降低了編程的復(fù)雜性。

在具體的系統(tǒng)數(shù)據(jù)庫模塊中,采用了Qt連接SQLite數(shù)據(jù)庫的方式來操作數(shù)據(jù)庫。Qt框架中QtSql模塊提供了一個(gè)平臺(tái)無關(guān)且數(shù)據(jù)庫無關(guān)的訪問S Q L數(shù)據(jù)庫的接口。Qt中的每個(gè)數(shù)據(jù)庫連接用一個(gè)QSqlDatabase對(duì)象來表示,同時(shí)Qt也使用不同driver來和各種不同數(shù)據(jù)庫的API進(jìn)行通訊。對(duì)于SQLite數(shù)據(jù)庫Qt提供了很好的支持和封裝,通過Qt的相關(guān)類可以很容易的進(jìn)行數(shù)據(jù)庫操作。

要實(shí)現(xiàn)對(duì)S Q L i t e 數(shù)據(jù)庫進(jìn)行操作首先需要?jiǎng)?chuàng)建一個(gè)關(guān)于數(shù)據(jù)庫的創(chuàng)建和鏈接的頭文件,然后在頭文件中通過創(chuàng)建QSqlDatabase數(shù)據(jù)庫連接對(duì)象來調(diào)用addDatabase()并設(shè)置相關(guān)函數(shù)的屬性,然后在工程文件的最后添加關(guān)于使用數(shù)據(jù)庫的聲明“QT+=sql”.

4.MPlayer播放器的控制

MPlayer是一款開源多媒體播放器,以GNU通用公共許可證發(fā)布。此款軟件可在各主流作業(yè)系統(tǒng)使用,例如Linux和其他類Unix系統(tǒng)、微軟的視窗系統(tǒng)及蘋果電腦的Mac OS X系統(tǒng)。MPlayer能夠播放大多數(shù)MPEG、VOB、AVI、OGG、VIVO、ASF/WMV、Qt/MOV、FLV、RM等媒體文件。相對(duì)其它播放器來說,MPlayer還具有資源占用非常少,不需要任何系統(tǒng)解碼器就可以播放各種媒體格式,在低配置的機(jī)器上使用等突出優(yōu)勢。所以對(duì)于運(yùn)算速度相對(duì)較弱的嵌入式系統(tǒng)來說,MPlayer是一個(gè)很好的選擇。

在本文的系統(tǒng)設(shè)計(jì)中,選用了MPlayer作為系統(tǒng)的媒體播放器來進(jìn)行媒體文件的播放以及控制。在系統(tǒng)的播放模塊中采用Qt的QProcess(進(jìn)程類)通過start方法調(diào)用slave模式下的MPlayer產(chǎn)生一個(gè)進(jìn)程,然后通過QProcess類的write方法向MPlayer發(fā)送控制命令,實(shí)現(xiàn)控制播放的目的。

5.小結(jié)

本論文詳細(xì)介紹了如何使用Qt Creator完成車載音樂播放系統(tǒng)的界面設(shè)計(jì)及程序代碼的編輯與運(yùn)行。此車載播放系統(tǒng)可實(shí)現(xiàn)的功能如下:

1)具有美觀、易于理解和操作的主界面;

2)可按照多種方式對(duì)數(shù)據(jù)庫中的歌曲進(jìn)行查找;

3)可實(shí)現(xiàn)歌曲的播放、暫停,以及上一首和下一首歌曲的切換;

4)所選歌曲可生成播放列表,列表可以循環(huán)播放,列表信息可修改,在列表中雙擊歌曲名稱可播放該歌曲;

5 ) 可對(duì)設(shè)備中存儲(chǔ)的歌曲進(jìn)行刪除;

6)可播放外接存儲(chǔ)器中的歌曲。

同時(shí),系統(tǒng)可以方便地移植到各種嵌入式設(shè)備中。

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

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉