淺談基于Linux嵌入式操作系統(tǒng)掌上娛樂系統(tǒng)設(shè)計(jì)方案
本模塊是建立一個(gè)QtGUI程序。然后用一個(gè)label控件來播放視屏,用一個(gè)進(jìn)度條顯示播放的進(jìn)度,用按鍵顯播放,暫停,上一首,下一首,停止和添加資源文件。然后用一個(gè)Qprocess在后臺執(zhí)行MPlayer,并把label的WID傳給它。然后把MPlayer的輸入輸出重定向,把原本從標(biāo)準(zhǔn)輸入接收命令變成從GUI的接收命令。
3。1。3播放功能設(shè)計(jì)
播放器實(shí)現(xiàn)的軟件流程圖如圖4所示:
圖4播放器軟件流程圖。
通過定義一個(gè)QProcess對象調(diào)用已編譯好的Mplayer。
QProcess*process=newQProcess();
process->setProcessChannelMode(QProcess::MergedChannels);
Process->start(mplayer–ac–madxxxxx);
在命令中添加-slave和-quiet就可以通過命令設(shè)置Mplayer實(shí)現(xiàn)相應(yīng)的功能。Process->start(mplayer–slave–quiet–ac–madxxxxx)。
下面對播放器的暫停播放功能和音量調(diào)節(jié)進(jìn)行介紹。
①播放暫停功能設(shè)計(jì)
通過這段代碼可以設(shè)置Mplayer暫停:process->write(pause);執(zhí)行這段代碼的時(shí)候在播放狀態(tài)下就會(huì)暫停,暫停狀態(tài)下就會(huì)繼續(xù)播放。
②音量調(diào)節(jié)
下面代碼即可實(shí)現(xiàn)音量調(diào)節(jié)的功能:
Process->write(volume-1);//音量減小;
Process->write(volume+1);//音量增加;
Process->write(volumeXX1);//音量設(shè)置成指定值
該系統(tǒng)使用如下代碼實(shí)現(xiàn)音量調(diào)節(jié):
QStringcmd=volume+QString::number(value)+1;
process->write(cmd。toLocal8Bit()。data());
系統(tǒng)最終實(shí)現(xiàn)的實(shí)驗(yàn)效果圖如圖5所示:
圖5播放器模塊實(shí)驗(yàn)結(jié)果圖
3。2游戲模塊的設(shè)計(jì)
本系統(tǒng)設(shè)計(jì)了一個(gè)打磚塊游戲。通過建立一個(gè)打磚塊的游戲類CannonField,包含角度intangle、力度intforce、是否正在射擊boolisShooting等成員,具有設(shè)置角度setAngle(intangle)、設(shè)置力度setForce(intforce)、射擊shoot()、運(yùn)動(dòng)軌跡shotRect()、游戲控制newTarget()、setGameOver()、restartGame()等槽函數(shù),能發(fā)出擊中hit()、未擊中missed()、角度變化angleChanged(intnewAngle)力度變化forceChanged(intnewForce)等信號。
游戲開始時(shí)使用隨機(jī)函數(shù)在指定區(qū)域內(nèi)顯示一個(gè)磚塊,點(diǎn)擊射擊按鈕時(shí)通過setAngle和setForce設(shè)置的角度和力度,使用shoot()進(jìn)行射擊,通過發(fā)出的擊中hit()或未擊中missed()信號來作出相應(yīng)的動(dòng)作。仿真效果圖如圖6所示:
圖6游戲模塊實(shí)驗(yàn)結(jié)果圖
4總結(jié)
本系統(tǒng)采用開源的Linux操作系統(tǒng)和QT4界面設(shè)計(jì)工具,整個(gè)系統(tǒng)采用模塊化設(shè)計(jì),具有良好的可擴(kuò)展性。硬件平臺采用的是UP-TECHS3C2410DVK1。1嵌入式系統(tǒng),該芯片采用ARM架構(gòu),其獨(dú)特的架構(gòu)設(shè)計(jì)具有功耗低、功能強(qiáng)的特點(diǎn),因此非常適合用于手持式設(shè)備;采用LCD觸摸屏與用戶進(jìn)行交互,使用簡單,符合便攜式終端的發(fā)展趨勢。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論