freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于嵌入式linux的mp3播放器的設計與實現(xiàn)畢業(yè)論文-閱讀頁

2025-07-12 20:29本頁面
  

【正文】 abletv \extracflags=I/tmp/libmad/mad/include \extraldflags=L/tmp/libmad/mad/lib \2amp。(說明:第二行的disablemp3lib ,表示使編譯的時候不包含mp3lib解碼器,因為本次畢業(yè)設計中的MPlayer播放器將使用解碼性能更優(yōu)秀的mad解碼器,即15行的enablemad 參數(shù)。 make make make install (6)拷貝MPlayer可執(zhí)行文件 將編譯成功后生成的可執(zhí)行文件mplayer放在開發(fā)板的/usr/bin目錄下。然后將將編譯好的可執(zhí)行程序mplayer 復制到文件系統(tǒng)中的/usr/bin 目錄下,并使用如下命令對其增加權限: chmod 777 mplayer(說明,ac mad 表示使用mad庫來解碼)。 使用Qt/E的話,開發(fā)者可以方便的移植程序到不同的平臺上,主要的工作就是重新編譯代碼,完全不需要對代碼進行任何的修改,這是Qt移植同Bootloader移植、Linux內(nèi)核移植、文件系統(tǒng)移植的最大區(qū)別,而這原因在于Qt是建立在應用層之上的,不需要同硬件直接接觸,這樣也減少了程序開發(fā)員的工作量。而connect則是Qt中最重要的特征,其在Qt對象之間建立了一種單向的連接。 從更高層次來看,信號與插槽是Qt自行定義的一種高級接口,應用于對象之間的通信,獨立于標準的C/C++語言。編程時,信號(槽)之間會通過相互關聯(lián)來實現(xiàn)類似于C/C++語言中的函數(shù)調(diào)用和交互。Qt中有各種圖形和按鈕的類。信號和槽是 QT 自行定義的一種通信機制,它獨立于標準的 C/C++ 語言,因此要正確的處理信號和槽,須借助Qt中的MOC(Meta Object Compiler)工具。Qt/,深色斜體標出的三個層次代表Qt/E。比如,本次畢業(yè)設計眾的MP3播放器這個個上層應用程序,可以方便地移植到不同平臺。Frame Buffer實際上是對圖形硬件設備的抽象,即將顯示設備抽象為幀緩沖區(qū)。 Creator 開發(fā)應用程序流程 Qt Creator 設計器是一個提供GUI的設計工具。make會在當前目錄下搜索makefile這個文本文件,而makefile里面記錄了源碼如何編譯的詳細信息[10]。 程序模塊間關系圖。、。QWidget類是所有GUI對象的基類。QObject類是所有Qt對象的基類,是Qt對象模型的中心。 (2)創(chuàng)建主窗體 Qt Creator創(chuàng)建主窗體,需要使用QSlider類、QPushButton類、QSinBox類以及QWidget類。界面程序設計中需要使用2次QWidget類,一次用于整個界面,一次用于顯示視頻的窗口。各圖標有對應的png格式的圖片(放在/images目錄中,這些圖片是委托熟悉美工朋友制作的),在編譯后的界面中的按鈕會有所體現(xiàn)。 (1)從QWidget類繼承的Mplayer類中存在一個以“Mplayer”命名的成員。通過定義一個 QProcess 對象調(diào)用已編譯好的Mplayer播放器,在下文進一步敘述。 //初始化界面 setButtonIcon()。 //初始化進度條 process = new QProcess(this)。 (2)利用connect對信號以及槽進行初始化。pushButton_1則是信號的發(fā)送者,點擊按鈕會觸發(fā)一個信號, this代表按鈕本身,槽接收到信號之后的動作是就轉(zhuǎn)到“play_pause_slots()”這個槽。QIcon 類代表圖標,每個圖像代表窗口在某種狀態(tài)下應該顯示的圖標。該函數(shù)原型為:void addPixmap(const QPixmap amp。Mode 為 QIcon 類的成員類型,有以下取值: ①Q(mào)Icon::Normal:按鈕為使能狀態(tài),但未激活; ②QIcon::Disabled:按鈕為禁用狀態(tài); ③QIcon::Active:按鈕為激活狀態(tài); ④QIcon::Selected:按鈕被選中; 從 QPixmap 對象構(gòu)造圖標時,可以針對不同狀態(tài)的按鈕設定對應的圖像,比如“開始/暫?!笔褂猛粋€按鈕,但根據(jù)不同的狀態(tài)而擁有各自的圖標,這就是所謂的“開關狀態(tài)”。 // 構(gòu)造一個暫時沒有圖像的圖標 (QPixmap(/images/), QIcon::Normal, QIcon::Off)。 (3)播放模塊。MPlayer工作在slave模式下,MPlayer在后臺運行,不從鍵盤截獲輸入事件,利用QString定義的“mon”來緩存包含對MPlayer控制命令的字符串,進而向MPlayer發(fā)出控制。void Mplayer::start_play(QString file_name){ init()。 //這里的widget是ui中MPlayer顯示視頻的地方 processstart(mon)。利用if語句進行播放和暫停功能的控制。void Mplayer::play_pause_slots(){ if(!isPlay) { if(!isStop) { processwrite(pause\n)。 (QPixmap(/images/), QIcon::Normal, QIcon::Off)。 isPlay = true。 (QPixmap(/images/), QIcon::Normal, QIcon::Off)。 isPlay = false。 }} (5)停止播放,即退出程序。 QIcon icon_pause。 pushButton_2setIcon(icon_pause)。 QIcon icon_stop。 pushButton_2setIcon(icon_stop)。 }} (6)音量調(diào)節(jié)。首先創(chuàng)建使用if語句進行判斷,根據(jù)當前音量值和音量的設定值進行比較來實現(xiàn)音量調(diào)節(jié)。 curr_vol = volume。 curr_vol = volume。即停止輸出聲音,令isSound = false即可。void Mplayer::set_sound_slots(){ if(isSound) { processwrite(mute 1\n)。 (QPixmap(/images/), QIcon::Normal, QIcon::Off)。 isSound = false。 QIcon icon_sound。 pushButton_3setIcon(icon_sound)。 }} (8)獲取和顯示播放進度,從滾動條的位置獲得歌曲已經(jīng)播放的百分比。 }}//顯示播放進度void Mplayer::back_message_slots(){ while(processcanReadLine()) { QString message(processreadLine())。 QStringList message_list = (=)。 horizontalSlidersetValue(curr_pos)。void Mplayer::back(){ processclose()。 close()。在桌面會生成名為“Mplayerbuilddesktop”文件夾,該文件夾包含編譯、連接、運行后產(chǎn)生的目標文件、可執(zhí)行文件以、makefile文件及頭文件等。需要將該文件放在開發(fā)板中。并使用如下命令對其增加權限:chmod 777 mplayer。向其中增加如下內(nèi)容:if [ f $TSLIB_CALIBFILE ]。 else ts_calibrate MPlayer qwsamp。在根目錄下輸入: qtcongfig ,程序開始運行。作者將開發(fā)板/var/ftp文件夾增加了“777”的權限,本以為可以方便使用,卻導致FTP軟件無法連接。將文件夾權限改回來就行了。實際使用中發(fā)現(xiàn),使用64位的計算機,USB下載線的驅(qū)動無法安裝,因而無法使下載線用。 (3)在開發(fā)板上進行測試,發(fā)現(xiàn)“靜音”按鈕按下之后,有將近一秒的延時才能使聲音為零。 make: Leaving directory `/opt/MP3/xc2440mp339。Make39。查閱資料發(fā)現(xiàn),原來在Redhat系統(tǒng)中包名稱是是“gccc++”,而在Ubuntu系統(tǒng)下,這個包叫“g++”。如果還是不出聲音,請關注下VMware音頻設置以及操作系統(tǒng)音頻設定是否正確。這就是移植Uboot、Kernel和文件系統(tǒng)的工作。 本畢業(yè)設計關注與熟悉嵌入式開發(fā)流程,實現(xiàn)開源播放軟件Mplayer從X86平臺移植到ARM平臺,體會使用不同的編譯器,分別進行不同的工作但是最終都能實現(xiàn)播放音樂的功能。 本次畢業(yè)設計,不僅僅實現(xiàn)了歌曲的播放,而且實現(xiàn)了對視頻文件的播放。進度條可以隨著播放進度不斷移動,但是拖動進度條不能實現(xiàn)快進快退功能。參考文獻[1] ——嵌入式Linux編程入門和開發(fā)實例[M].人民郵電出版社,[2] [M].北京航空航天大學出版社,[3] Eric .UNIX編程藝術[M].電子工業(yè)出版社,[4] [M].清華大學出版社,[5] [M].清華大學出版社,[6] M. Nilsson. The audio/mpeg Media Type[S].IETF. ,;[7] 王靈芝等.基于嵌入式Linux 與QT 的MP3 播放器的設計[J].漳州師范學院學報(自然科學版),[8] [M].機械工業(yè)出版社,[9] Ting Liu. . Incorporating a contractbased test facility to the GUI framework[J].In:IEEE Canadian . [10] (第三版)[M].人民郵電出版社, 附錄 A 源代碼 include QtGui/QApplicationinclude int main(int argc, char *argv[]){ QApplication a(argc, argv)。 //實例最終的MPlayer類 (Qt::FramelessWindowHint)。 //顯示界面 return ()。 void start_play(QString file_name)。 void init()。 void stop_slots()。 void set_sound_slots()。 void back_message_slots()。private: QProcess *process。 bool isPlay。 bool isStop。 int curr_time。 int curr_vol。endif // MPLAYER_H include include QDebuginclude Mplayer::Mplayer(QWidget *parent):QWidget(parent){ setupUi(this)。 horizontalSlidersetPageStep(1)。 //初始化QProcess類 processsetProcessChannelMode(QProcess::MergedChannels)。 connect(pushButton_2,SIGNAL(clicked()),this,SLOT(stop_slots()))。 connect(pushButton_4,SIGNAL(clicked()),this,SLOT(back()))。 connect(process,SIGNAL(readyReadStandardOutput()),this,SLOT(back_message_slots()))。 connect(timer,SIGNAL(timeout()),this,SLOT(get_pos_slots()))。 //啟動定時器 1秒timeout 1次 init()。}//為按鍵添加圖標void Mplayer::setButtonIcon(){ //play QIcon icon_play。 pushButton_1setIcon(icon_play)。 (QPixmap(/images/), QIcon::Normal, QIcon::Off)。 //sound QIcon icon_sound。 pushButton_3setIcon(icon_sound)。 (QPixmap(/images/), QIcon::Normal, QIcon::Off)。 //設置按鈕無邊框,默認是有邊框的,為“false” pushButton_1setFlat(true)。 pushButton_3setFlat(true)。}void Mplayer::init(){ isPlay = false。 isSound = true。//true。 spinBoxsetValue(5)
點擊復制文檔內(nèi)容
試題試卷相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1