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