摘 要: 基于PXA270硬件平臺(tái)與WinCE嵌入式操作系統(tǒng),,采用媒體文件的IP組播傳輸,、DirectShow數(shù)據(jù)解碼播放,、報(bào)站信息的無(wú)線射頻自動(dòng)觸發(fā)技術(shù),實(shí)現(xiàn)列車終端報(bào)站,、多媒體播放和信息提示等功能,,同時(shí)可以實(shí)現(xiàn)車頭與車廂間的車載廣播中心和車載播放終端功能互換,增加了車載系統(tǒng)的可靠性和靈活性,。
關(guān)鍵詞: 多媒體,;嵌入式系統(tǒng);車載系統(tǒng),;地鐵
車載信息娛樂(lè)系統(tǒng)與報(bào)站系統(tǒng)作為地鐵列車必不可少的配置顯得尤為重要,,可以使乘客準(zhǔn)確地確定到站站點(diǎn)、緩解乏味的旅途,,也可以輕松地獲得各站點(diǎn)的換乘路線,、乘車指南等有意義的信息。
早期車載多媒體播放器多是傳統(tǒng)的磁帶收音機(jī),、CD播放器,、DVD播放器等,磁帶機(jī)的缺點(diǎn)是音質(zhì)不好且由于傳動(dòng)機(jī)械的故障會(huì)出現(xiàn)卡帶的現(xiàn)象,,現(xiàn)基本已淘汰,。車載CD播放器最近幾年才應(yīng)用于車載系統(tǒng),在音質(zhì)方面有了很大的提高,,但只能讀取CD光盤不能下載網(wǎng)絡(luò)媒體,,具有歌曲更換不便的缺點(diǎn),同時(shí)缺少可視效果[1],。DVD是采用MPEG2標(biāo)準(zhǔn)壓縮的全數(shù)字影音光盤,,它的特點(diǎn)是音質(zhì)高、畫(huà)質(zhì)高,、容量大,,但成本相對(duì)較高,同時(shí)也具有CD播放器媒體文件更換不便的缺點(diǎn)[2]?,F(xiàn)階段的車載媒體播放系統(tǒng)多采用嵌入式技術(shù),,如以三星S3C2440A處理器為核心的車載信息服務(wù)系統(tǒng),可實(shí)現(xiàn)信息提示,、導(dǎo)航定位,、多媒體播放等功能[3]。其中媒體播放多基于嵌入式流媒體技術(shù),,如通過(guò)GStreamer和RTP/RTCP流媒體協(xié)議設(shè)計(jì)流媒體播放器[4],。但此方式對(duì)于列車這種單一源多接收端拓?fù)浣Y(jié)構(gòu),其帶寬占用高,,易造成堵塞,。
現(xiàn)有公交報(bào)站系統(tǒng)僅是音頻廣播報(bào)站,,地鐵的報(bào)站提示是通過(guò)三色LED的顏色變化與音頻廣播來(lái)實(shí)現(xiàn)的,報(bào)站形式單一,,且缺少換乘路線,、乘車指南等信息的提示,同時(shí)與媒體播放系統(tǒng)相分離,。例如通過(guò)在站臺(tái)與列車上分別放置RF無(wú)線節(jié)點(diǎn)來(lái)實(shí)現(xiàn)自動(dòng)報(bào)站,。其系統(tǒng)使用射頻與接收芯片CC1100、語(yǔ)音播放芯片VS1003和單片機(jī)控制,,通過(guò)對(duì)每一個(gè)車站進(jìn)行ID編碼,,利用身份識(shí)別技術(shù)實(shí)現(xiàn)自動(dòng)報(bào)站功能[5]。此外,,也有基于ZigBee技術(shù)的定位解決方案,,通過(guò)放置無(wú)線節(jié)點(diǎn)組成ZigBee網(wǎng)絡(luò),根據(jù)射頻接收信號(hào)強(qiáng)度指示計(jì)算出所需定位的位置[6],,此方法對(duì)于實(shí)現(xiàn)報(bào)站功能成本過(guò)高,。由于地鐵運(yùn)行于地下,乘客沒(méi)有可參考的建筑物標(biāo)識(shí)來(lái)判斷即將到達(dá)的站點(diǎn),,因此其報(bào)站系統(tǒng)十分重要,。而實(shí)現(xiàn)地鐵的自動(dòng)報(bào)站并非易事,它不能像地面公交系統(tǒng)那樣通過(guò)GPS定位系統(tǒng)[7]來(lái)實(shí)現(xiàn)車輛的定位與報(bào)站,。
針對(duì)以上問(wèn)題,,本文開(kāi)發(fā)了一種基于PXA270硬件平臺(tái)與WinCE嵌入式操作系統(tǒng)的車載媒體報(bào)站系統(tǒng)。此系統(tǒng)集媒體播放,、站點(diǎn)信息播報(bào)與換乘信息提示于一體,,媒體文件更換方便快捷。系統(tǒng)采用分布式布局,,各車載播放終端通過(guò)軟件升級(jí)后,,完全可以作為車載廣播中心使用,因此進(jìn)一步增加了系統(tǒng)的穩(wěn)定性,。系統(tǒng)采用嵌入式技術(shù),專用性強(qiáng),、特色功能易實(shí)現(xiàn),,如可根據(jù)站點(diǎn)的具體布局提示乘客換乘路線等。同時(shí)采用WinCE嵌入式操作系統(tǒng),,具有實(shí)時(shí)性好的特點(diǎn),。
1 系統(tǒng)硬件平臺(tái)設(shè)計(jì)
系統(tǒng)采用Xscale PXA270芯片為核心處理器,主頻為520 MHz,,SDRAM為64 MB,,F(xiàn)lash為32 MB[8-9],。由于報(bào)站同步性的需要,通過(guò)IP組播的方式將站點(diǎn)信息與媒體文件傳輸至各節(jié)車廂,,這樣既方便了多媒體文件的更新,,同時(shí)也減少了系統(tǒng)的成本。系統(tǒng)主體框圖如圖1所示,,采用分布式布局,,即在列車的車頭放置車載廣播中心,實(shí)現(xiàn)站點(diǎn)的接收,、媒體文件的存儲(chǔ),、通過(guò)IP組播將到站離站信息與媒體文件傳輸至各節(jié)車廂。在各節(jié)車廂放置車載播放終端,,負(fù)責(zé)接收站點(diǎn)信息與媒體文件,,并完成多媒體播放與站點(diǎn)信息的廣播報(bào)站功能。同時(shí)各節(jié)車廂的車載播放終端也可以作為車載廣播中心進(jìn)行工作,,這樣系統(tǒng)更加穩(wěn)定可靠,。
1.1 車載廣播中心
車載廣播中心放置在車頭,負(fù)責(zé)站點(diǎn)信息與媒體文件的廣播,,其框圖如圖2所示,。U盤負(fù)責(zé)存儲(chǔ)媒體文件,觸摸屏用于播放列表的制作與更換,,按鍵則用于離站的信號(hào)觸發(fā),,網(wǎng)絡(luò)控制器則負(fù)責(zé)將站點(diǎn)信息與媒體文件傳輸至各車載播放終端。
1.2 車載播放終端
車載播放終端負(fù)責(zé)媒體文件與報(bào)站信息的接收和播放,,其框圖如圖3所示,。網(wǎng)絡(luò)控制器用于接收?qǐng)?bào)站信息與媒體文件,U盤用于存儲(chǔ)各站點(diǎn)的報(bào)站音頻與信息提示文件,,LCD則用于視頻與站點(diǎn)信息的顯示,,喇叭用于音頻的播放。
1.3 站臺(tái)節(jié)點(diǎn)與車載節(jié)點(diǎn)
站臺(tái)節(jié)點(diǎn)采用STC89C52單片機(jī)為微處理器,,通過(guò)其P0口連接8位撥碼開(kāi)關(guān),,實(shí)現(xiàn)對(duì)各站點(diǎn)的編碼標(biāo)識(shí)。NRF905模塊與STC89C52單片機(jī)之間通過(guò)SPI串行外設(shè)接口通信,,STC89C52 P1.4~P1.7引腳分別與NRF905模塊的MISO,、MOSI、SCK和CSN引腳相連,,通過(guò)C程序模擬SPI時(shí)序完成數(shù)據(jù)的傳輸,。站點(diǎn)的標(biāo)識(shí)通過(guò)NRF905模塊發(fā)送。站臺(tái)節(jié)點(diǎn)原理圖如圖4所示,。
車載節(jié)點(diǎn)上的NRF905模塊負(fù)責(zé)接收站點(diǎn)標(biāo)識(shí),,并通過(guò)串口將站點(diǎn)標(biāo)識(shí)數(shù)據(jù)傳輸至車載廣播中心,。NRF905模塊的連接方式同站臺(tái)節(jié)點(diǎn)。車載節(jié)點(diǎn)原理圖如圖5所示,。
2 系統(tǒng)軟件構(gòu)建
2.1 操作系統(tǒng)的選擇與定制
WinCE是微軟公司嵌入式,、移動(dòng)計(jì)算平臺(tái)的基礎(chǔ),它是一個(gè)開(kāi)放的,、可升級(jí)的嵌入式操作系統(tǒng)[10],。WinCE是從整體上為有限資源平臺(tái)設(shè)計(jì)的多線程、完整優(yōu)先權(quán),、多任務(wù)的操作系統(tǒng),,模塊化的設(shè)計(jì)使WinCE系統(tǒng)可大可小,具有很好的穩(wěn)定性與移植性,;支持多種外圍硬件與設(shè)備,,圖形界面出色,其強(qiáng)大的圖形界面開(kāi)發(fā)能力是其他嵌入式操作系統(tǒng)所不具備的,,因此很適合作為車載平臺(tái)的操作系統(tǒng),。
利用WinCE進(jìn)行嵌入式系統(tǒng)開(kāi)發(fā)的首要工作是操作系統(tǒng)的定制,即根據(jù)實(shí)際需要進(jìn)行裁剪,、添加所需的組件與驅(qū)動(dòng),,以及配置文件的修改。系統(tǒng)定制[11]的主要步驟如下:
?。?)創(chuàng)建新工程
通過(guò)微軟提供的Platform Builder5.0新建工程,,在選擇BSP包時(shí),選擇開(kāi)發(fā)板提供的XSBASE270:ARMV4I,。由于此系統(tǒng)的主要功能是多媒體的解碼播放,,因此設(shè)計(jì)模板選擇為Digital Media Receiver。之后根據(jù)實(shí)際需要選擇相應(yīng)的組件完成工程的創(chuàng)建,。
?。?)配置平臺(tái)
此過(guò)程主要是添加相關(guān)組件,是整個(gè)定制車載多媒體系統(tǒng)過(guò)程中的重點(diǎn),。其中主要有Usb Activesync(File Sync),、USB Mass Storage、中文字體(Chinese[Simplifiled]),、Fat File System,、鍵盤驅(qū)動(dòng)(用于按鍵觸發(fā))、網(wǎng)卡驅(qū)動(dòng)(用于網(wǎng)絡(luò)傳輸),、觸摸屏驅(qū)動(dòng)(用于多功能操作)、DirectShow組件以及mp3,、MPEG-1的解碼Filter(用于媒體播放)等,。通過(guò)Platform Builder 5.0編譯生成的NK.bin文件下載至開(kāi)發(fā)平臺(tái),。
(3)導(dǎo)出SDK
導(dǎo)出的車載多媒體系統(tǒng)SDK用于在PC宿主機(jī)上通過(guò)Visual Studio 2005開(kāi)發(fā)車載廣播中心端MyNetSend以及車載播放終端MyNetPlayer應(yīng)用程序,。首先Configure SDK對(duì)SDK進(jìn)行相應(yīng)的配置,,之后Build SDK等待完成后將生成的SDK安裝于PC宿主機(jī)。
2.2 軟件工作流程
車載廣播中心完成媒體文件的IP組播發(fā)送,、播放列表制作,、站點(diǎn)信息接收和按鍵觸發(fā)報(bào)站功能。具體流程如圖6所示,。
MyNetSend發(fā)送端程序啟動(dòng)后首先進(jìn)行頁(yè)面的初始化,、播放列表的加載,之后啟動(dòng)發(fā)送線程,,將列表中的文件依次組播發(fā)送,。當(dāng)接收到到站信號(hào)后將發(fā)送線程掛起,之后調(diào)用進(jìn)站信息發(fā)送函數(shù),,等待報(bào)站音頻播放結(jié)束后恢復(fù)發(fā)送線程,。當(dāng)有按鍵按下時(shí)產(chǎn)生WM_KEYDOWN消息,再將發(fā)送線程掛起,,之后調(diào)用離站信息發(fā)送函數(shù),,等待報(bào)站音頻播放結(jié)束后恢復(fù)發(fā)送線程。如此往復(fù)循環(huán),。
車載播放終端負(fù)責(zé)媒體文件的接收與播放,、語(yǔ)音報(bào)站以及到站與換乘信息提示。具體流程如圖7所示,。MyNetPlayer接收端程序啟動(dòng)后創(chuàng)建DirectShow的濾波器鏈表FilterGraph,,啟動(dòng)接收線程,解析接收到的組播報(bào)的報(bào)頭,,如果是DATA_MEDIA則將數(shù)據(jù)報(bào)通過(guò)DirectShow技術(shù)解碼播放,;如果是ARRIVE**則向窗口類發(fā)送WM_ARRIVE**消息,窗口類接收到對(duì)應(yīng)的到站消息后則調(diào)用對(duì)應(yīng)的到站處理函數(shù),,即播放到站提示音頻與顯示到站與換乘提示信息,;如果是LEAVE**則向窗口類發(fā)送WM_LEAVE**消息,窗口類接收到對(duì)應(yīng)的出站消息后則調(diào)用相應(yīng)的出站處理函數(shù),,即播放出站提示音頻與下一站的換乘提示信息,。
2.3 功能實(shí)現(xiàn)
2.3.1 媒體文件的IP組播與接收
IP組播是通過(guò)使用特定的IP組播地址,將IP數(shù)據(jù)報(bào)傳輸?shù)揭粋€(gè)組播群組,,所有加入該組的網(wǎng)絡(luò)接收者均可以收到這份數(shù)據(jù),,這樣極大地減小了網(wǎng)絡(luò)負(fù)載。媒體文件的組播是通過(guò)CMulticastAdmin類來(lái)實(shí)現(xiàn)的,具體過(guò)程如下:
?。?)發(fā)送端
?、賱?chuàng)建組播組
mMulticaster->CreateMulticaster();
?、讷@取媒體路徑名
SourceFile=mProgramListCtrl.GetItemText(NowListNum,,1);
?、鄞蜷_(kāi)媒體文件
m_objFile.Open(m_strSourceFile,,CFile::modeRead|CFile::typeBinary)
④讀取媒體文件數(shù)據(jù)
nRead=m_objFile.Read(pBuf+sizeof(MSG_HEADER),,MPEG1_PACK),;
⑤設(shè)置數(shù)據(jù)報(bào)報(bào)頭
pMsg->nMsgType=DATA_MEDIA,;
?、藿M播
Multicast(pBuf,nMsgSize),;
?。?)接收端
①開(kāi)啟接收線程
m_pReceiver->StartReceiving(),;
?、诮邮諗?shù)據(jù)
nret=Receive(buff,nMsgSize),;
?、劢馕鰣?bào)頭
PMSG_HEADER pMsg=(PMSG_HEADER)buff;
nMsgType=pMsg->nMsgType,;
2.3.2 DirectShow解碼播放
DirectShow是微軟公司在ActiveMovie和Video for Windows的基礎(chǔ)上推出的新一代基于COM的流媒體處理的開(kāi)發(fā)包[12],。DirectShow使用Filter Graph的模型來(lái)管理整個(gè)數(shù)據(jù)流的處理過(guò)程,各個(gè)Filter在Filter Graph中按一定的順序連接成一條“流水線”協(xié)同工作,。按照功能劃分,,F(xiàn)ilter大致分為三類:Source Filters、Transform Filters和Rendering Filters,。首先通過(guò)Source Filters負(fù)責(zé)取得網(wǎng)絡(luò)組播數(shù)據(jù),,然后將數(shù)據(jù)往下傳輸,之后經(jīng)Transform Filters進(jìn)行數(shù)據(jù)的格式轉(zhuǎn)換,、傳輸,,最后Rendering Filters將數(shù)據(jù)傳送給顯示與音頻設(shè)備進(jìn)行多媒體的演示。接收端MyNetPlayer進(jìn)行解碼播放的過(guò)程如下:
?。?)創(chuàng)建濾波器鏈表管理器m_pGB
HRESULT hr=CoCreateInstance(CLSID_FilterGraph,,
NULL,
CLSCTX_INPROC,
IID_IGraphBuilder,,
?。╲oid**)&m_pGB);
?。?)查詢媒體控制接口
hr=m_pGB->QueryInterface(IID_IMediaControl,(void**)&m_pMC),;
?。?)添加自己制作的接收網(wǎng)絡(luò)數(shù)據(jù)的SourceFilter
hr=m_pGB->AddFilter(m_pSourceReader, NULL),;
?。?)構(gòu)建濾波器鏈表,渲染媒體文件
HRESULT hr=m_pGB->Render(m_pSourceReader->GetPin(0)),;
?。?)進(jìn)行播放
hr=m_pMC->Run();
2.3.3 自動(dòng)報(bào)站
自動(dòng)報(bào)站是通過(guò)向窗口類發(fā)送自定義的到站與離站消息來(lái)實(shí)現(xiàn)的,。當(dāng)窗口類接收到到站或離站消息后再調(diào)用相應(yīng)的消息處理函數(shù),,從而實(shí)現(xiàn)自動(dòng)報(bào)站。下面是WM_MESSAGE_ARRIVE1站點(diǎn)1的到站消息處理函數(shù),,其他消息處理函數(shù)與其類似,。
LONG CMyNetPlayerDlg::OnMessageARRIVE1(WPARAM wParam, LPARAM lParam)
{
m_pGraph->m_pVW->put_Visible(OAFALSE),;
//將視頻畫(huà)面屏蔽
InitMyGraph(),;
//初始化用于播放mp3音頻文件的GraphFilter
bmp.LoadBitmap(IDB_BITMAP1);//加載到站位圖
drawbitmap(),;//顯示位圖
m_StaText.SetWindowText(L"十三號(hào)街站到了"),;
//顯示到站信息
HRESULT hr;
long evCode,;
hr=pGraph->RenderFile(L"/硬盤/stationin/1.mp3",,NULL);//構(gòu)建濾波器鏈表,,渲染報(bào)站音頻文件
hr=pControl->Run(),;//播放
pEvent->WaitForCompletion(INFINITE,&evCode),;
//等待音頻播放完畢
pControl->Release(),;//釋放資源
pEvent->Release();
pGraph->Release(),;
CoUninitialize(),;
bmp.DeleteObject();
m_pGraph->m_pVW->put_Visible(OATRUE);
//顯示原視頻畫(huà)面
return 0,;
}
3 系統(tǒng)測(cè)試實(shí)驗(yàn)
在實(shí)驗(yàn)室內(nèi)模擬列車運(yùn)行流程進(jìn)行測(cè)試,,通過(guò)三個(gè)開(kāi)發(fā)平臺(tái)完成實(shí)驗(yàn),其中之一運(yùn)行MyNetSend程序作為車載廣播中心,,其余兩個(gè)運(yùn)行MyNetPlayer程序,,模擬為車載播放終端。
3.1 車載廣播中心的媒體文件發(fā)送
車載廣播中心通過(guò)車載節(jié)點(diǎn)接收站臺(tái)信息實(shí)現(xiàn)到站與離站信息的提示,。發(fā)送終端軟件界面如圖8所示,,可通過(guò)添加與刪除按鈕進(jìn)行媒體文件的添加刪除,從而完成媒體文件列表的制作,,車載廣播中心軟件則根據(jù)該文件列表順序循環(huán)廣播,。其主要特點(diǎn)是根據(jù)站臺(tái)節(jié)點(diǎn)發(fā)送的站臺(tái)信息報(bào)站,報(bào)站準(zhǔn)確無(wú)誤,,且當(dāng)有多次按鍵觸發(fā)時(shí)不亂報(bào),。
3.2 車載播放終端的媒體播放與自動(dòng)報(bào)站
車載播放終端完成了將接收的媒體文件解碼播放,到站與離站信息的播報(bào),。圖9為模擬列車運(yùn)行中(無(wú)偶次按鍵觸發(fā),、無(wú)站臺(tái)節(jié)點(diǎn)信息)播放媒體文件時(shí)的顯示界面,此時(shí)終端界面底部循環(huán)顯示日期,、時(shí)間,、下一站信息和換乘信息,上部播放接收到的媒體文件,,界面簡(jiǎn)潔人性化,。
本文提出了基于PXA270微處理器與WinCE嵌入式操作系統(tǒng)的地鐵媒體報(bào)站系統(tǒng)實(shí)現(xiàn)方案,系統(tǒng)能夠充分完成媒體文件的傳輸播放與到站,、離站信息的準(zhǔn)確提示,。車載廣播中心可通過(guò)更改播放列表完成媒體文件的更新,既方便快捷又經(jīng)濟(jì),。車載播放終端界面簡(jiǎn)潔人性化,。同時(shí)通過(guò)軟件升級(jí)可支持更多種媒體文件的播放。
參考文獻(xiàn)
[1] AIGNER M,, BEHRENDS E,, STERN M. Von pythagoras zum CD player[J]. The Mathematical Intelligencer, 2003,,25(3):60-62.
[2] WALKER K,, MARTENS W L. Perception of audio-gennerated and custom motion programs in multimedia display of action-oriented DVD films[J]. Lecture Notes in Computer Science, 2006,,4129:1-11.
[3] 田仲富,,吳連香,,黃興,等.基于ARM9的車載信息服務(wù)系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,,2011,,30(8):26-29.
[4] 孟凡飛,劉金海,,吳宗澤.基于GStreamer的嵌入式流媒體播放器的設(shè)計(jì)[J].微計(jì)算機(jī)信息,,2010,26(7-2):31-32.
[5] 李會(huì)聰.基于有源RFID的自動(dòng)報(bào)站系統(tǒng)研究[J].現(xiàn)代電子技術(shù),,2010,,23:155-157.
[6] BOE J. Zigbee localization solution[J]. Electronic Design & Application Word-Nikkei Electronics China, 2008(1):85-86.
[7] ALLA A N A,, RAUF M, FAKHARUDDIN A. A novel identification and monitoring technique of multi ID public transport for station reporting[J]. Scientific Research and Essays,, 2011,,6(10):2129-2136.
[8] 羅嶸,何苦.H.264軟件解碼器在PXA270平臺(tái)上的優(yōu)化[J].電子技術(shù)應(yīng)用,,2008,,34(12):45-49.
[9] Intel Corporation. Intel PXA27x processor family developer′s manual. 2005.
[10] 楊會(huì)麗,龐志峰,,高貴龍.基于WINCE的嵌入式圖像處理系統(tǒng)[J].微計(jì)算機(jī)信息,,2010,26(5-2):196-198.
[11] 張晶,,李心廣.基于Intel PXA270的WinCE操作系統(tǒng)移植[J].微計(jì)算機(jī)信息,,2008,24(5-2):39-41.
[12] Visual C++音頻/視頻處理技術(shù)及工程實(shí)踐[M].北京:電子工業(yè)出版社,,2009:234-252.