项目名称:多媒体数码相框
项目编号:LinseeGroup2 第 1版 文档编号:LinseeGroup2_PD_001 第 1 册/共 1 册
概要设计
版本:Ver 1.0
东软集团IT人才实训中心
总页数 编制: 23 正文 20 附录 审批: 3 生效日期
修订记录
日期 版本 说明 作者
目录
1.
引言 ............................................................................................................................................... 4 1.1 1.2 2. 3.
术语 ....................................................................................................................................... 4 缩略语 ................................................................................................................................... 4
系统结构 ........................................................................................................................................ 5 模块功能概述 ................................................................................................................................. 6 3.1 3.2
实现机能点 ............................................................................................................................ 6 变更机能点 ............................................................................................................................ 6
4. 模块架构 ........................................................................................................................................ 7 4.1 4.2 4.3
模块内部构成 ......................................................................................................................... 7 模块实现 ................................................................................................................................ 9 变更机能的实现 ................................................................................................................... 13
5. 系统接口设计 ............................................................................................................................... 16 5.1 5.2
外部接口的设计 ................................................................................................................... 16 内部接口的设计 ................................................................................................................... 16
6. 7. 8.
关键数据结构 ............................................................................................................................... 19 限制条件 ...................................................................................................................................... 20 附件 ............................................................................................................................................. 21 8.1 8.2
模块技术点整理 ................................................................................................................... 21 参考文档 .............................................................................................................................. 23
概要设计 版本:Ver 1.0 第4页
1. 引言
该文档主要以《多媒体数码相框需求分析矩阵》为参考,描述了多媒体数码相框的系统结构、模块结构的设计与实现以及相应的接口设计、数据结构设计,并说明了系统运行的软硬件限制条件,旨在为项目详细设计环节和编码实现环节提供依据和规范,为项目详细设计人员和编码人员提供指导。
1.1 术语
表 1-1:技术用语
编号 1 用语 接口 解码 设计模式 数据结构 2 3 4 说明 将信息从已经编码的形式恢复到编码前原状的过程。 一种具有访问一组例程能力的函数 一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 指相互之间存在一种或多种特定关系的数据元素的集合。 1.2 缩略语
表 1-2:缩略语
番号 1 2 3 4
原词 Secure Digital Memory Card Universal Serial BUS Graphic User Interface MPEG_Audio_Layer3 缩写 SD USB GUI MP3 説明 SD卡是一种基于半导体FLASH的新一代记忆设通用串行总线 图形化界面接口 一种音频文件的格式
概要设计 版本:Ver 1.0 第5页
2. 系统结构
多媒体数码相框由我的照片、我的音乐、文件管理、系统设置、时间显示5个功能部分组成,系统结构图如图1所示。
GUI输入设备鼠标、键盘触摸屏我的音乐存储设备内存储器SD卡USB存储设备输出设备显示器时间显示Drivers多媒体数码相框我的照片文件管理系统设置
图1 多媒体数码相框系统结构图
关于系统结构图的几点说明:
1)【我的照片】具有设置背景音乐的功能,因此需要使用【我的音乐】的相关接口。 2)【我的照片】和【我的音乐】使用【文件管理】的相关接口显示文件列表。
3)【系统设置】中对时间和日期的设置、时钟显示方式的设置需要使用【时间显示】的相关设置函数。 4)【我的照片】和【我的音乐】具有时间显示功能,需要使用【时间显示】的相关显示函数。
概要设计 版本:Ver 1.0 第6页
3. 模块功能概述
3.1 实现机能点
■【我的图片】实现图片显示功能,完成图片的12宫格显示、静态显示、循环显示以及背景音乐的设置、时钟的显示,静态显示时实现图片的缩放、旋转、切换,循环显示时实现图片的过渡效果、时间间隔等设置。
■【我的音乐】实现音乐播放功能,完成音乐文件曲名、时长、格式等信息的读取显示,完成歌曲的切换、播放暂停控制,实现播放模式、音乐文件列表的选择以及时钟的显示。
■【时间显示】实现时钟功能,数字时钟、指针时钟两种显示方式可选。
■【系统设置】实现系统设置功能,控制数字时钟、指针时钟的显示方式选择、开机界面的设置以及时间日期的设置。
■【文件管理】实现存储设备选择以及文件的目录浏览功能,内存储器、SD卡、USB接口存储设备可选。
3.2 变更机能点
■ 追加文件操作功能,可进行文件及文件夹的移动、复制、删除操作。 ■ 追加日历显示功能,并提供日期查询。 ■ 追加帮助功能。
概要设计 版本:Ver 1.0 第7页
4. 模块架构
4.1 模块内部构成
多媒体数码相框由我的照片、我的音乐、文件管理、系统设置、时间显示5个模块组成。各模块的构成如下: ?
我的照片
我的照片主要实现照片的显示功能,包括12宫格显示、单张静态显示、循环显示以及相应的设置操作,通过接口调用其他模块的函数实现照片列表的选择、背景音乐播放、时间显示等功能。该模块的结构图如图2所示。
主界面我的照片正在播放照片列表所有照片静态显示上一张下一张音量+音量-【文件管理】文件列表显示子程序【我的音乐】相应子程序图像处理子程序左旋右旋背景音乐【时间显示】相应子程序时钟显示放大缩小动态播放全屏动态显示静态播放播放设置循环/随机过渡效果时间间隔【时间显示】相应子程序时钟显示音量+音量-图例:【我的音乐】相应子程序图片播放模式设置子程序音乐设置循环/随机文件列表静音设置模块子模块数据流
图2 【我的照片】模块结构图
概要设计 版本:Ver 1.0 第8页
? 我的音乐
我的音乐主要实现音乐文件的播放功能,包括播放曲目的基本操作、音乐文件列表的选择以及时间的显示功能。该模块的结构图如图3所示。
主界面我的音乐播放切换音量控制信息显示文件列表文件列表MADPLAY解码程序图例:上下曲切换子程序UDA1341驱动程序数据流截取子程序【文件管理】文件列表显示子程序【时间显示】时钟显示子程序模块子模块数据流
图3 【我的音乐】模块结构图
?
文件管理
文件管理主要实现文件及文件夹的基本操作,如移动、复制、粘贴、删除等。该模块的结构图如图4所示。
主界面文件管理设备选择文件列表文件操作SD卡驱动程序USB存储设备驱动程序内存读写驱动程序文件目录浏览子程序移动操作子程序复制操作子程序删除操作子程序图例:模块子模块数据流
图4 【文件管理】模块结构图
?
系统设置
系统设置主要实现软件的基本设置,包括时间和日期的设置、开机界面的设置以及时钟显示方式的设置,其中时钟有数字时钟和指针时钟两种显示方式可选。该模块的结构图如图5所示。
概要设计 版本:Ver 1.0 第9页
主界面系统设置时间和日期开机界面时钟显示方式时间设置子程序日期设置子程序【文件管理】文件目录显示子程序配置文件设置子程序图例:模块子模块数据流
图5 【系统设置】模块结构图
?
时间显示
时间显示主要实现时钟和日历的显示,并提供日期的查询功能,时钟有指针时钟和数字时钟两种显示方式。该模块的结构图如图5所示。
主界面时间显示日历时钟日期显示子程序图例:日期查询子程序指针时钟子程序数字时钟子程序配置文件读取子程序模块子模块数据流
图6 【时间显示】模块结构图
4.2 模块实现
?
我的照片 ■静态显示:
◇缩放控制:根据放大、缩小功能操作,调用zoomIn()、zoomOut()处理显示图片 ◇旋转控制:调用rotateLeft()、rotateRight()控制图片向左、向右旋转
◇图片切换:根据上一张、下一张操作,调用prePic()、nextPic()显示图片列表中的图片
概要设计 版本:Ver 1.0 第10页
◇选择图片:调用selectFile()选择播放的图片,同时更新播放列表
◇全屏显示:调用fullScreen()将图片显示切换至全屏,通过normalScreen()退出全屏 ◇切换动态:调用dynamicShow()切换图片显示方式到动态显示 ■动态显示:
◇幻灯设置:调用setSlideConfig()设置幻灯播放的效果、切换时间等 ◇选择路径:调用selectFile()选择播放图片的路径,更新播放列表 ◇全屏显示:调用fullScreen()将图片显示切换至全屏 ◇切换静态:调用staticShow()切换图片显示方式到静态显示 静态显示子模块和动态显示子模块的程序实现图如图7、图8所示。
开开开开开开开开开开开开开开rotateAngle=(rotateAngle-90)60开开rotateLeft()开开开开开开scaleCount=scaleCount+0.2开开zoomOut()开开开开开开scaleCount=scaleCount-0.2开开zoomIn()开开开开开开开开rotateAngle=(rotateAngle+90)60开开rotateRight()开开开开开开开开开开开nextPic()开开开开开piclist开开开开开开开开开开开开开开nextPic()开开开开开piclist开开开开开开开开开scaleCount>=1.6scaleCount<=0.4开开开开开开开开开开开开开开开开开开开开开开fullScreen()开开开开开开开开开开开normalScreen()开开开开开开开开开开开开开scaleCount>0.4scaleCount<1.6开开开开开开开开开开开开开dynamicShow()开开开开开开开开开开开开开开开开开开开开开开开开开开开开开开开开开开开开开 图7 静态显示程序实现图
概要设计 版本:Ver 1.0 第11页
开始进入动态显示播放设置全屏显示静态显示音乐控制调用setSlideConfig()函数,设置动态播放效果调用fullScreen()函数,全屏显示图片调用staticShow()函数,切换至静态显示调用我的音乐模块实现背景音乐控制修改slideset中is_random_show、slide_per_time和slide_transition_type,设置动态播放的播放顺序、过渡时间和过渡效果 图8 动态显示实现图
?
我的音乐
■播放:通过调用开源的MADPLAY解码程序对所选中的MP3文件进行解码读入内存,在调用write函数完成播放。
■上下曲切换:利用QstringList类打开MP3歌曲列表,返回当前歌曲文件名。通过文件名比较得到当前歌曲在列表中的排列顺序数值,加1或减1得到下一曲的文件名,然后调用播放功能播放该文件。
■音量调节:通过调用UDA1341的驱动程序的mixer接口的ioctl函数,实现音量的控制功能。 ■音乐文件信息的显示:读取MP3的数据流,截取相关信息并在界面显示。
■播放列表:调用【文件管理】的设备选择程序选择存储设备,调用qdir程序浏览文件目录。 该部分的程序实现图如图9所示。
概要设计 版本:Ver 1.0 第12页
开始“我的音乐”界面点击选项按钮执行相应功能音乐播放/停止创建/结束子进程execl()播放上一曲/下一曲QstringList类,和compare()函数打开文件夹,选择音乐文件调用函数getOpenFileName()获得文件名和路径单曲循环/全部循环/随机播放结束 图9 我的音乐程序实现图
?
时钟
■时间显示:通过调用currentTime()可以显示出系统当前时间。
■时钟显示方式:通过读取配置文件中clockflag的值,选择调用数字或指针时钟显示函数。 时钟显示的程序实现图如图10所示。
开始currentTime () 获得时钟信息读取配置文件中clockflag的数值显示相应时钟displayTime()结束 图10 时钟显示程序实现图
?
系统设置
■时间日期:读取用户输入的时分秒数值和年月日数值,调用adjustdate()函数修改系统的hour、minute、second、
概要设计 版本:Ver 1.0 第13页
year、month、day的数值。
■开机画面:调用select()函数读取用户选定的图片的路径,通过文件写操作将路径写入配置文件。 ■时钟显示方式:通过复选框读取用户对时钟显示方式的选择,修改clockflag的数值,并写入相应的配置文件中。
系统设置模块的程序实现图如图11所示。
开始系统设置界面点击按钮执行相应功能读取年月日数值和时分秒数值调用select()函数读取图片路径读取用户选择调用adjustdate()完成系统时间的修改调用setimage()将路径写入配置文件调用setclockflag()修改clockflag的值并写入配置文件结束 图11 系统设置程序实现图
4.3 变更机能的实现
?
文件操作
点击主界面的文件管理图标,进入存储目录选择界面。点击相应目录(内存储器、USB接口存储设备或者SD卡),进入管理界面,可以对文件进行复制、剪切、删除等操作。
对所选文件与文件夹进行的相关操作中,正常操作有:复制+粘贴,剪切+粘贴,删除。 但如果出现了非常规操作,处理方法如下:
◇目标文件复制后直接进行删除操作:复制内容从buffer中释放,将目标文件/文件夹删除,之后若进行粘贴操作,系统则不进行任何处理。
◇目标文件剪切后直接进行删除操作:剪切内容从buffer中释放,将目标文件/文件夹删除,,之后若进行粘贴操作,系统则不进行任何处理。
◇复制/剪切后的内容可以进行多次粘贴,直到下一次复制/剪切操作后buffer中的内容改变。 文件操作的程序实现如图12所示。
概要设计 版本:Ver 1.0 第14页
开始文件管理界面确定源文件夹路径调用qdir程序复制 readBytes ( )剪切 readBytes ()remove ()删除remove ()确认目标文件夹路径,调用qdir程序确认目标文件夹路径,调用qdir程序粘贴writeBytes () 粘贴writeBytes () 结束 图12文件操作程序实现图
?
日历显示
进入日历显示功能界面,系统调用currentDate()函数获得系统日期,通过调用dayOfWeek () const获得系统日期和相应月份日期的星期数,并调用paintEvent()函数由屏幕显示。当压下返回键时,调用void QButton::pressed ()返回主菜单。输入查询年月用QComboBox(bool rw,QWidget * parent=0,const char * name = 0 )得到查询年月信息,由void QButton::pressed ()发送信号调用dayOfWeek () const,其方式与获得系统日期并打印日历的方式一样。
日历显示的程序实现图如图13所示。
概要设计 版本:Ver 1.0 第15页
开始获得日期信息void currentDate () 调用dayOfWeek () const计算日期星期数显示日历paintEvent()键入日期信息QComboBox(bool rw,QWidget * parent=0,const char * name = 0 )结束
图13 日历显示程序实现图
?
帮助
调用displayhelp()函数显示版权声明和使用说明。
概要设计 版本:Ver 1.0 第16页
5. 系统接口设计
5.1 外部接口的设计
表5-1:【我的照片】外部接口
接口 ShowPicWidget()
功能 供主界面调用,显示【我的图片】界面 表5-2:【我的音乐】外部接口
接口 ShowMusicWidget() playMusict() ioctl () radom() OutputPoint()
功能 供主界面调用,显示【我的音乐】界面 供【我的照片】调用,播放背景音乐 供【我的照片】调用,进行音量控制 供【我的照片】调用,随机播放 供【我的照片】调用,循环播放 表5-3:【文件管理】外部接口
接口 ShowFileWidget() qdir() selectDisk()
功能 供主界面调用,显示【文件管理】界面 供【我的照片】、【我的音乐】、【系统设置】调用,显示文件目录 供【我的照片】、【我的音乐】、【系统设置】调用,存储设备选择 表5-4:【系统设置】外部接口
接口 sysSet() OpenImagePath.txt setClockFlag.txt
功能 供主界面调用,显示【系统设置】界面 供主系统使用,保存开机画面的存储路径 供【时间显示】使用,保存时钟的显示方式 表5-5:【时间显示】外部接口
接口 ShowDTWidget() displayTime()
功能 供主界面调用,显示【时间显示】界面 供【我的照片】、【我的音乐】调用,显示时间 5.2 内部接口的设计
表5-6:【我的照片】内部接口
接口 zoomIn () zoomOut rotateLeft () 功能 缩小图片 放大图片 左旋图片 概要设计 版本:Ver 1.0 第17页
rotateRight() nextPic() prePic() randomPic() updatePiclist() fullScreen() normalScreen() staticShow() dynamicShow() setSlideConfig() showIt() Random() 右旋图片 下一张图片 上一张图片 随机选择图片列表中的图片 更新图片列表 全屏显示 退出全屏 静态显示 动态显示 设置动态播放效果 显示图片 产生随机数 表5-7:【我的音乐】内部接口
接口 open () read() write() close () List() radom() OutputPoint(struct music *,Node) struct music OutputPoint(struct music *) 功能 建立起与硬件间的联系,获得对声卡的访问权 从声卡读取数据 向声卡写入数据,完成音乐的播放 关闭声卡 完成音乐文件构成的链表的遍历 随机播放 单曲循环 全部循环 表5-8:【文件管理】内部接口
接口 qdir() selectDisk() fileCpy() fileCut() filePst() fileDel() 功能 文件目录浏览 存储设备选择 复制 剪切 粘贴 删除 表5-9:【系统设置】内部接口
接口 adjustdate() setdate() select() setimage() setclockflag() 功能 修改系统的年月日时分秒 根据用户输入设置系统的年月日时分秒 得到开机画面图片的路径 将用户选择的图片的路径写入配置文件 将用户选择的时钟显示方式写入相应的配置文件 表5-10:【时间显示】内部接口
接口 QTime() 功能 构造一个时、分、秒,分别为h、m、s的时间。
概要设计 版本:Ver 1.0 第18页
currentTime() QPainter() drawClock() save() setBackgroundColor() QLCDNumber() QDate() currentDate() paintEvent() dayOfWeek () const 根据系统时钟,返回当前时间 构造绘制工具 描绘时钟指针颜色形状模块 保存当前绘图工具状态(把状态压到栈中) 设置绘图工具的背景色为c 电子时钟 构造一个年、月、日,分别为year、month、day的时间 根据系统时钟,返回当前日期 以星期形式显示月历 根据日期获得相应的星期数
概要设计 版本:Ver 1.0 第19页
6. 关键数据结构
? 动态显示效果
stuct SlideConfigure /*图片动态显示设置信息*/ {
int order; int time; int trans;
//随机播放 || 顺序播放
//过渡时间
//过渡效果
}
? 图片列表信息
stuct PicList {
QString dir; uint current; QstrList list; }
? 音乐文件信息
struct music {
size_t count; char *buf; int fd; int flags; const char *pathname; }
? 日期
struct date {
int year; int month; int day; }
? 时间
struct time {
int hour; int minute; int second; }
/*图片显示列表*/ //图片的存储路径 //图片数目 //图片名称列表 /*音乐文件信息*/ //限定从声卡获得的最大字节数
//指向缓冲区的字符指针,用来保存从声卡获得的数据 //设备文件的标识符
//文件打开方式,可以是 O_RDONLY、O_WRONLY或者O_RDWR //将要被打开的设备文件的名称,对于声卡来讲一般是/dev/dsp /*日历信息*/ //年 //月 //日 /*时间信息*/ //时 //分 //秒
概要设计 版本:Ver 1.0 第20页
7. 限制条件
■ 由于开发时间有限,系统的一些功能的设计难以做到特别的人性化,一切还是以实现为主要目标 ■ 系统对存储设备支持能力有限,难以对常见的存储设备做到兼容
概要设计 版本:Ver 1.0 第21页
8. 附件
8.1 模块技术点整理
■ 技术点识别
? ? ? ? ? ? ? ?
图片静态、动态显示,缩放、切换、旋转等基本控制
音乐播放,暂停、播放、切换、音量调节、信息显示等基本控制 存储设备选择 文件列表浏览
文件或文件夹剪切、复制、删除等基本操作 时钟显示(数字时钟、指针时钟) 日历显示、查询 时间设置
■ 应用的设计模式
?
观察者模式:
系统分为5个模块,各模块的开发工作同时进行,当系统功能需要变动时,同时对各模块进行相应的修正。 ■ 应用的算法与数据结构
? ?
应用的数据结构请参看第6章
应用的算法请参看4.2节各模块的程序实现图
■ 使用的库函数
?
我的照片
接口 QObject::connect () QObject::disconnect () QObject::startTimer() QObject::killTimers () QWMatrix::scale () QWMatrix::rotate () QWMatrix::translate () QFileDialog::getOpenFileName() QFileDialog::getExistingDirectory() QWidget::isEnabled () QWidgetStack::raiseWidget () QWidget::setEnabled () QWidget::show () QWidget::hide () QList::at () QList::count () QList::find () QList::isEmpty ()
功能 连接信号和槽 断开信号和槽的连接 启动计时器 结束所有该对象打开的计时器 缩放坐标系 旋转坐标系 平移坐标系 打开文件对话框,返回选中文件 打开文件对话框,返回选中文件夹 判断部件是否可用 设置第n个部件可见 设置部件是否可用 显示该部件及子部件 隐藏该部件及子部件 返回list的第n项 返回list的总项目数 返回查询项所在的索引 判断list是否为空 概要设计 版本:Ver 1.0 第22页
QList::removeFirst () QFileInfo::isFile () QFileInfo::dirPath () QDir::setFilter ( ) QDir::setNameFilter () QDir::count () QDir::operator[] QPixmap::load () QPainter::drawPixmap () bitBlt() ?
我的音乐
接口 QObject::connect () QTimer::start() QTimer::stop () QFileDialog::getOpenFileName() QWidget::show () QListBox::clear () QListBox::count () QListBox::insertItem ()
?
文件管理
接口 int open (); ssize_t write(); ssize_t read(); int creat(); int close (); int stat(); DIR *opendir(); struct dirent *readdir(); int closedir(); int mkdir(); int rmdir(c); QFile bool QFile::exists () const QFile bool remove () getOpenFileName() currentDir()
?
系统设置 系统函数 setYMD() setHMS() QDate::Date() 删除list的第一项 判断是否是文件 返回文件的路径 设置类型过滤器 设置名称过滤器 返回文件夹下文件数目 返回第n个文件名 加载文件到pixmap 在绘图设备上绘图 复制一块区域到绘图设备 功能 连接信号和槽 启动计时器 停止计时器 打开文件对话框,返回选中文件 显示该部件及子部件 清空列表 返回列表的总项目数 插入列表项 功能 打开文件 写入文件 读取文件 创建新文件 关闭文件 分辨文件与文件夹 打开目录 函数返回一个指向结构的指针 关闭目录 创建新目录 删除空目录 判断文件是否存在移去当前指定文件名的文件 得到当前开启文件名称 确认当前路径 功能 判断日期的年、月、日是否合法 判断时间的时、分、秒是否合法 创建日期对象
概要设计 版本:Ver 1.0 第23页
QTime::Time() ?
系统函数 setHMS() void QPainter::scale () void QPainter::rotate () void QPainter::save () void QPainter::restore () setBackgroundColor() QTimeEdit() currentTime () QPoint() QPainter () currentDate() paintEvent() dayOfWeek () const void QButton::pressed () QComboBox() 时间显示
创建时间对象 功能 设置时间的时、分、秒和毫秒,分别为h、m、s 通过(sx, sy)拉伸坐标系统。 逆时针方向旋转坐标系统a度。 保存当前绘图工具状态(把状态压到栈中)。 恢复当前绘图工具状态(从栈中弹出一个保存的状态)。 设置绘图工具的背景色 设置时间 调用系统时钟 构造一个坐标为(0,0)的点 构造绘制工具 调用系统日期 处理按钮的绘制事件 返回这个日期中在星期中的天数 按钮被按下的时候,这个信号被发送 可以编辑输入字段,如果RW是TRUE,用户只能选择ComboBox中的项目之一。 8.2 参考文档
编号 文档名称 版本 作者
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库多媒体数码相框概要设计_Ver1.0在线全文阅读。
相关推荐: