1、嵌入式智能家居之多媒体播放器安 康 学 院嵌入式设计报告书课题名称:嵌入式智能家居之多媒体播放器姓 名:学 号:院 系:电子与信息工程系专 业:电子信息工程指导教师:张兴辉时 间:2013年6月一、设计任务及要求:1、设计任务: 智能家居之多媒体播放器2、要 求: 1、熟练掌握虚拟机、Cortex-A8开发板环境搭建 2、实现linux下的多媒体播放器设计指导教师签名: 年 月 日 二、指导教师评语:指导教师签名: 年 月 日 三、成绩评定:指导教师签名: 年 月 日四、系部意见:系部盖章: 年 月 日设计项目成绩评定表设计报告书目录1、设计目的1、了解嵌入式系统、物联网2、掌握linux下编
2、程的基础知识3、Linux操作系统环境的搭建及常用命令4、实现Cortex-A8开发板(搭载linux系统)下的多媒体播放器二、设计思路1、播放器背景、按钮图片的显示,歌曲列表的显示2、创建线程获取触摸屏输入3、创建线程获取键盘输入4、创建线程打印歌曲信息、歌词信息三、设计过程3.1、系统总体方案1、编辑在linux系统软件编写程序,写出所有模块的程序2、编译在编译软件中进行程序的编译与检错修改3、运行联通A8开发板在xshell软件中运行,查看现象。3.2、虚拟机、开发板环境的搭建常用命令的介绍:语法:#ls参数:-l:列表显示 -a:显示隐藏文件 -h:配合-l以MB为单位显示文件大小 -
3、R:递归显示所有目录文件#cd:切换目录cd/root 可进入指定目录cd 可进入上一层目录cd - 可进入上一个进入的目录cd 可进入用户的home目录#cp /etc/inittab/home参数: -R:拷贝文件夹 -f:若同名则不提示,直接覆盖 -v:显示拷贝进度rm:删除文件#rm -f filelclear:清屏#clearmkdir:创建目录语法:#mkdir dir1参数:-p在指定路径建立文件夹,需要时创建上层目录find 文件查找指令 语法:find 路径名 name 文件名Pwd:显示当前目录路径#pwdps(进程查看命令)命令格式:$ pscal(显示日历)命令格式:
4、$cal 选项 月份 年选项:-y|显示整年日历$ cal 4 2007reboot(重启电脑)dhclient重新获取IP地址环境搭建的过程:1、设置虚拟机IP,同时保证虚拟机网络通畅2、设置开发板IP,同时保证开发板网络通畅3、挂载虚拟机下指定的文件夹到开发板的指定目录开发流程图如图所示:3.3、程序设计具体步骤第1 步.功能:初始化图形库和触摸屏、实现背景窗口的初始化。要求:创建一个C 文件,在此文件中写一个系统初始化、窗口初始化函数。提示:用到的接口函数1:getFBP(/dev/fb0); /将LCD 内核态的FramerBuffer 映射到用户态,并获取其参数2:TFT_Init(
5、); /初始化液晶屏3:ts_cal_init(); /初始化触摸屏4:创建窗口(创建时窗口的背景可随自己的意愿填写)window_back = TFT_CreateWindowEx(0,0,320,240,COLOR_WHITE); /创建背景窗口5:TFT_File_Picture:窗口贴图函数6:TFT_ClearWindow:窗口清除函数7:TFT_SetTextPos:窗口内设置光标位置函数8:TFT_SetColor:设置窗口前景色第2 步.功能:从文件夹中读取歌曲名字,保存起来(方法:指针数组、链表、数据库。注:读取歌曲名功能、保存歌曲名功能最好能分开);再写一个函数,使其能在屏
6、幕上显示歌词列表,并能高亮指定的某一首歌。要求:1:扫描某个目录下的歌曲文件名字,调用保存歌曲名功能函数,全部保存起来。(参考函数名get_song_list)。2:把所有的歌曲名字(.mp3 为后缀的文件)显示在歌词列表窗口中,当前播放歌曲的名字在列表中应该反显(方法:重新设置颜色、画矩形框等)。提示:获取某个目录下文件的名称所用函数1、DIR* opendir(char* pathname);2、struct dirent * readdir(DIR* dir);3、int closedir(DIR *dir);opendir 返回一个DIR 类型的指针;readdir 参数是opendi
7、r 返回的指针;返回值是struct dirent 类型的指针;比如:readdir 函数返回值为dp,dp-d_name 即文件的名字;循环把dp-d_name 保存起来;赋值之前要判断一下dp-d_name 是不是歌曲文件名(即是不是.mp3 文件)。若是则调用保存歌曲名函数,否则不保存(注:可用函数strstr)。可以参考“linux C 函数.chm”文档中的readdir 函数;循环赋值的时候给一个变量+ 测出有多少首歌(推荐变量名:song_num)。第3 步.功能:播放暂停、上一首、下一首,快进、快退(触摸屏、物理按键都要实现);点播放列表中歌曲的名字实现切换歌曲。要求:切换歌曲
8、的时候,播放列表中的相应歌曲名字要反显。提示:1:歌曲的切换通过mplayer 提供的loadfile pathname命令,切换到pathname 指定的歌曲。2:在歌词列表实现之后,创建子进程,在子进程中启动mplayer启动mplayer 的语句:execl(./mplayer,mplayer,-ac,mad,-slave,-quiet,-input,file=/tmp/mplayer_fifo,buf,NULL);在execl 中规定mplayer 从命名管道中获取消息,主进程中就必须通过向命名管道写命令字符串来控制mplayer,所以必须在创建子进程之前创建mplayer_fifo,
9、父子进程通过mplayer_fifo 通信。buf 为mplayer 启动时播放歌曲的目录文件名。3:主进程中创建touchpad_control 线程(触点检测模块)、key_control 线程(物理按键控制模块);检测触摸屏、物理按键,以及控制相应的操作。第4 步.功能:在屏幕上显示歌曲长度、当前播放到多少秒、当前歌曲的“专辑、歌手、标题、发行年份”、进度条要求:1:在屏幕歌曲信息窗口中显示歌曲的总长度,当前播放时间。(切换歌曲活快进快退的时候刷新信息)2:在歌曲信息窗口中显示歌曲的“专辑、歌手、标题、发行年份”。(切换歌曲的时候刷新信息).3:播放进度条随着时间推移。(切换歌曲、或快进
10、快退的时候可以刷新)提示:1: 父子进程通过管道通信;即子进程通过管道把消息传给父进程子进程把mplayer 输出的信息重定向到管道中。主进程从管道中读,读出来后解析再做相应的处理。(注:使用dup2 函数,子进程重定向mplayer 的输出至管道的写端,父进程从管道的读端读mplayer 的输出信息)2: 主进程创建子线程1:get_song_detail每隔一段时间发一条命令,获取当前播放时间、进度、歌曲信息等。2:read_dispose_data循环读管道把读到的消息保存在字符数组中,解析读到的消息,把有用的消息解析出来,做相应的处理。第5步、功能:在歌词窗口显示歌词。要求:歌词循环打
11、印,歌词与歌曲同步,切换歌曲的时候切换新的歌词。提示:1:可以用mplayer 返回来的当前播放时间去查找歌词解析里的时间,这样快进歌词也可以跟着同步。2:如果用以前的虚拟时间,歌曲快进,歌词不能同步。3:歌词解析功能也是创建一个新的线程(display_lyrics)去完成四、系统调试与结果.调试:1、连接开发板与物理机,打开虚拟机、xshell(串口控制开发板用)2、在notepad+下编写程序,虚拟机下进行交叉编译3、联合调试,在xshell查看并分析开发板的运行信息.系统调试结果 系统调试结果如下图所示五、主要元器件与设备1、 课程设计体A8开发板一套2、window XP电脑(装ub
12、untu的虚拟机、xshell)一台会与建议6.1、设计体会通过这次的课程设计,我明白了一个项目的开发完成,需要列出各个模块的分工,各各个模块的个子模块的编译与调试,最后把各个模块进行组合,系统调试,运行。编译和调试的细节需要仔细认真的完成,才能保证整个项目的圆满完成。6.2、设计建议 建议老师在编辑代码和调试程序的时候多多指导,有的代码读起来有些吃力,希望老师可以在程序的编译这方面多多指点。七、参考文献1 杨士元.掀开智能家居的面纱J.中国计算机用户.2002,21(08):23-26.2 秦勃,王琳,邵峰晶,於雷.无线嵌入式智能家居环境网关J计算机应用研究.2006,12(06):18-35.3 朱文凯,何岭松,丁汉,熊有伦.基于Internet的嵌入式Web传感器J.仪表技术与传感器.2002,3(08):23-25.4 王文利,段宝岩,刘宏.基于网络的机械设备远程监测与故障诊断J.制造业自动化.1999,21(04):32-35.5 周洪,胡文山,张立明,卢亦焱.智能家居控制系统M北京:中国电力出版社.2006:82-85.6 陶波,丁汉,熊有伦基于嵌入式Internet的工业控制J测控技术.2001,12(08):45-49.7 卢伟国,杨本强.嵌入式WEB传感器的网络化接口设计J.电子技术应用.2004,34(22):89-93.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1