KTV音樂點播系統設計報告打印稿_第1頁
KTV音樂點播系統設計報告打印稿_第2頁
KTV音樂點播系統設計報告打印稿_第3頁
KTV音樂點播系統設計報告打印稿_第4頁
KTV音樂點播系統設計報告打印稿_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

KTV點播系統KTVAVODSystem參賽院校:濟源職業技術學院參賽隊員:宋金時、楊曉東、張書銘指導教師:王樹森、陳平2010年07月16日摘要隨著科學技術的不斷提高,計算機科學日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領域并發揮著越來越重要的作用。嵌入式作為計算機應用的一部分,也以很快的速度發展,開發設計一套行之有效的嵌入式點唱系統,對于快節奏的生活有著很好的調節作用。KTV點唱系統是娛樂場所不可缺少的一種娛樂方式,它設計的目的在于豐富用戶的精神文化生活,在緊張的工作之余能夠放松身心,緩解工作所帶來的壓力。還有另外一個重要的作用就是能夠加深KTV系統使用者之間的感情,為彼此之間的溝通增加了一種新的方式。一般用戶使用計算機收聽歌曲,通過網上下載的途徑,如果網速過慢或其它原因,使用并不是很方便。如果去KTV等娛樂場所或者直接購買一套我們的KTV點唱系統,就可以直接的K歌所帶來樂趣,較其他娛樂方式相比既健康又享受,又不用因等待下載而浪費時間。因此,開發這樣一套實際應用軟件成為很有必要的事情,下面我們將以開發一套KTV點唱系統為例,談談其開發過程和所涉及到的問題及解決方法。關鍵詞:KTV點播系統目錄摘要 I第一章KTV點播系統概述 11.1目的和意義 11.2系統功能 11.3系統設計方案 11.3.1嵌入式系統組成 11.3.2KTV點播系統組成 21.3.3方案論證 2第二章宿主機開發環境的配置 42.1開發環境方案 42.2宿主機Linux環境的搭建 4第三章硬件開發平臺及其操作系統的構建 53.1開發平臺的硬件資源 53.2開發平臺的體系結構 53.3開發平臺硬件間的工作流程 63.4開發平臺操作系統的搭建 63.4.1U-Boot的編譯 6燒寫U-boot 73.4.3內核(kernel)的編譯與燒寫 7第四章基于Qt/Embedded的嵌入式圖形系統 84.1Qt概述 84.2Qt特征 84.3Qt編程核心技術 84.3.1元對象系統 8信號和插槽 94.3.3屬性 94.3.4.QObject類 9對象樹 94.3.6事件 94.3.7.QApplication類 104.3.8QWidget類 104.4QtCreator:跨平臺的QtIDE 104.5Qt/Embedded 104.5.1QTE與QT/X11比較 124.5.2Qt/Embedded開發模型 124.6建立Qt/Embedded開發環境 124.6.1準備工作 124.6.2安裝交叉編譯器 134.6.3安裝開發工具包 134.6.4編譯及安裝和 14第五章KTV點播系統設計 205.1SQLite數據庫 205.1.1SQLite數據庫簡介 205.1.2SQLite數據庫的操作 205.1.3Qt程序中對SQLite的操作 215.2使用QtCreator進行系統開發 225.2.1熟悉QtCreatorIDE 225.2.2使用QtCreator建立工程 235.2.3設計界面 235.2.4程序代碼的編寫 235.2.5程序調試以及修改 255.2.6KTV點播系統的功能測試 265.3MPlayer播放器 285.3.1MPlayer簡介 285.3.2MPlayer播放器的架構及工作原理 28第六章系統的移植與集成 306.1移植以及tslib1.4到開發板 306.2MPlayer的編譯及移植 32下載source文件與解壓 32配置 33參數配置簡單介紹 33編譯及移植 336.3KTV點播系統的移植 336.3.1交叉編譯 336.3.2將程序下載到開發平臺并運行 34第七章系統整體測試 357.1觸屏的測試與校準 357.2系統完整的運行測試 35參考文獻 37第一章KTV點播系統概述1.1目的和意義計算機已經成為我們學習和工作的得力助手,但同時也是我們娛樂放松的工具。今天,計算機的價格已經十分低廉,性能卻有了長足的進步。它已經被應用于許多領域,尤其是娛樂方面,應用更是廣泛,其中就有和我們所要開發的系統及其相近的一個領域,那就是KTV夜總會等一些娛樂方式多樣的場所。將我們的KTV點播系統應用到這些場所后,也為人們的業余娛樂生活提供了新的方式,特別是那些愛好唱歌,喜歡以K歌的方式放松心情的人們。在這樣的前提下,我們設計并開發了該系統。1.2系統功能我們的KTV點播系統擁有即點即放、歌曲查找、可根據自己喜好添加播放列表進行播放、播放列表還可以根據用戶的意愿隨意的刪除以及其他等功能。1.3系統設計方案1.3.1嵌入式系統組成嵌入式系統組成如圖1.1所示,嵌入式硬件平臺中包含嵌入式微處理器、存儲器、通用設備接口和I/O接口等。嵌入式硬件平臺與嵌入式操作系統之間為中間層,也稱板級支持包(BoardSupportPackage,BSP),它將系統上層軟件與底層硬件分離開來,使系統的底層驅動程序與硬件無關,上層軟件開發人員無需關心底層硬件的具體情況,根據BSP層提供的接口即可進行開發。嵌入式操作系統負責嵌入系統的全部軟、硬件資源的分配、任務調度,控制、協調并發活動。嵌入式應用軟件是由基于實時系統開發的應用程序組成,用來實現對被控對象的控制功能。功能層是要面對被控對象和用戶,為方便用戶操作,往往需要提供一個友好的人機界面。圖1.1嵌入式系統組成1.3.2KTV點播系統組成KTV點播系統組成如圖1.2所示,首先使用數據庫系統創建候選歌曲列表,然后KTV點播系統通過響應用戶的選擇操作,將用戶所選擇的相應歌曲在數據庫的支持下添加到已選歌曲列表中,然后KTV點播系統再調用媒體播放器播放對應的已選歌曲。圖1.2KTV點播系統組成圖1.3.3方案論證1.硬件平臺選擇現在用作嵌入式開發的硬件平臺很多,由于博創公司的經典S3C2410平臺硬件資源豐富,可擴展性好,并且帶有視頻音頻輸出以及觸摸屏設備,非常適合用作KTV點播系統的開發平臺,因此我們在眾多硬件平臺中選擇了博創2410平臺。2.Bootloder選擇用作嵌入式開發平臺的Bootloder有很多種,其中著名的被廣泛應用到實際的有u-boot和vivi兩種,因為u-boot具有開放源碼,支持多種嵌入式操作系統內核,支持多個處理器系列,較高的可靠性和穩定性,高度靈活的功能設置,豐富的設備驅動源碼等特點,所以我們選擇了u-boot作為我們開發平臺的Bootloder。3.嵌入式操作系統選擇Linux本身具有源碼開發、內核可裁剪等種種特點,使其成為嵌入式開發的首選,因此這里我們也選擇了Linux作為我們的嵌入式操作系統。4.開發工具選擇Qt是一個跨平臺的C++圖形用戶界面(GUI)工具包,Qt應用程序接口與工具兼容于所有支持平臺,并且Qt中QtSql模塊實現了對數據庫的完美支持,因此我們選擇了Qt作為我們的開發工具。5.數據庫系統選擇SQLite是一套非常強大的數據庫系統,同時它還擁有開源、小巧等特點,非常適合用到嵌入式開發中,因此我們選擇了SQLite數據庫系統。第二章宿主機開發環境的配置2.1開發環境方案宿主機嵌入式LINUX開發環境有如下方案:1.基于PC機WINDOWS操作系統下的CYGWIN;2.在WINDOWS下安裝虛擬機后,再在虛擬機中安裝LINXUX操作系統;3.直接安裝LINUX操作系統。這里我們選擇第二種基于WINDOWS的虛擬機上的Linux開發環境。通常的嵌入式系統的軟件開發采用一種交叉編譯調試的方式。交叉編譯調試環境建立在宿主機上,對應的開發板叫做目標板。運行Linux的PC開發時使用宿主機上的交叉編譯、匯編及連接工具形成可執行的二進制代碼,然后把可執行文件下載到目標機上運行。調試時的方法很多,可以使用串口,以太網口等。宿主機和目標板的處理器一般不相同,宿主機為Intel處理器,而目標板如UP-TECHS2410/P270DVP開發板為三星S3c2410。GNU編譯器提供這樣的功能,在編譯器編譯時可以選擇開發所需的宿主機和目標機從而建立開發環境。所以在進行嵌入式開發前第一步的工作就是要安裝一臺裝有指定操作系統的PC機作宿主開發機。2.2宿主機Linux環境的搭建開發過程中所使用到的Linux操作系統是開發代號為LucidLynx的長期支持版本:Ubuntu10.04。該系統繼承了前期Ubuntu版本的優良特性,具有啟動速度快,內核新,軟件更新方便,具有強大的后備支持等諸多優良特點。第三章硬件開發平臺及其操作系統的構建3.1開發平臺的硬件資源1.核心板為S3C2410,配置2MNorFlashAM29LV160/320,硬件支持從NorFlash啟動并可增加NandFlash容量。2.LCD和VGA接口,標配8寸16bit真彩屏,同時預留一個24bit接口。擴展了VGA接口和AV接口,可以連接VGA顯示器。3.AUDIO:CODEC采用UDA1341和UCB1400,二者根據核心板的不同由軟件設置CPLD邏輯進行選擇,具有放音、錄音和線路輸入等功能。功放電路由LM386構成,板載揚聲器可播放音頻。3.2開發平臺的體系結構圖3.1s3c3410體系結構圖3.3開發平臺硬件間的工作流程圖3.2s3c3410工作流程圖3.4開發平臺操作系統的搭建3.4.1U-Boot的編譯1.U-Boot主要目錄結構-board目標板相關文件,主要包含SDRAM、FLASH驅動;-common獨立于處理器體系結構的通用代碼,如內存大小探測與故障檢測;-cpu與處理器相關的文件。2.編譯U-boot首先運行如下命令配置U-Boot:#makeup2410_config然后運行make命令編譯:#make編譯成功之后會產生三個重要映象文件U-Boot1bin、U-Boot和U-Boot1srec文件。其中U-Boot是一個二進制的源映像文件,U-Boot1bin是個elf格式的二進制映像文件,將使用這個文件。燒寫U-boot將燒寫軟件sjf2410和U-Boot1bin放在同一個目錄下,然后進入DOS命令行模式,切換到所在目錄,輸入sjf2410-s.exe/f:u-boot.bin。選擇0:K9S1208prog→0:K9S1208Program。然后再入一次0,進行燒寫。3.4.3內核(kernel)的編譯與燒寫安裝內核:把內核源碼安裝/usr/src/linux子目錄中。cd/usr/src/linuxmakemrproper配置內核,修改相關參數。字符界面下,makemenuconfig在內核配置菜單中正確設置各內核選項,保存退出正確設置關聯文件make編譯內核,用編譯U-Boot時在源代碼的tools目錄下生成的mkimage可執行文件對前面編譯內核時生成的zImage進行處理,生成uImage以供U-Boot啟動。使用內核把uImage放入主機的TFTP目錄下,啟動開發板,用U-Boot的tftp命令下載uImage到SDRAM,并啟動。至此我們開發平臺的BOOT和操作系統搭建完成。第四章基于Qt/Embedded的嵌入式圖形系統4.1Qt概述Qt是Trolltech公司的標志性產品(現Trolltech公司已被手機巨頭NOKIA公司收購),是一個跨平臺的C++圖形用戶界面(GUI)工具包,Qt應用程序接口與工具兼容于所有支持平臺,讓開發員們掌握一個應用程序接口,便可執行與平臺非相關的應用開發與配置Qt/Windows(WindowsXP,2000,NT4,Me/98)Qt/Mac(MacOSX)Qt/X11(Linux,Solaris,HP-UX,IRIX,AIX等)Qt對不同平臺的專門API進行了專門的封裝(文件處理,網絡等)。4.2Qt特征引入一種用于無縫對象通訊的被稱為信號和槽非常強大機制,可查詢和可設計的屬性,強大的事件和事件過濾器,根據上下文進行國際化的字符串翻譯,完善的時間間隔驅動的計時器使得在一個事件驅動的圖形界面程序中很好地集成許多任務成為可能。以一種自然的方式組織對象所有權的分層次和可查詢的對象樹。被守護的指針,QGuardedPtr,當參考對象被破壞時,可以自動地設置為無效,不像正常的C++指針在它們的對象被破壞的時候變成了“搖擺指針”。4.3Qt編程核心技術4.3.1元對象系統元對象系統是一個C++擴展,使得QT更適合真正的組件GUI編程,使用元編譯器moc產生能被標準C++編譯器訪問的附加C++代碼,帶有moc預編譯器的C++基本上提供了面向對象的靈活性,并保持了C++的執行效率和擴展性。信號和插槽在Qt程序中,利用信號(signal)和插槽(slot)機制進行對象間的通信。事件處理的方式也是回調。當對象狀態發生改變的時候,發出signal通知所有的slot接收signal,盡管它并不知道哪些函數定義了slot,而slot也同樣不知道要接收怎樣的signal。signal和slot機制真正實現了封裝的概念,slot除了接收signal之外和其它的成員函數沒有什么不同,而且signal和slot之間也不是一一對應的。4.3.3屬性屬性也是一個類的成員,在類聲明中用宏Q_PROPERTY來聲明,只能在繼承于QObject的子類中聲明,設置和得到屬性的成員函數如下:QObject::setProperty()QMetaObject::propertyNames()QMetaObject::property()4.3.4.QObject類QObject是Qt類體系的唯一基類,是Qt各種功能的源頭活水,就象MFC中的CObject和Dephi中的TObject。對象樹QObject在對象樹中組織它們自己。當你以另外一個對象作為父對象來創建一個QObject時,它就被添加到父對象的children()列表中,并且當父對象被刪除的時候,它也會被刪除。這種機制很好的適合了圖形用戶界面應用對象的需要。4.3.6事件事件是由窗口系統或qt本身對各種事務的反應而產生的。當用戶按下、釋放一個鍵或鼠標按鈕,一個鍵盤或鼠標事件被產生;當窗口第一次顯示,一個繪圖事件產生,從而告知最新的可見窗口需要重繪自身。大多數事件是由于響應用戶的動作而產生的,但還有一些,比如定時器等,是由系統獨立產生的。4.3.7.QApplication類QApplication類和QWidget類都是QObject類的子類.QApplication類負責GUI應用程序的控制流和主要的設置,它包括主事件循環體,負責處理和調度所有來自窗口系統和其他資源的事件,并且處理應用程序的開始、結束以及會話管理,還包括系統和應用程序方面的設置。對于一個應用程序來說,建立此類的對象是必不可少的。4.3.8QWidget類QWidget類是所有用戶接口對象的基類,它繼承了QObject類的屬性。組件是用戶界面的單元組成部分,它接收鼠標、鍵盤和其它從窗口系統來的事件,并把它自己繪制在盤屏幕上。QWidget類有很多成員函數,但一般不直接使用,而是通過子類繼承來使用其函數功能。如,QPushButton、QlistBox等都是它的子類。4.4QtCreator:跨平臺的QtIDEQtCreator是Qt被Nokia收購后推出的一款新的輕量級集成開發環境(IDE)。此IDE能夠跨平臺運行,支持的系統包括Linux(32位及64位)、MacOSX以及Windows。QtCreator包含了一套用于創建和測試基于Qt應用程序的高效工具,包括:一個高級的C++代碼編輯器、上下文感知、幫助系統、可視化調試器、源代碼管理、項目和構建管理工具等。QtCreator的設計目標是使開發人員能夠利用Qt這個應用程序框架更加快速及輕易的完成開發任務。4.5Qt/Embedded簡介Qt/Embedded(簡稱QtE)是一個專門為嵌入式系統設計圖形用戶界面的工具包。使用QtE,開發者可以:用QtE開發的應用程序要移植到不同平臺時,只需要重新編譯代碼,而不需要對代碼進行修改。可以隨意設置程序界面的外觀。可以方便地為程序連接數據庫。可以使程序本地化。可以將程序與Java集成。嵌入式系統地要求是小而快速,而QtE就能幫助開發者為滿足這些要求開發強壯地應用程序。QtE是模塊化和可裁剪地。開發者可以選取他所需要的一些特性,而裁剪掉所不需要的。這樣,通過選擇所需要的特性,QtE的映像變得很小,最小只有600K左右。QtE由于平臺無關性和提供了很好的Gui編程接口,在許多嵌入式系統中得到了廣泛的應用,是一個成功的嵌入式GUI產品。4.6建立Qt/Embedded開發環境4.6.1準備工作在/usr/local目錄下新建一個名字為QT的目錄,然后將要用到的文件包、(適用于QT-X11和QT/E)、以及QtCreator的安裝包(軟件開發工具包,包含QT-X11和QtCreator)放到新建的QT目錄中。4.6.2安裝交叉編譯器在終端中執行如下操作:#cd/usr/local/QT#tarxvzfarm-linux-gcc-4.3.2.tgz–C/usr/local/執行該命令,將把arm-linux-gcc安裝到目錄。然后,將交叉編譯器的環境變量設置為:PATH=bin:$PATH,在終端中進行以下操作:exportPATH=/usr/local/arm/4.3.2/bin:$PATH這樣就把交叉編譯器的環境變量設置好了。4.6.3安裝開發工具包1.安裝QT-X11的開發工具包安裝完成后可以產生Qt開發工具,如QtCreator、designer、qvfb等,嵌入式的開發有了qvfb,就可以不需要實際的開發板,也可以開發Qt應程序。首先進入軟件包的存放目錄,然后在終端中執行以下命令:#chmod+x./默認的安裝路徑為/opt/qtsdk-2010.04,這樣我們的開發工具包就安裝成功了。2.設置環境變量在~/.profile文件的最后添加如下語句:exportQTDIR=$PATH:/opt/qtsdk-2010.04/qtexportPATH=$PATH:/opt/qtsdk-2010.04/qt/bin使環境變量立即起效:Source~/.profile至此我們的QtCreator以及其他QT-X11的開發工具安裝成功。4.6.4編譯及安裝和1.解壓QT文件包將/usr/local/QT目錄下的解壓兩次,分別重命名為和。這里,qt-everywhere-opensource-src-4.6.3有兩個復制:-x86和,根據他們的名字可以知道前者是適合x架構的,后者適合arm架構,如果有開發板的話,可以只編譯qt-everywhere版本成arm架構的就可以了,但是很多時候用qvfb的話,開發會方便很多,所以多編譯一個x86架構的。版本只能在嵌入式板子上面運行,編譯成x86架構的程序也只能在x86的嵌入式板子上跑。前面說過,我們需要qvfb來測試開發程序,但是qvfb只能執行x86架構的應用程序,所以需要讓QT/E4.6.3-x86生成關于x86的庫和其他文件。最終的qt應用程序需要在arm架構上面運行,需要這方面的庫,所以還需要編譯應用arm的。2.解壓及編譯觸摸屏軟件打開文件所在目錄:cd/usr/local/QT,解壓:,進入解壓目錄:cdtslib-1.4,修改腳本:geditbuild.sh,為: #/bin/shexportCC=arm-linux-gcc./autogen.shecho"ac_cv_func_malloc_0_nonnull=yes">arm-linux.cache./configure--host=arm-linux--cache-file=arm-linux.cache-prefix=/usr/local/tslibmakemakeinstall執行:./build.sh,成功安裝到了/usr/local/tslib目錄下,至此tslib1.4編譯成功。3.編譯及安裝進入目錄,進行編譯安裝。在終端中進行如下操作:#cd/usr/local/QT/-x86#./configure-prefix/usr/local/-x86-embeddedx86-qvfb#make#makeinstall安裝編譯過程大概需要4個小時,具體時間得看機器的配置,完成后-x86被成功安裝在了/usr/local/-x86目錄下。4.編譯及安裝進入/usr/local/QT目錄,首先修改src/3rdparty/freetype/include/freetype/config/ftconfig.h文件,將第330行修改為:"orr%0,%0,%2,lsl#16\n\t"/*%0|=%2<<16*/。修改完成后開始配置configure,具體命令為:#./configure-qt-kbd-tty-qt-gfx-linuxfb-no-gfx-transformed-no-gfx-multiscreen-qt-mouse-pc-no-gfx-qvfb-no-gfx-vnc-qt-kbd-tty-qt-gfx-linuxfb-no-gfx-qvfb-no-gfx-vnc-qt-mouse-tslib-no-glib-prefix/usr/local/-arm-embeddedarm-release-shared-fast-no-largefile-qt-sql-sqlite-no-qt3support-no-xmlpatterns-no-mmx-no-3dnow-no-sse-no-sse2-no-svg-no-webkit-qt-zlib-qt-gif-qt-libtiff-qt-libpng-qt-libmng-qt-libjpeg-makelibs-nomaketools-nomakeexamples-nomakedocs-nomakedemo-no-nis-no-cups-no-iconv-no-dbus-no-openssl-xplatformqws/linux-arm-g++-little-endian-qt-freetype-depths16,18-I/usr/local/tslib/include-L/usr/local/tslib/lib-v-D__ARM_ARCH_5TEJ__命令寫好后按下回車,然后再輸入O回車、輸入yes回車,然后configure就開始配置生成Makefile,配置成功后會有一個提示,然后就可以根據系統的提示進行編譯安裝了,具體命令為:#make#makeinstall5.環境變量的設置由于我們有兩種不同架構的QT/E,為了使用方便不與混淆,所以我們使用腳本設置環境變量的方法。(1)環境變量設置QTEDIR=/usr/local/PATH=/usr/local//bin:$PATHLD_LIBRARY_PATH=/usr/local//lib:$LD_LIBRARY_PATH(2)環境變量設置QTEDIR=/usr/local/PATH=/usr/local/QT//bin:$PATHLD_LIBRARY_PATH=/usr/local//lib:$LD_LIBRARY_PATH至此QT/E開發環境的建立全部成功。第五章KTV點播系統設計5.1SQLite數據庫數據庫幾乎是每個較大的軟件所必須應用的,而在Qt中也使用QtSql模塊實現了對數據庫的完美支持。5.1.1SQLite數據庫簡介SQLite顧名思議是以SQL為基礎的數據庫軟件,SQL是一套強大的數據庫語言,主要概念是由數據庫、資料表(table)、查詢指令(queries)等單元組成的關聯性數據庫。因為SQL的查詢功能強大,語法一致而入門容易,因此成為現今主流數據庫的標準語言。5.1.2SQLite數據庫的操作啟動sqlite3程序,僅僅需要敲入帶有SQLite數據庫名字的"sqlite3"命令即可。如果文件不存在,則創建一個新的(數據庫)文件。然后sqlite3程序將提示你輸入SQL。敲入SQL語句(以分號“;”結束),敲回車鍵之后,SQL語句就會執行。現在在Linux的終端下建立KTV音樂點播系統所需的數據庫。sqlite>createtablesong(歌名vchar,歌手vchar);sqlite>createtableplaylist(歌名vchar,歌手vchar);sqlite>insertintosongvalues('逍遙嘆','胡歌');如表5.1所示,表song中存放了我們KTV點播系統所需的歌曲名稱以及對應的歌手名稱等信息,表playlist則為空,作用是為了我們的系統運行后存放用戶所點播的歌曲信息。這些數據都存放在ktv.db文件中(如表5.2所示為數據字典),程序運行后就可以通過相應的SQL語言來操作這個數據庫文件,達到數據的讀取和存放的目的。表5.1song和playlist數據表模型序號歌名歌手1逍遙嘆胡歌表5.2數據字典字段名類型功能序號Int系統編號歌名vchar查詢關鍵字歌手vchar歌手姓名5.1.3Qt程序中對SQLite的操作在使用QT編程中同樣可以使用QT的機制來操作SQLite數據庫,以下QT的語句就實現了同前面在命令行中操作一樣的效果:staticboolcreateConnection(){//創建數據庫鏈接函數QSqlDatabasedb=QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName("ktv.db");if(!db.open())returnfalse;QSqlQueryquery;query.exec(QObject::tr("createtablesong(歌名vchar,歌手vchar)"));……returntrue;}其中QSqlDatabase類實現了數據庫連接的操作,QSqlQuery類用來執行SQL語句。5.2使用QtCreator進行系統開發5.2.1熟悉QtCreatorIDEQt應用程序除了使用手工編寫代碼的方式外,還可以用過QtCreator來完成,QtCreator的功能十分強大,而且還提供了大量可供編程使用的組件。如圖5.1所示是在Linux環境下打開后的第一屏顯示的主界面,通過這個界面我們可以對QtCreator的開發環境有一個大概的了解,下面我們就使用它來開發我們的KTV點播系統。圖5.1QtCreator主界面5.2.2使用QtCreator建立工程打開QtCreator,然后在點擊File菜單選中子菜單項中的第一個NewFileorProject進行創建工程,工程文件以及其他代碼文件都放在了你所指定的路徑下。5.2.3設計界面使用QtCreator完成工程的創建后首先是設計界面,如圖5.2所示為系統的界面,界面中包括了TableView、PushButton、LineEdit、Lable等部件。圖5.2系統主界面5.2.4程序代碼的編寫程序中用到了SQLite數據庫,所以首先需要創建一個關于數據庫的創建和鏈接的頭文件,文件名為database.h,然后將源文件修改為以下內容:staticboolcreateConnection(){//創建數據庫鏈接函數QSqlDatabasedb=QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName("ktv.db");if(!db.open())returnfalse;QSqlQueryquery;query.exec(QObject::tr("createtablesong(歌名vchar,歌手vchar)"));……returntrue;}內容修改完成后,打開工程文件在文件的最后添加一行關于使用數據庫的聲明,內容如下:QT+=sql最后是對程序的構造以及功能的實現做工作,這一步是最麻煩也是最費時間的一步,首先是編寫構造函數、然后是析構函數、最后各個信號與槽的鏈接以及實現代碼的編寫,至此代碼的初步編寫工作完成。5.2.5程序調試以及修改界面設計、代碼編寫完成后,就需要對程序進行功能調試以及修改,這一步也是非常的費時間中間可能還會牽扯到一些技術難題,所以在這一步一定要仔細認真,如圖5.3所示為系統運行后的主界面。圖5.3系統運行后的主界面5.2.6KTV點播系統的功能測試打開主界面后,點擊你想要聽的歌曲(這里我們選擇逍遙嘆)系統就會自動將歌曲添加到已選列表內并且開始自動播放,如圖5.4所示正在播放所選的歌曲。圖5.4播放選擇的歌曲如果我們不想K當前的歌曲,就可以點擊關閉播放按鈕關閉當前的播放,然后我們還可以刪除已選列表中的歌曲重新添加,這里我們刪除逍遙嘆并重新添加喜歡的歌曲,然后單擊播放列表按鈕就開始了播放,我們就可以享受K歌帶來的樂趣了,如圖5.5所示。圖5.5播放列表中的歌曲用戶添加的列表可以循環播放,直到用戶刪除重新添加。另外在播放的過程中用戶如果想更換列表中的其他歌曲只需要雙擊想要聽的歌曲即可,這里我們將歌曲更改為守護者,如圖5.6所示。圖5.6更改正在播放的歌曲最后還有一個重要的功能就是可以實現手工輸入歌曲名實現查找,這個功能能夠方便用戶快速找到喜歡的歌曲,不在尋找中浪費時間,而是把更多的時間用到欣賞歌曲上,比如這里我們想要聽星月神話,我們就可以在輸入歌曲名的后面的文本框中輸入星月神話,然后點擊查找,如圖5.7所示。圖5.7系統的查找功能這樣我們就可以將查找到的歌曲加入已選列表播放了,最后需要說明的是在我們的系統運行過程中MV的視屏就可以通過雙擊播放器的標題欄進入全屏欣賞模式。最后如果我們想關閉系統就可以直接點擊主界面上的推出按鈕就可以快速的退出系統了,我上面的測試只是程序大概的運行情況以及各種功能的介紹,同時我們的程序功能測試也完成了。雖然我們的系統功能很簡單而且界面也不怎么美觀,同時也是本著操作簡單、方便相結合的原則而設計的。但是我們會不斷的去努力,去學習,同時通過參加這次大賽讓我們每一個參賽隊員都對嵌入式有了一個新的認識,并且同時也學到了很多東西,在此非常的感謝博創公司給我們提供的這一個交流學習的平臺,同時我們也要感謝我們的指導老師每天辛苦的陪著我們給我們指導、幫助以及支持。5.3MPlayer播放器5.3.1MPlayer簡介MPlayer是Linux上的電影播放器,它的功能十分強大,能夠播放眾多格式的文件,在X86PC機上運行很穩定,也可以把它移植到非X86CPU上的嵌入式系統中來。5.3.2MPlayer播放器的架構MPlayer播放器分為4層:輸入層、分流層、解碼層、輸出層。輸入層(inputlayer):該層包含讀取媒體文件模塊,該模塊將媒體文件的媒體數據按流的方式讀入,并存放于數據緩沖區,通過解析文件頭來判斷該數據流屬于何種音頻、視頻格式的文件。MPlayer的邏輯結構圖分流層:包含分流器功能模塊,該模塊MPlayer邏輯結構分為通過分析文件頭來判斷音頻和視頻在該段數據中的位置,然后對其進行音、視頻分離,存入各自的緩沖區。同時,提取時間戳(PTS,Presentationtimestamp),通過控制時間戳可以實現音頻和視頻的同步。解碼層:該層包含音、視頻的解碼模塊和解碼器選擇模塊。第六章

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論