当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于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所支持的所有媒体格式,播放界面友好,易于操作,可以投入实际的市场应用。

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

近日,一个存在于Windows Mark of the Web (MotW)中的零日漏洞被发现,并正在被攻击者积极利用。但有趣的是,在微软官方还没有对该漏洞做出修复之前,第三方平台0patch就提供了该漏洞的修复补丁。据...

关键字: PATCH Windows 微软 APP

U-Boot,全称Universal Boot Loader,是遵循GPL条款的从FADSROM、8xxROM、PPCBOOT逐步发展演化而来的 开放源码项目。U-boot,是一个主要用于嵌入式系统的引导加载程序,可以支...

关键字: U-Boot GPL 嵌入式操作系统

即将与Farfetch合并的奢侈时尚电商平台Yoox Net-a-Porter日前宣布Alison Loehnis为临时首席执行官,任命自10月31日起生效。Alison Loehnis于2007年首次加入Net-a-P...

关键字: NET TE ISO NI

上海2022年9月29日 /美通社/ -- 9月26日下午,蓝科与普华永道共同策划的【日企财务沙龙】在位于上海湖滨路的普华永道创新中心顺利举办。 "CFO在未来应该被称作首席未来官(Chief Future...

关键字: 数字化 NET CAN FUTURE

(全球TMT2022年9月22日讯)Granite River Labs(简称"GRL")日前宣布,其位于中国东莞的实验室已获英特尔公司(Intel® Corporation)授权,可为Windows系统平台开展Thu...

关键字: Windows THUNDERBOLT ST OS

GRL东莞实验室将与上海和台北实验室一同,提供Windows Host认证服务 加利福尼亚州圣克拉拉市2022年9月22日 /美通社/ -- 高速信号和充电技术测...

关键字: Windows THUNDERBOLT USB OS

(全球TMT2022年9月15日讯)IBM于美国东部时间9月13日发布其下一代LinuxONE服务器,这是一个具有高度扩展性的基于Linux和Kubernetes的平台,旨在为企业提供所需的可扩展性,使其能用一个单一系...

关键字: IBM Linux NET 可扩展性

(全球TMT2022年8月23日讯)亚马逊云科技 (Amazon Web Services)宣布,三七互娱公司将海外游戏全球支撑平台业务全面迁移到亚马逊云科技,助力实现海外业务高速、高质量发展。三七互娱是全球领先的上市...

关键字: 亚马逊 网络 NET TE

上海2022年8月17日 /美通社/ -- 近日,蓝科中国正式发布LucaNet一体化财务智能平台轻量版(LucaNet Lite)。这是一款专为中小型集团打造的集数据整合、报表合并及财务分析报告输出为一体的轻量级财务绩...

关键字: CAN NET LITE BSP

(全球TMT2022年8月17日讯)近日,蓝科中国正式发布LucaNet一体化财务智能平台轻量版(LucaNet Lite)。这是一款专为中小型集团打造的集数据整合、报表合并及财务分析报告输出为一体的轻量级财...

关键字: CAN NET BSP LITE

嵌入式教程

6897 篇文章

关注

发布文章

编辑精选

技术子站

关闭