当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]基于Windows CE.Net 4.2 嵌入式操作系统多媒体播放器的应用研究

引言

随着微电子技术和计算机技术的发展,计算机不断趋向于微型化和嵌入化,使它更广泛地融入人们的工作、生活和娱乐等各个方面。人们已经普遍使用手机、PDA、手持设备和掌上电脑等信息终端来储存和处理各种信息,这正是嵌入式技术应用迅速发展的一个证明。

进入21世纪以来,嵌入式技术逐渐成熟并全面展开,已经成为通信和消费类产品的共同发展方向。在信息家电领域,如网络冰箱、家庭网关、数字机顶盒、数字电视等的发展,使得嵌入式系统正扮演着越来越重要的角色。在个人计算机领域中,嵌入式产品使个人商用、娱乐和通信功能相结合,以自然的人机交互界面和丰富的多媒体处理能力迅速得以推广,并取得了巨大成功,而所有上述产品都离不开嵌入式技术。所以,嵌入式系统的开发,已被人们公认为是一个具有良好发展潜力的行业。

本文介绍了基于Windows CE.Net 4.2 嵌入式操作系统,选用三星公司的SamArmDvk9开发平台(SamArmDvk9是针对S3C2410的高性能开发平台,适合于开发高性能手持式以及便携式智能设备或终端),运用eMbedded Visual C++ 4.0软件开发多媒体视频/音频播放器的完整流程。相对于PC上的多媒体播放器,通常的嵌入式播放器功能比较少,可以播放的类型也不多。本文介绍的基于Windows CE.Net 4.2的多媒体播放器可以播放.wmv,.mpg,.asf等格式的视频文件,可以播放.wma,.mp3,.wav等格式的音频文件,囊括了目前比较流行的媒体文件格式。闪存(SD CARD)中的媒体文件将被自动列在主界面中的列表框中,单击按钮就可以播放列表框中全部媒体文件,而不需要用户进行添加。在播放界面可以实现暂停,停止,重播,音量调节等功能。音量调节以位图形式形象的加以显示。下面具体介绍实现的步骤。

1、 Windows CE.Net 4.2 内核定制及SDK的导出

Windows CE为开发人员提供了一个相对不错的集成开发环境(IDE):Platform Builder。开发人员可以在这个IDE中根据开发的需要完成操作系统镜像的定制、编译与调试。

1.1、启动PB,前期设置

选择Flie菜单中的Manage Catalog Features,将随开发板提供的2410wince4.2bsp文件夹下的 smdk2410.cec导入工程。这样在PB的向导中和Catalog中就会出现针对开发板的 Samsung SMDK2410:ARMV4目录。

1.2、新建工程,完成工程向导,注意要选择SAMSUMG SMDK2410:ARMV4 BSP。

1.3、添加组件

本工程是开发媒体播放器,所以要将Catalog/Core OS/Multimedia Technologies下面的组件加入工程。包括Basic Multimedia文件夹下的组件和Multimedia Components文件夹下的组件。后一个文件夹里包含Audio Codecs and Renderers(音频编码解码器)和Video Codecs and Renderers(视频编码解码器)。

1.4、点击Build菜单中的Build Platform,PB将自动完成整个系统镜像的定制。

1.5、导出针对定制系统的SDK(Software Deveploerment Kit)是为了编写应用程序,选择Platform菜单中的Configure SDK项,配置过程中选择eMbedded Visual C++ 支持, 最后再点击Platform菜单中Build SDK即可生成后缀名为MSI的SDK文件,直接安装即可在EVC中找到对应的SDK。

2、 应用程序的开发

2.1、eMbedded Visual C++4.0简介

eMbedded Visual C++4.0(EVC)是微软专门针对嵌入式操作系统WINCE开发的集成开发环境。EVC集成开发环境与VC的较为相似,只是在工具栏下面多了一个特性工具栏,用于选择嵌入式设备类型、仿真器类型和CPU类型。在上面介绍的SDK安装完成后便可在此栏中出现并选择。打开EVC,建立一个基于对话框的MFC应用程序mediaplay。

2.2在EVC中加入和注册ActiveMovieControlObject控件

第一步、首先找到要加控件的名称和所在文件夹。在EVC中播放多媒体的控件名称是msdxm.ocx,所在的文件夹是  C:WINDOWSsystem32;

第二步、在EVC的菜单栏点击ProjectAdd to ProjectComponents and Controls,弹出Components and Controls Gallery对话框,点击Add Control,按照上一步骤中的地址找到msdxm.ocx,打开,这样就将控件加入到Registered ActiveX Controls中;

第三步、注册控件:点击开始运行,,键入 regsvr32 C:WINDOWSsystem32msdxm.ocx  确定,过一会有成功注册的信息出现,这样就可以在工程中添加此控件了。

