嵌入式機車(chē)車(chē)輛車(chē)載播放系統軟件設計與實(shí)現
1.Qt簡(jiǎn)介
本文引用地址:http://dyxdggzs.com/article/201809/388447.htmQt是Trolltech公司的標志性產(chǎn)品(現Trolltech公司已被手機巨頭NOKIA公司收購),是一個(gè)跨平臺的C++圖形用戶(hù)界面(GUI)工具包。它既可以開(kāi)發(fā)GUI程式,也可用于開(kāi)發(fā)非GUI程式,比如控制臺工具和服務(wù)器。Qt是面向對象語(yǔ)言,易于擴展,并且允許組件編程。Qt應用程序接口與工具兼容于所有支持平臺,讓開(kāi)發(fā)員們掌握一個(gè)應用程序接口便可執行與平臺非相關(guān)的應用開(kāi)發(fā)與配置。
Qt支持下述平臺:
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平臺;3)Macintosh-Mac OS X;
4)Embedded-有幀緩沖(framebuffer)支持的嵌入式Linux平臺,Windows CE.
Qt對不同平臺的專(zhuān)門(mén)API進(jìn)行了專(zhuān)門(mén)的封裝(文件處理、網(wǎng)絡(luò )等)。
Qt被Nokia收購后推出了一款新的輕量級集成開(kāi)發(fā)環(huán)境(IDE)Qt Creator.QtCreator可帶來(lái)兩大關(guān)鍵益處:提供首個(gè)專(zhuān)為支持跨平臺開(kāi)發(fā)而設計的集成開(kāi)發(fā)環(huán)境(IDE),并確保首次接觸Qt框架的開(kāi)發(fā)人員能迅速上手和操作。
Qt Creator包含了一套用于創(chuàng )建和測試基于Qt應用程序的高效工具,包括:一個(gè)高級的C++代碼編輯器、上下文感知幫助系統、可視化調試器、源代碼管理、項目和構建管理工具。
Qt/Embedded(簡(jiǎn)稱(chēng)QT/E)是一個(gè)專(zhuān)門(mén)為嵌入式系統設計圖形用戶(hù)界面的工具包,是NOKIA公司的圖形化界面開(kāi)發(fā)工具Qt的嵌入式版本,它通過(guò)QtAPI與LinuxI/O以及Framebuffer直接交互,擁有較高的運行效率,而且整體采用面向對象編程,擁有良好地體系架構和編程模式。
Qt/embedded和Qt一樣,在4.5版本之后提供了三種不同的授權協(xié)議GPL,LGPL和Commercial.開(kāi)發(fā)者使用QT/E開(kāi)發(fā)的應用程序要移植到不同平臺時(shí),只需要重新編譯代碼,而不需要對代碼進(jìn)行修改。并可以隨意設置程序界面的外觀(guān)、方便地為程序連接數據庫、使程序本地化、將程序與Java集成等。
2.使用Qt Creator設計界面
在Qt Creator中完成車(chē)載播放器工程的創(chuàng )建后首先是設計界面。界面可用代碼生成,也可用Qt Designer輔助設計。使用Qt Designer設計界面只需將界面中所需的窗口部件拖入ui界面文件中,然后設置屬性修改其顯示效果,最后使用布局控件設置布局效果。通過(guò)拖放窗口部件完成的界面在布局上不夠精確,因此本系統采用純代碼來(lái)完成界面開(kāi)發(fā)。
本系統的界面主要包括的窗口部件有Table View、Push Button等。在界面的布局上,系統采用了手工布局方式。
手工布局方式通過(guò)基類(lèi)Q W i d g e t提供的setGeometry()函數來(lái)設置子窗口部件的位置和大小,當窗口大小改變的時(shí)候,重新計算窗口的大小或者變化比例,然后重載QWidget::resizeEvent(QResizeEvent*)函數,能夠使得子窗口部件的大小和位置作出適應性的改變。
如圖1所示為本系統的主界面:
界面設計的主要開(kāi)發(fā)過(guò)程如下:
1)使基礎窗口QWidget繼承于主窗口QMainWindow,窗體構造函數負責模板的初始化;
2)創(chuàng )建MyButton類(lèi)構造窗體按鈕部件,并對窗口部件中使用的對象以及函數進(jìn)行聲明,包括圖標、名稱(chēng)、字體、文本、坐標、畫(huà)筆、按鈕是否有效、重繪時(shí)間、鼠標按下事件等;
3)添加按鈕的信號與槽。系統界面中每個(gè)功能按鈕都對應一個(gè)信號和槽,信號和槽式Qt編程的核心技術(shù),通過(guò)信號可以將界面上的空間所發(fā)生的事件進(jìn)行發(fā)射,槽函數負責接受相應信號并作出響應處理。如播放暫停按鈕,與其對應的信號是單擊,它的單擊信號連接一個(gè)槽處理函數,在這個(gè)函數中通過(guò)QProcess來(lái)向slave模式下的MPlayer發(fā)送命令,達到控制播放的目的。其他的控件在處理方式上都與播放暫停按鈕類(lèi)似,都有自己得信號和槽。
3.軟件功能模塊設計
機車(chē)車(chē)輛車(chē)載播放器主要由音頻播放和視頻播放兩大部分組成,這兩部分存在著(zhù)很多相同和相似的功能,為避免重復編碼,采用C++面向對象的模塊化設計思想,將兩部分中功能相似的部分抽取出來(lái),形成獨立的功能模塊,提高了軟件的可重用性和系統的運行效率。各功能模塊均采用C++類(lèi)來(lái)實(shí)現,對模塊內部的數據進(jìn)行封轉,對外提供接口供外部調用,一方面提高了系統的數據安全性,另一方面也使軟件編碼更加的規范。
為實(shí)現機車(chē)車(chē)輛車(chē)載播放系統的功能,創(chuàng )建了窗體文件用于設置車(chē)載播放器的窗體;創(chuàng )建了配置文件用于處理系統配置信息;創(chuàng )建了用于實(shí)現對數據庫操作的源文件;創(chuàng )建了觸摸屏控制文件以及歌曲列表文件。
具體功能模塊設計方式如下:
1)搜索歌曲
點(diǎn)擊搜索歌曲按鈕時(shí),跳出一個(gè)對話(huà)框,當用戶(hù)輸入了歌曲名或名稱(chēng)中的部分內容并確定后,發(fā)送消息到服務(wù)器端,服務(wù)器端對表song進(jìn)行模糊查詢(xún),得到符合的歌曲列表,將這些信息返回給客戶(hù)端,在客戶(hù)端形成一個(gè)QwidgetTable控件,用來(lái)顯示搜索的結果。當用戶(hù)點(diǎn)擊其中的一行時(shí),將相應行的歌曲信息賦值給current并播放。
2)上一首
上一首按鈕連接了prev()函數,它的功能是通過(guò)prev()函數來(lái)實(shí)現的。在此函數中,實(shí)現讀取usersong.xml文件中位置為songpos-1的歌曲信息,賦值給current,然后進(jìn)行播放,實(shí)現上一首功能。
3)播放
當點(diǎn)擊播放按鈕時(shí),隱藏播放按鈕,顯示暫停按鈕,并讀取c u r r e n t中的信息,通過(guò)Phonon的函數play()實(shí)現播放。
4)暫停
當點(diǎn)擊暫停按鈕時(shí),隱藏暫停按鈕,顯示播放按鈕,調用Phonon中的pause()函數,將播放暫停。
5)下一首
當點(diǎn)擊下一首按鈕時(shí),調用nextFile()函數,并且當歌曲播放完之后會(huì )產(chǎn)生一個(gè)aboutToFinish()信號,這個(gè)時(shí)候也會(huì )調用nextFile()函數。在此函數中調用readinformation()函數,得到下一首的信息,并播放。
評論