999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式車載播放系統(tǒng)軟件設(shè)計與實現(xiàn)

2013-07-22 02:52:36李攀楊艷
關(guān)鍵詞:嵌入式按鈕界面

李攀,楊艷

(濟(jì)源職業(yè)技術(shù)學(xué)院,河南濟(jì)源459000)

嵌入式車載播放系統(tǒng)軟件設(shè)計與實現(xiàn)

李攀,楊艷

(濟(jì)源職業(yè)技術(shù)學(xué)院,河南濟(jì)源459000)

系統(tǒng)使用Q t Creator作為開發(fā)工具,綜合嵌入式數(shù)據(jù)庫SQLite、開源多媒體播放器MPlayer技術(shù),設(shè)計并實現(xiàn)了一款嵌入式車載播放系統(tǒng),人機(jī)交互界面友好易操作,支持主流音視頻文件的播放,且系統(tǒng)易于移植和擴(kuò)展.

車載播放系統(tǒng);Qt Creator;SQLite;MPlayer

1 Qt簡介

Qt是Trolltech公司的標(biāo)志性產(chǎn)品(現(xiàn)Trolltech公司已被手機(jī)巨頭NOKIA公司收購),是一個跨平臺的C++圖形用戶界面(GUI)工具包.它既可以開發(fā)GUI程式,也可用于開發(fā)非GUI程式,比如控制臺工具和服務(wù)器.Qt是面向?qū)ο笳Z言,易于擴(kuò)展,并且允許組件編程.Qt應(yīng)用程序接口與工具兼容于所有支持平臺,例如Linux和其他類Unix系統(tǒng)、微軟的視窗系統(tǒng)及蘋果電腦的Mac OS X系統(tǒng),并對不同平臺的專門API進(jìn)行了專門的封裝(文件處理、網(wǎng)絡(luò)等)[1],讓開發(fā)員們掌握一個應(yīng)用程序接口便可執(zhí)行與平臺無關(guān)的應(yīng)用開發(fā)與配置.

Qt被Nokia收購后推出了一款新的輕量級集成開發(fā)環(huán)境(IDE)Qt Creator.Qt Creator是專為支持跨平臺開發(fā)而設(shè)計的集成開發(fā)環(huán)境,包含一套用于創(chuàng)建和測試Qt應(yīng)用程序的高效工具:高級C++代碼編輯器、Qt Designer可視化調(diào)試器、源代碼管理、項目和構(gòu)建管理工具等.開發(fā)人員可使用代碼編輯器直接進(jìn)行高效的代碼開發(fā),也可使用Qt Designer進(jìn)行可視化的設(shè)計,非常易于上手和操作.

Qt/Embedded(簡稱QT/E)是一個專門為嵌入式系統(tǒng)設(shè)計圖形用戶界面的工具包,是NOKIA公司的圖形化界面開發(fā)工具Qt的嵌入式版本,它通過QtAPI與Linux I/O以及Framebuffer直接交互,擁有較高的運行效率.Qt/Embedded和Qt一樣,在4.5版本之后提供了三種不同的授權(quán)協(xié)議GPL,LGPL和Commercial.開發(fā)者使用QT/E開發(fā)的應(yīng)用程序要移植到不同平臺時,只需要重新編譯代碼,而不需要對代碼進(jìn)行修改.并可以隨意設(shè)置程序界面的外觀、方便地為程序連接數(shù)據(jù)庫、使程序本地化、將程序與Java集成等.

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

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

本系統(tǒng)的界面主要包括的窗口部件有Table View、Push Button等.在界面的布局上,系統(tǒng)采用了手工布局方式.手工布局方式通過基類QWidget提供的setGeometry()函數(shù)來設(shè)置子窗口部件的位置和大小,當(dāng)窗口大小改變的時候,重新計算窗口的大小或者變化比例,然后重載QWidget::resizeEvent (QResizeEvent*)函數(shù),能夠使得子窗口部件的大小和位置作出適應(yīng)性的改變.

圖1 .1系統(tǒng)主界面

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

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

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

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

③添加按鈕的信號與槽.

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

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

車載播放系統(tǒng)的主要功能是實現(xiàn)音頻和視頻文件的播放,此外,本文所設(shè)計的車載播放系統(tǒng)可按照多種方式對數(shù)據(jù)庫中的歌曲進(jìn)行查找;可實現(xiàn)歌曲的播放暫停,以及上一首和下一首歌曲的切換;所選歌曲可生成播放列表,列表可以循環(huán)播放,列表信息可修改,在列表中雙擊歌曲名稱可播放該歌曲;可對設(shè)備中存儲的歌曲進(jìn)行刪除;可播放外接存儲器中的歌曲.

