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

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

深圳2024年4月17日 /美通社/ -- 今日,华为举办全球分析师大会,在"加速迈向网络智能化"主题论坛中,华为数据通信产品线副总裁赵志鹏发表了主题演讲,阐述了华为全面引入AI技术,从组件级、任务级...

关键字: NET 华为 智能化 网络

德国斯图加特和加利福尼亚州普莱森顿2024年4月16日 /美通社/ -- 全球高科技设施设计、工程和交付的领先企业Exyte宣布,计划收购全球领先的安装服务、设备和技术设施管理提供商—Kinetics集团(简称"Kine...

关键字: NET TI TE IC

好用、高效的多合一传感器开发工具,支持给新一代高科技 MEMS 传感器产品开发应用软件

关键字: 传感器 Windows MacOS

双系统将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对双系统的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 双系统 Windows Linux

今天,小编将在这篇文章中为大家带来Windows 11系统的有关报道,通过阅读这篇文章,大家可以对Windows 11系统具备清晰的认识,主要内容如下。

关键字: Windows 操作系统

本文中,小编将对嵌入式操作系统予以介绍,如果你想对它的详细情况有所认识,或者想要增进对它的了解程度,不妨请看以下内容哦。

关键字: 嵌入式 嵌入式操作系统 操作系统

在下述的内容中,小编将会对嵌入式操作系统的相关消息予以报道,如果嵌入式操作系统是您想要了解的焦点之一,不妨和小编共同阅读这篇文章哦。

关键字: 嵌入式 嵌入式操作系统 操作系统

(全球TMT2023年9月8日讯)亚马逊云科技日前在一年一度的存储服务创新日上宣布推出诸多亚马逊云科技存储服务的新功能,其中重点包括为支持人工智能/机器学习、大数据分析等数据密集型工作负载进一步提升Amazon Ela...

关键字: 亚马逊 FOR IC Windows

此芯科技自去年加入Linaro Windows on Arm工作组之后,发起成立了Client PC合作项目,旨在推动基于UEFI + ACPI标准的Arm PC启动架构标准化,通过统一的系统固件支持Windows和Li...

关键字: Arm PC生态 Windows Linux操作系统

北京2023年3月13日 /美通社/ -- 近日,亚马逊云科技宣布针对其广泛的存储服务推出诸多可帮助客户进一步优化成本的新功能,功能更新涵盖Amazon Simple Storage Service(Amazo...

关键字: 亚马逊 STORAGE LM Windows
关闭
关闭