嵌入式系统大作业报告基础题.docx
《嵌入式系统大作业报告基础题.docx》由会员分享,可在线阅读,更多相关《嵌入式系统大作业报告基础题.docx(18页珍藏版)》请在冰豆网上搜索。
嵌入式系统大作业报告基础题
目录
一、需求分析1
1.1意义1
1.2发展情况1
1.3开发的技术目的1
二、系统开发思想和开发环境1
2.1系统开发思想1
2.2开发环境2
2.3采用的技术及特点2
三、开发模块划分及之间的接口描述和说明2
3.1模块及功能3
3.2模块说明(流程图)3
3.3接口描述4
四、核心代码及其说明5
五、程序运行5
5.1运行配置8
5.2运行界面9
六、系统优化及分析12
七、成员工作内容、其他需要描述的部分,如技术创新点、系统特点等12
八、心得体会12
多媒体软件
一、需求分析
1.1意义
多媒体技术(MultimediaTechnology)是利用计算机对文本、图形、图像、声音、动画、视频等多种信息综合处理、建立逻辑关系和人机交互作用的技术。
如今,多媒体技术得到迅速发展,多媒体系统的应用更以极强的渗透力进入人类生活的各个领域,如游戏、教育、档案、图书、娱乐、艺术、股票债券、金融交易、建筑设计、家庭、通讯等等。
其中,运用最多最广泛也最早的就是电子游戏,千万青少年甚至成年人为之着迷,可见多媒体的威力。
大商场、邮局里是电子导购触摸屏也是一例,它的出现极大地方便了人们的生活。
近年来又出现了教学类多媒体产品,一对一专业级的教授,使莘莘学子受益匪浅。
正因为如此,许多有眼光的企业看到了这一形式,纷纷运用其做企业宣传之用甚至运用其交互能力加入了电子商务,自助式维护,教授使用的功能,方便了客户,促进了销售,提升了企业形象,扩展了商机,在销售和形象二方面都获益。
1.2发展情况
多媒体软件已经成为人们生活中不可或缺的必备品。
1.3开发的技术目的
图片播放器是一个简洁实用的图片自动播放软件,用于欣赏图片的播放。
通过图片播放器这个软件用户可以浏览图片文件,并且图片播放器具有放大图片和缩小图片的功能,以及旋转图片的功能。
平时我们在windows系统上所用的Windows图片和传真查看器就是集成在WindowsXP操作系统中的一个图片播放器软件,它是我们常用的图片浏览工具。
在未安装其他图片浏览软件之前,系统将默认用它来浏览图片。
它可以帮助用户浏览图片(用户在浏览图片时,系统会自动用图片播放器打开图片显示图片内容。
)或简单处理图片:
①放大或缩小图片:
放大或缩小图片是指在浏览时对图片进行放大或缩小浏览,而图片文件本身不变。
②旋转图片:
拍照时若将数码相机竖着拍摄高、远的景致,拍出来的照片的方向不便于浏览,这时可以将其旋转。
旋转照片可以将图片恢复为正常显示状态。
方便用户浏览。
二、系统开发思想和开发环境
2.1系统开发思想
本次系统的开发是为了将专业知识应用于实践,同时掌握一些图像处理的基本知识和方法,为以后打下良好的基础及做必要的知识储备。
其建设目标为设计一个通用的图像查看和浏览软件,该软件能支持多种不同的图像格式,如BMP、JPEG、PNG等。
这几种图像格式均为在图像处理领域及实际应用中广泛使用的图像格式。
该软件能实现对图片进行读、写、显示等功能,以及图像处理中一些常用的变换算法,如图像的放大、缩小、旋转等功能,并将这些功能集成。
2.2开发环境
硬件环境
CPU:
Pentiun900CPU或以上
内存:
512MB以上内存
硬盘:
40GB以上硬盘
显示器:
VGA显示器或更高
软件环境
操作系统:
WindowsXP
开发工具:
MicrosoftVisualStudio2005、WindowsMobile5.0PocketPCSDK
2.3采用的技术及特点
C++语言
C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“Cplusplus”,“CPP”。
它是一种使用非常广泛的计算机编程语言。
C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。
它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。
WindowsCE
WindowsCE是微软公司嵌入式、移动计算平台的基础,它是一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统,它是精简的Windows95,WindowsCE的图形用户界面相当出色。
WindowsCE被设计成针对小型设备(它是典型的拥有有限内存的无磁盘系统)的通用操作系统,WindowsCE并不是代表一个标准的相同的对所有平台适用的软件。
为了足够灵活以达到适应广泛产品需求,WindowsCE采用标准模式,这就意味着,它能够由一系列软件模式做出选择,从而使产品定制。
DirectShow介绍
DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。
那么,DirectShow能够做些什么呢?
且看,DirectShow为多媒体流的捕捉和回放提供了强有力的支持。
运用DirectShow,我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。
它广泛地支持各种媒体格式,包括Asf、Mpeg、Avi、Dv、Mp3、Wave等等,使得多媒体数据的回放变得轻而易举。
另外,DirectShow还集成了DirectX其它部分(比如DirectDraw、DirectSound)的技术,直接支持DVD的播放,视频的非线性编辑,以及与数字摄像机的数据交换。
更值得一提的是,DirectShow提供的是一种开放式的开发环境,我们可以根据自己的需要定制自己的组件。
三、开发模块划分及之间的接口描述和说明
3.1模块及功能
1、多媒体播放器窗体设计:
窗体由如下控件组成:
标识ID 属性
IDC_WND_VIDEO 静态控件,视频显示窗口。
属性Notify:
TRUE
IDC_PRG_VIDEO 进度条控件,显示播放进度
IDC_BTN_OPEN 按钮控件,打开
IDC_WND_PLAY 按钮控件,播放
IDC_WND_PAUSE 按钮控件,暂停
IDC_WND_STOP 按钮控件,停止
IDC_WND_FULL 按钮控件,全屏
2、播放媒体文件:
(1)、进入多媒体播放器界面后,点击“open”按钮,打开文件浏览器,浏览媒体文件,打开媒体文件
(2)、打开媒体文件后,点击“play”按钮,播放多媒体文件。
同时可通过“pause”按钮暂停多媒体文件的播放,“stop”按钮停止多媒体文件的播放,“fullscreen”按钮全屏播放多媒体文件。
3.2模块说明(流程图)
否
否
否
是
是
是
3.3接口描述
接口名称 接口描述
IGraphiBuilder 负责filter Graph的创建,建立过滤器图。
IMediaControl 控制filter graph中的多媒体数据流。
主要方法有Run(运行),pause和
Stop(停止)
IMediaEvent 处理 Filter graph的事件。
IvideoWindow 控制视频窗口属性,设置播放窗口的属性
ImediaSeeking 提供一些简单搜索功能。
方法有setposition和GetCurrent Position
IBasicAudio 使用控制接口
IBasicVideo 图像控制接口
EricMediaControl封装DSHOW播放视频文件
四、核心代码及其说明
1.多媒体播放器窗体设计:
//CEricMeidaPlayerDlg对话框
CEricMeidaPlayerDlg:
:
CEricMeidaPlayerDlg(CWnd*pParent/*=NULL*/)
:
CDialog(CEricMeidaPlayerDlg:
:
IDD,pParent)
{
m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
控件组成:
标识ID 属性
IDC_WND_VIDEO 静态控件,视频显示窗口。
属性Notify:
TRUE
IDC_PRG_VIDEO 进度条控件,显示播放进度
IDC_BTN_OPEN 按钮控件,打开
IDC_WND_PLAY 按钮控件,播放
IDC_WND_PAUSE 按钮控件,暂停
IDC_WND_STOP 按钮控件,停止
IDC_WND_FULL 按钮控件,全屏
2.播放媒体文件:
(1)、初始化多媒体播放器窗口:
代码:
//打开视频文件
BOOLCEricMeidaPlayerDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//设置此对话框的图标。
当应用程序主窗口不是对话框时,框架将自动
//执行此操作
SetIcon(m_hIcon,TRUE);//设置大图标
SetIcon(m_hIcon,FALSE);//设置小图标
//启动定时器,用于更新媒体播放进度
SetTimer(1,1000,NULL);
returnTRUE;//除非将焦点设置到控件,否则返回TRUE
}
(2)、打开媒体文件
代码:
//打开视频文件
voidCEricMeidaPlayerDlg:
:
OnBnClickedBtnOpen()
{
DWORDdwMax=0;
//得到媒体播放窗口
CWnd*pVideoWnd=GetDlgItem(IDC_WND_VIDEO);
//得到进度条窗口
CProgressCtrl*pPrgWnd=(CProgressCtrl*)GetDlgItem(IDC_PRG_VIDEO);
//定义媒体播放文件名
CStringstrFileName;
TCHARszFilters[]=_T("windowsmediavideoFiles(*.wmv)|*.wmv|videoFiles(*.avi)|*.avi|AllFiles(*.*)|*.*||");
CFileDialogfileDlg(TRUE,_T("Openvideofiles"),_T("*.wmv"),
OFN_FILEMUSTEXIST,szFilters,this);
//打开文件选择对话框
if(fileDlg.DoModal()!
=IDOK)
{
return;
}
//得到要播放的视频文件名
strFileName=fileDlg.GetPathName();
//打开视频文件
if(m_VideoControl.OpenFile(strFileName,pVideoWnd->m_hWnd,m_hWnd))
{
//设置视频尺寸
m_VideoControl.FitVideoWindow(1.0);
//得到视频文件时间长度
m_VideoControl.GetDuration(dwMax);
//设置进度条范围
pPrgWnd->SetRange(0,dwMax);
pPrgWnd->SetPos(0);
}
else
{
AfxMessageBox(L"Can'tplaythevideo,becausethesystemcan'tfindsomecodecprogram!
");
}
}
(3)、不同按钮实现不同播放时的动作
代码:
//播放视频
voidCEricMeidaPlayerDlg:
:
OnBnClickedBtnPlay()
{
m_VideoControl.VideoRun();
}
//暂停视频
voidCEricMeidaPlayerDlg:
:
OnBnClickedBtnPause()
{
m_VideoControl.VideoPause();
}
//停止视频
voidCEricMeidaPlayerDlg:
:
OnBnClickedBtnStop()
{
m_VideoControl.VideoStop();
}
//全屏
voidCEricMeidaPlayerDlg:
:
OnBnClickedBtnFull()
{
m_VideoControl.FullScreen();
}
(4)、从全屏切换为正常播放状态
代码:
//视频窗口单击事件
//用于从全屏状态回到正常状态
voidCEricMeidaPlayerDlg:
:
OnStnClickedWndVideo()
{
if(m_VideoControl.GetFullScreenStatus())
{
//切换到正常状态
m_VideoControl.FullScreen();
}
}
(5)、媒体播放时间通知
代码:
//媒体播放事件通知
LRESULTCEricMeidaPlayerDlg:
:
OnNotifyMedia(WPARAMWParam,LPARAMLParam)
{
longlEventCode;
if(m_VideoControl.GetMediaEvent(&lEventCode))
{
//收到播放结束事件
if(lEventCode==EC_COMPLETE)
{
if(m_VideoControl.VideoStop())
{
//
}
}
}
return(LRESULT)0;
}
(6)、进度条处理
代码:
//WM_TIMER,定时器处理函数
voidCEricMeidaPlayerDlg:
:
OnTimer(UINT_PTRnIDEvent)
{
//得到进度条窗口
CProgressCtrl*pPrgWnd=(CProgressCtrl*)GetDlgItem(IDC_PRG_VIDEO);
DWORDdwPos=0;
//得到媒体当前播放进度
m_VideoControl.GetCurrentPos(dwPos);
//设置进度条位置
pPrgWnd->SetPos(dwPos);
CDialog:
:
OnTimer(nIDEvent);
}
五、程序运行
5.1运行配置
(1)、安装WindowsMobile5.0PocketPCSDK
选择MicrosoftVisualStudio界面-工具(T)-设备仿真器管理器,查看安装情况
(2)、在VisualStudio2005界面下,选择WindowsMobile5.0PocketPCSDK(ARMV4I)
(3)、点击
,启动调试程序
(4)、等待仿真器界面运行
5.2运行界面
(1)、多媒体播放器初始化界面
(2)、点击“open”按钮,打开文件浏览器,选择文件类型(*.avi)
(3)、选中需要播放的媒体文件,程序自动跳转回初始界面
(4)、点击“play”按钮,播放媒体文件
(5)、点击“pause”按钮,得到文件播放的进度条情况
(6)、点击“stop”按钮,停止多媒体文件播放
(7)、点击“fullscreen”按钮,进行全屏播放
(全屏播放时,双击屏幕多媒体播放器即可回到正常界面的播放状态)
六、系统优化及分析
无
七、成员工作内容、其他需要描述的部分,如技术创新点、系统特点等
孙毅:
1.多媒体播放器窗体设计
2.播放媒体文件模块
八、心得体会
这次大作业的基础题我选择的是多媒体播放器这个题目,要求是能按照实验指导基本完成多媒体播放器的功能。
在制作的过程中,我遇到过一些问题,实验指导上的一些代码是有误的,于是我通过和同学的交流,以及在网上去查询一些资料,解决了这些问题。
同时在配置环境的时候,我还遇到过运行出来的程序是乱码,中文无法显示等问题,经查询资料后,才知道WindowsMobile5.0PocketPCSDK的版本会导致这个问题,因为这个SDK是不支持中文的,如果需要支持中文的话,还需要下载带有CHS的SDK版本。
而这些在同学的机器上都是可以的,因为VisualStudio2008是自带这些SDK的。
于是我只能将控件中显示中文字的部分,改成了英文,这才顺利解决了显示乱码的问题。
通过这次大作业的学习,我了解了DirectShow这一款开发包的功能,也学习到了许多wince的知识,受益匪浅。