车载信息文娱体系与报站体系作为地铁列车必不可少的装备显得尤为重要,可以使乘客精确地确认到站站点、缓解庸俗的旅途,也可以轻松地获得各站点的换乘道路、搭车攻略等有意义的信息。
前期车载多媒体播映器多是传统的磁带收音机、CD播映器、DVD播映器等,磁带机的缺陷是音质欠好且因为传动机械的毛病会呈现卡带的现象,现基本已筛选。车载CD播映器最近几年才应用于车载体系,在音质方面有了很大的进步,但只能读取CD光盘不能下载网络媒体,具有歌曲替换不方便的缺陷,一起短少可视作用[1]。DVD是选用MPEG2规范紧缩的全数字影音光盘,它的特色是音质高、画质高、容量大,但本钱相对较高,一起也具有CD播映器媒体文件替换不方便的缺陷[2]。现阶段的车载媒体播映体系多选用嵌入式技能,如以三星S3C2440A处理器为中心的车载信息服务体系,可完结信息提示、导航定位、多媒体播映等功用[3]。其间媒体播映多依据嵌入式流媒体技能,如经过GStreamer和RTP/RTCP流媒体协议规划流媒体播映器[4]。但此办法关于列车这种单一源多接纳端拓扑结构,其带宽占用高,易形成阻塞。
现有公交报站体系仅是音频播送报站,地铁的报站提示是经过三色LED的色彩改变与音频播送来完结的,报站方法单一,且短少换乘道路、搭车攻略等信息的提示,一起与媒体播映体系相别离。例如经过在站台与列车上别离放置RF无线节点来完结主动报站。其体系运用射频与接纳芯片CC1100、语音播映芯片VS1003和单片机操控,经过对每一个车站进行ID编码,运用身份辨认技能完结主动报站功用[5]。此外,也有依据ZigBee技能的定位解决计划,经过放置无线节点组成ZigBee网络,依据射频接纳信号强度指示核算出所需定位的方位[6],此办法关于完结报站功用本钱过高。因为地铁运转于地下,乘客没有可参阅的建筑物标识来判别行将抵达的站点,因而其报站体系十分重要。而完结地铁的主动报站并非易事,它不能像地上公交体系那样经过GPS定位体系[7]来完结车辆的定位与报站。
针对以上问题,本文开发了一种依据PXA270硬件渠道与WinCE嵌入式操作体系的车载媒体报站体系。此体系集媒体播映、站点信息播报与换乘信息提示于一体,媒体文件替换方便快捷。体系选用分布式布局,各车载播映终端经过软件晋级后,完全可以作为车载播送中心运用,因而进一步增加了体系的安稳性。体系选用嵌入式技能,专用性强、特征功用易完结,如可依据站点的详细布局提示乘客换乘道路等。一起选用WinCE嵌入式操作体系,具有实时性好的特色。
1 体系硬件渠道规划
体系选用Xscale PXA270芯片为中心处理器,主频为520 MHz,SDRAM为64 MB,Flash为32 MB[8-9]。因为报站同步性的需求,经过IP组播的办法将站点信息与媒体文件传输至各节车厢,这样既方便了多媒体文件的更新,一起也减少了体系的本钱。体系主体框图如图1所示,选用分布式布局,即在列车的车头放置车载播送中心,完结站点的接纳、媒体文件的存储、经过IP组播将到站离站信息与媒体文件传输至各节车厢。在各节车厢放置车载播映终端,担任接纳站点信息与媒体文件,并完结多媒体播映与站点信息的播送报站功用。一起各节车厢的车载播映终端也可以作为车载播送中心进行作业,这样体系愈加安稳牢靠。
1.1 车载播送中心
车载播送中心放置在车头,担任站点信息与媒体文件的播送,其框图如图2所示。U盘担任存储媒体文件,触摸屏用于播映列表的制造与替换,按键则用于离站的信号触发,网络操控器则担任将站点信息与媒体文件传输至各车载播映终端。
1.2 车载播映终端
车载播映终端担任媒体文件与报站信息的接纳和播映,其框图如图3所示。网络操控器用于接纳报站信息与媒体文件,U盘用于存储各站点的报站音频与信息提示文件,LCD则用于视频与站点信息的显现,喇叭用于音频的播映。
1.3 站台节点与车载节点
站台节点选用STC89C52单片机为微处理器,经过其P0口衔接8位拨码开关,完结对各站点的编码标识。NRF905模块与STC89C52单片机之间经过SPI串行外设接口通讯,STC89C52 P1.4~P1.7引脚别离与NRF905模块的MISO、MOSI、SCK和CSN引脚相连,经过C程序模仿SPI时序完结数据的传输。站点的标识经过NRF905模块发送。站台节点原理图如图4所示。
车载节点上的NRF905模块担任接纳站点标识,并经过串口将站点标识数据传输至车载播送中心。NRF905模块的衔接办法同站台节点。车载节点原理图如图5所示。
2 体系软件构建
2.1 操作体系的挑选与定制
WinCE是微软公司嵌入式、移动核算渠道的根底,它是一个敞开的、可晋级的嵌入式操作体系[10]。WinCE是从全体上为有限资源渠道规划的多线程、完好优先权、多任务的操作体系,模块化的规划使WinCE体系可大可小,具有很好的安稳性与移植性;支撑多种外围硬件与设备,图形界面超卓,其强壮的图形界面开发才能是其他嵌入式操作体系所不具备的,因而很合适作为车载渠道的操作体系。
运用WinCE进行嵌入式体系开发的首要作业是操作体系的定制,即依据实际需求进行裁剪、增加所需的组件与驱动,以及装备文件的修正。体系定制[11]的首要进程如下:
(1)创立新工程
经过微软供给的Platform Builder5.0新建工程,在挑选BSP包时,挑选开发板供给的XSBASE270:ARMV4I。因为此体系的首要功用是多媒体的解码播映,因而规划模板挑选为Digital Media Receiver。之后依据实际需求挑选相应的组件完结工程的创立。
(2)装备渠道
此进程首要是增加相关组件,是整个定制车载多媒体体系进程中的要点。其间首要有Usb Activesync(File Sync)、USB Mass Storage、中文字体(Chinese[Simplifiled])、Fat File System、键盘驱动(用于按键触发)、网卡驱动(用于网络传输)、触摸屏驱动(用于多功用操作)、DirectShow组件以及mp3、MPEG-1的解码Filter(用于媒体播映)等。经过Platform Builder 5.0编译生成的NK.bin文件下载至开发渠道。
(3)导出SDK
导出的车载多媒体体系SDK用于在PC宿主机上经过Visual Studio 2005开发车载播送中心端MyNetSend以及车载播映终端MyNetPlayer应用程序。首要Configure SDK对SDK进行相应的装备,之后Build SDK等候完结后将生成的SDK装置于PC宿主机。
2.2 软件作业流程
车载播送中心完结媒体文件的IP组播发送、播映列表制造、站点信息接纳和按键触发报站功用。详细流程如图6所示。
MyNetSend发送端程序发动后首要进行页面的初始化、播映列表的加载,之后发动发送线程,将列表中的文件顺次组播发送。当接纳到到站信号后将发送线程挂起,之后调用进站信息发送函数,等候报站音频播映结束后康复发送线程。当有按键按下时发生WM_KEYDOWN音讯,再将发送线程挂起,之后调用离站信息发送函数,等候报站音频播映结束后康复发送线程。如此往复循环。
车载播映终端担任媒体文件的接纳与播映、语音报站以及到站与换乘信息提示。详细流程如图7所示。MyNetPlayer接纳端程序发动后创立DirectShow的滤波器链表FilterGraph,发动接纳线程,解析接纳到的组播报的报头,如果是DATA_MEDIA则将数据报经过DirectShow技能解码播映;如果是ARRIVE**则向窗口类发送WM_ARRIVE**音讯,窗口类接纳到对应的到站音讯后则调用对应的到站处理函数,即播映到站提示音频与显现到站与换乘提示信息;如果是LEAVE**则向窗口类发送WM_LEAVE**音讯,窗口类接纳到对应的出站音讯后则调用相应的出站处理函数,即播映出站提示音频与下一站的换乘提示信息。
2.3 功用完结
2.3.1 媒体文件的IP组播与接纳
IP组播是经过运用特定的IP组播地址,将IP数据报传输到一个组播群组,一切参加该组的网络接纳者均可以收到这份数据,这样极大地减小了网络负载。媒体文件的组播是经过CMulticastAdmin类来完结的,详细进程如下:
(1)发送端
①创立组播组
mMulticaster->CreateMulticaster();
②获取媒体路径名
SourceFile=mProgramListCtrl.GetItemText(NowListNum,1);
③翻开媒体文件
m_objFile.Open(m_strSourceFile,CFile::modeRead|CFile::typeBinary)
④读取媒体文件数据
nRead=m_objFile.Read(pBuf+sizeof(MSG_HEADER),MPEG1_PACK);
⑤设置数据报报头
pMsg->nMsgType=DATA_MEDIA;
⑥组播
Multicast(pBuf,nMsgSize);
(2)接纳端
①敞开接纳线程
m_pReceiver->StartReceiving();
②接纳数据
nret=Receive(buff,nMsgSize);
③解析报头
PMSG_HEADER pMsg=(PMSG_HEADER)buff;
nMsgType=pMsg->nMsgType;
2.3.2 DirectShow解码播映
DirectShow是微软公司在ActiveMovie和Video for Windows的根底上推出的新一代依据COM的流媒体处理的开发包[12]。DirectShow运用Filter Graph的模型来办理整个数据流的处理进程,各个Filter在Filter Graph中按必定的次序衔接成一条“流水线”协同作业。依照功用区分,Filter大致分为三类:Source Filters、Transform Filters和Rendering Filters。首要经过Source Filters担任获得网络组播数据,然后将数据往下传输,之后经Transform Filters进行数据的格局转化、传输,最终Rendering Filters将数据传送给显现与音频设备进行多媒体的演示。接纳端MyNetPlayer进行解码播映的进程如下:
(1)创立滤波器链表办理器m_pGB
HRESULT hr=CoCreateInstance(CLSID_FilterGraph,
NULL,
CLSCTX_INPROC,
IID_IGraphBuilder,
(void**)m_pGB);
(2)查询媒体操控接口
hr=m_pGB->QueryInterface(IID_IMediaControl,(void**)m_pMC);
(3)增加自己制造的接纳网络数据的SourceFilter
hr=m_pGB->AddFilter(m_pSourceReader, NULL);
(4)构建滤波器链表,烘托媒体文件
HRESULT hr=m_pGB->Render(m_pSourceReader->GetPin(0));
(5)进行播映
hr=m_pMC->Run();
2.3.3 主动报站
主动报站是经过向窗口类发送自定义的到站与离站音讯来完结的。当窗口类接纳到到站或离站音讯后再调用相应的音讯处理函数,然后完结主动报站。下面是WM_MESSAGE_ARRIVE1站点1的到站音讯处理函数,其他音讯处理函数与其相似。
LONG CMyNetPlayerDlg::OnMessageARRIVE1(WPARAM wParam, LPARAM lParam)
{
m_pGraph->m_pVW->put_Visible(OAFALSE);
//将视频画面屏蔽
InitMyGraph();
//初始化用于播映mp3音频文件的GraphFilter
bmp.LoadBitmap(IDB_BITMAP1);//加载到站位图
drawbitmap();//显现位图
m_StaText.SetWindowText(L十三号街站到了);
//显现到站信息
HRESULT hr;
long evCode;
hr=pGraph->RenderFile(L/硬盘/stationin/1.mp3,NULL);//构建滤波器链表,烘托报站音频文件
hr=pControl->Run();//播映
pEvent->WaitForCompletion(INFINITE,evCode);
//等候音频播映结束
pControl->Release();//开释资源
pEvent->Release();
pGraph->Release();
CoUninitialize();
bmp.DeleteObject();
m_pGraph->m_pVW->put_Visible(OATRUE);
//显现原视频画面
return 0;
}
3 体系测验试验
在试验室内模仿列车运转流程进行测验,经过三个开发渠道完结试验,其间之一运转MyNetSend程序作为车载播送中心,其他两个运转MyNetPlayer程序,模仿为车载播映终端。
3.1 车载播送中心的媒体文件发送
车载播送中心经过车载节点接纳站台信息完结到站与离站信息的提示。发送终端软件界面如图8所示,可经过增加与删去按钮进行媒体文件的增加删去,然后完结媒体文件列表的制造,车载播送中心软件则依据该文件列表次序循环播送。其首要特色是依据站台节点发送的站台信息报站,报站精确无误,且当有屡次按键触发时不乱报。
3.2 车载播映终端的媒体播映与主动报站
车载播映终端完结了将接纳的媒体文件解码播映,到站与离站信息的播报。图9为模仿列车运转中(无偶次按键触发、无站台节点信息)播映媒体文件时的显现界面,此刻终端界面底部循环显现日期、时刻、下一站信息和换乘信息,上部播映接纳到的媒体文件,界面简练人性化。
本文提出了依据PXA270微处理器与WinCE嵌入式操作体系的地铁媒体报站体系完结计划,体系可以充沛完结媒体文件的传输播映与到站、离站信息的精确提示。车载播送中心可经过更改播映列表完结媒体文件的更新,既方便快捷又经济。车载播映终端界面简练人性化。一起经过软件晋级可支撑更多种媒体文件的播映。