2.3、        媒体文件的寻找

我们的多媒体文件存放在SD卡中,在第一个对话框IDD_MEDIAPLAY_DIALOG(图1)中添加控件ListBox,同时在头文件中定义一个ClistBox的变量m_list。增加一个CmediapalyDlg类的成员函数SearchFile(),用来将SD CARD中的文件列在ListBox中。本函数具体代码如下:

void CMediaplayDlg::SearchFile()

{

file=FindFirstFile(_T("\StorageCard\*.*"),&lpFileData);

       m_list.AddString(lpFileData.cFileName);

BOOL FileEnd=FindNextFile(file,&lpFileData);

/*下面的while循环将SD CARD中所有文件加入ListBox中*/

while(FileEnd != 0)

       {

              CString k=lpFileData.cFileName;

m_list.AddString(k);

              FileEnd=FindNextFile(file,&lpFileData);

       }

}

2.4、        播放全部多媒体文件

第一步、为了使视频范围较大,现增加一个新对话框(图2),将此对话框命名为一个新类CPLAY。在此对话框中单击鼠标右键,选择Insert ActiveX Control,在弹出的对话框中选择ActiveMovieControlObject,这样在CPLAY对话框中就添加了媒体控件,同时在Class View中会自动添加CmediaPlay2的类。现增加一个CMediaplayDlg类的成员函数CONNECT(),用来与CPLAY类联系起来。此函数的功能是将媒体文件的路径找到,再将其传递给CPALY类。同时将MEDIAPLAY对话框隐藏,将PLAY对话框显示出来。

图1 播放器主界面  

第二步、增加一个CPLAY类的成员函数PLAYALL(CString b ),用来实现连续播放。这里用EVC自带的定时函数UINT SetTimer(HWND hWnd, UINT nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc ),来定时测试媒体播放状态,当状态为停止时,表明某一个文件已经播放完毕,则可以取得下面一个媒体文件继续播放了。经测试得知:文件播放完毕处于停止状态的状态值为0(播放时为2,暂停为1),我们设定每过3秒定时检查一次。在MFC ClassWizard中选择CPLAY类,加消息映射WM_TIMER,增加成员函数OnTimer。在void CMediaplayDlg::CONNECT()中已经取得媒体文件的总数目conv,当ii累加到等于conv时,用KillTimer(1)消除定时器,表明所有媒体文件已经播放完毕。

 2.5、音量控制
在IDD_PLAY对话框中增加一个Button(IDC_VOLUME),实现对音量的控制。当点击IDC_BUTTON时,弹出一个新对话框,在此对话框中进行音量的调节,将此对话框命名为IDD_VOLUME(图3),定义为一个新类Volume。因为音量的调节是针对CPLAY类中的具体媒体文件,所以实际音量增加(用函数VolumeAdd()来实现)和音量减小(用函数VolumeSub()来实现)

的两个函数要放在CPLAY类中。

图 3 播放器音量调节界面

在IDD_VOLUME对话框中添加两个Button:IDC_VOLADD,IDC_VOLSUB。当点击按键时,分别调用CPALY类中的VolumeAdd(),VolumeSub()两个函数。为了形象的显示音量大小的变化,在IDD_VOLUME对话框中添加一个静态文本IDC_BMPSHOW,此区域用来显示音量大小的变化。

预先定制两个条形图片,IDB_BACK、IDB_FORE,前一个浅色作为底色,后一个深色作为音量变化的显示。为了实现上述设计思想,现增加一个新类ProgCtrl,在Volume.h中定义:ProgCtrl  m_bmpprog使之与IDC_BMPSHOW联系起来,在MFC ClassWizard 中选择Volume 类,增加 IDC_BMPSHOW的变量m_bmpprog。在ProgCtrl类添加WM_PAINT消息映射。同时在ProgCtrl类中,增加两个函数StepIt(),StepItt(),分别用来显示音量增加、减小的图形显示,可以将调节范围设定从0到100(实际的音量设定从-9640dB~0dB,但小于-4000dB时,音量已经很小,所以我们将音量的调节范围设定为-4000~0对应于0到100的调节区域)。

2.6、暂停、停止、重播功能的实现

这三个功能相对简单,在IDD_PLAY对话框加入Button,添加各自的消息映射处理程序即可。

3.           结束语

本文介绍了基于Windows CE.Net 4.2 嵌入式操作系统开发嵌入式媒体播放器的完整流程,包括操作系统内核定制及SDK的导出、多媒体控件的导入和注册、应用程序的开发过程等。该播放器可以播放Windows CE所支持的所有媒体格式,播放界面友好,易于操作,可以投入实际的市场应用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