具體功能模塊設(shè)計方式如下[2]:

3.1 搜索歌曲

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

3.2 上一首

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

3.3 播放

當(dāng)點擊播放按鈕時,隱藏播放按鈕,顯示暫停按鈕,并讀取current中的信息,通過Phonon的函數(shù)play()實現(xiàn)播放.

3.4 暫停

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

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

3.6 打開本地文件

文件對話框QFileDialog是Qt中用于實現(xiàn)文件打開和保存操作的基本對話框.QFileDialog提供了很多靜態(tài)函數(shù),用于獲取用戶選擇的文件.其中g(shù)etOpenFileName()用于獲取用戶所選文件的文件名.getOpenFileName()中有六個參數(shù),分別用于設(shè)定父組件、對話框的標(biāo)題、默認(rèn)打開的目錄、可選文件類型等.當(dāng)用戶選擇文件后,因為它是本地文件,會直接把所選文件的路徑賦給播放的對象.當(dāng)播放完后繼續(xù)播放usersong.xml中的下一首.

3.7 靜音

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

3.8 顯示歌曲名稱

void Player::setLabel(QString track)

{

內(nèi)部控制主要是指企業(yè)通過制定一系列規(guī)章制度來對自身經(jīng)營管理活動進(jìn)行控制。從實踐情況來看,這種控制性的行為很難得到人們的認(rèn)可,由此使得企業(yè)內(nèi)部控制管理缺乏必要的動力支持。另外,企業(yè)實施內(nèi)部控制也需要一定的成本費用,在開展內(nèi)部控制的過程中會影響企業(yè)經(jīng)濟(jì)效益的獲得。

QString filename=mediaObject->currentSource().fileName();

filename=filename.right(filename.length()-filename.lastIndexOf('/')-1);

this->setWindowTitle("Player~"+filename);

}

3.9 關(guān)閉窗口

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

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

本文所設(shè)計的車載播放系統(tǒng)使用SQLite數(shù)據(jù)庫對歌曲及用戶信息進(jìn)行管理.

SQLite是D.Richard Hipp使用C語言編寫的開源嵌入式數(shù)據(jù)庫引擎.它是完全獨立的,不具有外部依賴性,非常健壯.SQLite大約250KB大小,相比Mysql、PostgreSQL這兩款著名的開源數(shù)據(jù)庫,SQLite占用資源更少,處理速度更快,非常適合用于嵌入式系統(tǒng)開發(fā)中.

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

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

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

4 MPlayer播放器的控制

系統(tǒng)的主要功能是響應(yīng)客戶端發(fā)送來的各種請求,并作出正確處理,包括歌曲選擇、播放控制等.在本文的系統(tǒng)設(shè)計中,選用了MPlayer作為系統(tǒng)的媒體播放器來進(jìn)行媒體文件的播放以及控制.

MPlayer是一款開源多媒體播放器,以GNU通用公共許可證發(fā)布.MPlayer能夠播放MPEG、VOB、AVI、OGG、VIVO、ASF/WMV、Qt/MOV、FLV、RM等大多數(shù)媒體文件,且不需要任何系統(tǒng)解碼器. MPlayer資源占用非常少,并可運行于各種主流操作系統(tǒng),在低配置的機(jī)器上使用有突出優(yōu)勢.所以對于運算速度相對較弱的嵌入式系統(tǒng)來說,MPlayer是一個很好的選擇[4].

MPlayer本身是一個命令行的程序,默認(rèn)情況下MPlayer是從鍵盤上獲得控制信息.但MPlayer也另外提供了一種更為靈活的控制方式——slave模式.在slave模式下,MPlayer會在后臺運行并不再截獲鍵盤事件,它只會從標(biāo)準(zhǔn)輸入讀取以換行符( )分隔開的命令,這樣就為GUI程序提供一個簡單的編程接口,本系統(tǒng)中就是采用MPlayer的slave模式進(jìn)行播放控制的.

具體實現(xiàn)方式是,在系統(tǒng)的播放模塊中,使用Qt的QProcess(進(jìn)程類)通過start方法調(diào)用slave模式下的MPlayer產(chǎn)生一個進(jìn)程,然后通過QProcess類的write方法向MPlayer發(fā)送控制命令,實現(xiàn)控制播放的目的.

