嵌入式智能家居之多媒体播放器文档格式.docx
- 文档编号:17137882
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:9
- 大小:64.79KB
嵌入式智能家居之多媒体播放器文档格式.docx
《嵌入式智能家居之多媒体播放器文档格式.docx》由会员分享,可在线阅读,更多相关《嵌入式智能家居之多媒体播放器文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
年月日
二、指导教师评语:
三、成绩评定:
年月日
四、系部意见:
系部盖章:
设计项目成绩评定表
设计报告书目录
智能家居之多媒体播放器
1、设计目的
1、了解嵌入式系统、物联网
2、掌握linux下编程的基础知识
3、Linux操作系统环境的搭建及常用命令
4、实现Cortex-A8开发板(搭载linux系统)下的多媒体播放器
5、Mplayer及Mplayer控制方式
二、设计思路
1、播放器背景、按钮图片的显示,歌曲列表的显示
2、创建线程获取触摸屏输入
3、创建线程获取键盘输入
4、创建线程打印歌曲信息、歌词信息
三、设计过程
3.1、系统总体方案
Mplayer项目流程图
项目程序流程图
3.2、虚拟机、开发板环境的搭建
常用命令的介绍:
语法:
◆#ls
参数:
-l:
列表显示
-a:
显示隐藏文件
-h:
配合-l以MB为单位显示文件大小
-R:
递归显示所有目录文件
◆#cd:
切换目录
cd/root可进入指定目录
cd..可进入上一层目录
cd-可进入上一个进入的目录
cd~可进入用户的home目录
◆#cp/etc/inittab/home
参数:
-R:
拷贝文件夹
-f:
若同名则不提示,直接覆盖
-v:
显示拷贝进度
◆clear:
清屏
#clear
◆mkdir:
创建目录
语法:
#mkdirdir1
参数:
-p在指定路径建立文件夹,需要时创建上层目录
◆Pwd:
显示当前目录路径
#pwd
◆ps(进程查看命令)
命令格式:
$ps
◆cal(显示日历)
$cal[选项][月份][年]
选项:
-y|显示整年日历
$cal42007
reboot(重启电脑)
dhclient
重新获取IP地址
环境搭建的过程:
1、设置虚拟机IP,同时保证虚拟机网络通畅
2、设置开发板IP,同时保证开发板网络通畅
3、挂载虚拟机下指定的文件夹到开发板的指定目录
开发流程:
1、程序编写
在linux系统软件编写程序,写出所有模块的程序
2、交叉编译
在编译软件中进行程序的编译与检错修改
3、综合运行
联通A8开发板在xshell软件中运行,查看现象。
3.3、程序设计具体步骤
第1步、
功能:
初始化图形库和触摸屏、实现背景窗口的初始化。
要求:
创建一个C文件,在此文件中写一个系统初始化、窗口初始化函数。
提示:
用到的接口函数
1:
getFBP("
/dev/fb0"
);
//将LCD内核态的FramerBuffer映射到用户态,并获取其参数
2:
TFT_Init();
//初始化液晶屏
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步、
从文件夹中读取歌曲名字,保存起来(方法:
指针数组、链表、数据库。
注:
读取歌曲名功能、保存歌曲名功能最好能分开);
再写一个函数,使其能在屏幕上显示歌词列表,并能高亮指定的某一首歌。
扫描某个目录下的歌曲文件名字,调用保存歌曲名功能函数,全部保存起来。
(参考函数名get_song_list)。
把所有的歌曲名字(.mp3为后缀的文件)显示在歌词列表窗口中,当前播放歌曲的名字在列表中应该
反显(方法:
重新设置颜色、画矩形框等)。
获取某个目录下文件的名称所用函数
1、DIR*opendir(char*pathname);
2、structdirent*readdir(DIR*dir);
3、intclosedir(DIR*dir);
opendir返回一个DIR类型的指针;
readdir参数是opendir返回的指针;
返回值是structdirent类型的指针;
比如:
readdir函数返回值为dp,dp->
d_name即文件的名字;
循环把dp->
d_name保存起来;
赋值之前要判断一下dp->
d_name是不是歌曲文件名(即是不是.mp3文件)。
若是则调用保存歌曲名函数,否则不保存(注:
可用函数strstr)。
可以参考“linuxC函数.chm”文档中的readdir函数;
赋值的时候给一个变量++测出有多少首歌(推荐变量名:
song_num);
第3步、
播放\暂停、上一首、下一首,快进、快退(触摸屏、物理按键都要实现);
点播放列表中歌曲的名字实现切换歌曲。
切换歌曲的时候,播放列表中的相应歌曲名字要反显。
歌曲的切换通过mplayer提供的"
loadfilepathname"
命令,切换到pathname指定的歌曲。
在歌词列表实现之后,创建子进程,在子进程中启动mplayer
启动mplayer的语句:
execl("
./mplayer"
"
mplayer"
-ac"
mad"
-slave"
-quiet"
-input"
file=/tmp/mplayer_fifo"
buf,NULL);
在execl中规定mplayer从命名管道中获取消息,主进程中就必须通过向命名管道写"
命令字符串"
来控制mplayer,所以必须在创建子进程之前创建mplayer_fifo,父子进程通过mplayer_fifo通信。
buf为mplayer启动时播放歌曲的目录文件名。
3:
主进程中创建touchpad_control线程(触点检测模块)、key_control线程(物理按键控制模块);
检测触
摸屏、物理按键,以及控制相应的操作。
第4步、
在屏幕上显示歌曲长度、当前播放到多少秒、当前歌曲的“专辑、歌手、标题、发行年份”、进度条要求:
在屏幕歌曲信息窗口中显示歌曲的总长度,当前播放时间。
(切换歌曲活快进快退的时候刷新信息)
在歌曲信息窗口中显示歌曲的“专辑、歌手、标题、发行年份”。
(切换歌曲的时候刷新信息).
播放进度条随着时间推移。
(切换歌曲、或快进快退的时候可以刷新)
1:
父子进程通过管道通信;
即子进程通过管道把消息传给父进程
子进程把mplayer输出的信息重定向到管道中。
主进程从管道中读,读出来后解析再做相应的处理。
(注:
使用dup2函数,子进程重定向mplayer的输出至管道的写端,父进程从管道的读端读mplayer的输出信息)
2:
主进程创建子线程
get_song_detail
每隔一段时间发一条命令,获取当前播放时间、进度、歌曲信息等。
read_dispose_data
循环读管道把读到的消息保存在字符数组中,解析读到的消息,把有用的消息解析出来,做相应的处理。
第5步、
在歌词窗口显示歌词。
歌词循环打印,歌词与歌曲同步,切换歌曲的时候切换新的歌词。
1:
可以用mplayer返回来的当前播放时间去查找歌词解析里的时间,这样快进歌词也可以跟着同步。
2:
如果用以前的虚拟时间,歌曲快进,歌词不能同步。
歌词解析功能也是创建一个新的线程(display_lyrics)去完成
四、系统调试与结果
1、连接开发板与物理机,打开虚拟机、xshell(串口控制开发板用)
2、在notepad++下编写程序,虚拟机下进行交叉编译
3、联合调试,在xshell查看并分析开发板的运行信息
五、主要元器件与设备
PC机一台,A8开发板一套
六、课程设计体会与建议
6.1、设计体会
掌握了虚拟机的简单命令,也熟悉了linux下编程的基础知识。
6.2、设计建议
虽然掌握了小项目的基本做法和流程,但对于虚拟机和C++的命令还不是很熟悉,对于这方面的知识还是很浅的,以后能加强这方面的再好不过了。
七、参考文献
[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.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 智能家居 之多 媒体播放器