5 小結(jié)

本論文詳細(xì)介紹了如何使用Qt Creator完成車載音樂播放系統(tǒng)的界面設(shè)計及軟件功能模塊設(shè)計.此車載播放系統(tǒng)可實現(xiàn)的功能如下:

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

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

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

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

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

⑥可播放外接存儲器中的歌曲.

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

〔1〕JasMin Blanchette.C++GUI Programming With Q t 4[M].北京:電子工業(yè)出版社,2008.

〔2〕楊向文.基于ARM-LINUX的嵌入式媒體播放器的研究與實現(xiàn)[D].大連:大連海事大學(xué),2009.

〔3〕雷小俊,李偉.SQLite在嵌入式Web服務(wù)器中的應(yīng)用[J].信息技術(shù),2006.

〔4〕Crealse Sheng.MPlayer研究報告[Z].2007.

TP311

A

1673-260X(2013)07-0123-03

河南省科學(xué)技術(shù)廳項目資助(豫科鑒委字[2011]第2190號)

猜你喜歡
嵌入式按鈕界面
這些按鈕能隨便按嗎?
當(dāng)你面前有個按鈕
國企黨委前置研究的“四個界面”
搭建基于Qt的嵌入式開發(fā)平臺
基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開發(fā)方法研究
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
人機(jī)交互界面發(fā)展趨勢研究
手機(jī)界面中圖形符號的發(fā)展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
內(nèi)心不能碰的按鈕
Altera加入嵌入式視覺聯(lián)盟
主站蜘蛛池模板: 久青草网站| 四虎国产精品永久一区| 思思99热精品在线| 日本不卡在线视频| 香蕉精品在线| 99人体免费视频| 国产真实乱了在线播放| 亚洲一区二区精品无码久久久| 久久久久久久久18禁秘| 成人午夜久久| 免费全部高H视频无码无遮掩| 久久无码av三级| 国产屁屁影院| 黄片一区二区三区| 五月天福利视频| 欧美性猛交xxxx乱大交极品| 国产成a人片在线播放| 久久亚洲国产一区二区| 亚洲国内精品自在自线官| 91精品国产自产91精品资源| 国产综合亚洲欧洲区精品无码| 成人福利一区二区视频在线| 精品国产成人高清在线| 91亚洲视频下载| 久久国产毛片| 在线看AV天堂| 激情综合网激情综合| 国产一区在线观看无码| 亚洲另类色| 国产欧美日韩综合一区在线播放| 亚洲伊人久久精品影院| 免费a级毛片视频| 伊人福利视频| aaa国产一级毛片| 亚洲日韩国产精品综合在线观看| 国产成人综合日韩精品无码不卡| аv天堂最新中文在线| 久久久久久高潮白浆| 欧美天堂久久| 日韩精品一区二区三区免费在线观看| 9999在线视频| 久久无码av三级| 波多野结衣AV无码久久一区| 亚洲日本中文字幕乱码中文| 国产精品流白浆在线观看| 国产欧美综合在线观看第七页| 国产制服丝袜无码视频| 国产欧美成人不卡视频| 欧美亚洲国产一区| 亚洲日韩第九十九页| 免费人成视频在线观看网站| 久久性妇女精品免费| 国产欧美中文字幕| 亚洲天堂在线免费| 国产精品成人第一区| 亚洲欧美日韩中文字幕一区二区三区 | 少妇极品熟妇人妻专区视频| 国产色偷丝袜婷婷无码麻豆制服| 91国内视频在线观看| 国产91九色在线播放| 国产精品成| 欧美中文字幕在线播放| 国产麻豆aⅴ精品无码| 国产黄色免费看| 67194亚洲无码| 人人爽人人爽人人片| 8090成人午夜精品| 国产欧美视频在线| 人人91人人澡人人妻人人爽| 又黄又爽视频好爽视频| 亚洲综合色婷婷| 国产午夜人做人免费视频中文| 无码免费的亚洲视频| 国产精品偷伦视频免费观看国产 | 91视频青青草| 国产在线观看第二页| 国产精品护士| 手机在线免费毛片| 国产亚洲高清在线精品99| 欧美激情视频一区二区三区免费| 国产情侣一区| 亚洲中文无码h在线观看|