飞鸽传书项目文档

上传人:公**** 文档编号:512625140 上传时间:2023-12-27 格式:DOC 页数:5 大小:25.50KB
返回 下载 相关 举报
飞鸽传书项目文档_第1页
第1页 / 共5页
飞鸽传书项目文档_第2页
第2页 / 共5页
飞鸽传书项目文档_第3页
第3页 / 共5页
飞鸽传书项目文档_第4页
第4页 / 共5页
飞鸽传书项目文档_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《飞鸽传书项目文档》由会员分享,可在线阅读,更多相关《飞鸽传书项目文档(5页珍藏版)》请在金锄头文库上搜索。

1、Mplayer 项目一、 项目说明MPlayer是一款开源的多媒体播放器,以GNU通用公共许可证发布.MPlayer是建基于命令行界面,在各作业系统可选择安装不同的图形界面。Mplayer控制方式主要有键盘控制和命令行控制。Mplayer项目是在Ubuntu12.0.4下实现,在基于A8内核的开发板上进行运行,所以该项目采用了命令行控制模式进行对Mplayer操作.二、 实现功能1)、该项目主要实现了以下基本功能:1、能够播放歌曲文件 2、能通过触摸屏按钮控制mplayer 播放、暂停、快进、快退、上一首、下一首. 3、能通过物理按键控制mplayer 播放、暂停、快进、快退、上一首、下一首.

2、4、显示歌曲列表,当前播放歌曲须要反显,点击对应歌曲能切换。 5、显示歌曲信息。 6、显示歌曲时间。 7、显示歌曲进度条。8、显示歌曲对应的歌词,并且能够和歌曲同步 .9、能够自动换歌 (播放完一首歌曲后,自动播放下一首歌).2)、创新点1、能够播放带空格的歌曲。2、能够进行歌曲列表的翻页操作。3、能够单击进度条进行随机播放。三、 项目步骤1、初始化显示屏 在使用开发板的液晶屏前必需先初始化液晶屏,初始化液晶屏后我们才可以使用液晶屏的相关的函数,并且液晶屏的初始化函数应只调用一次,不可重复初始化,初始化液晶屏时可用函数TFT_Init(”/dev/fb0”).2、 创建背景窗口,显示背景 创建

3、背景窗口可用函数TFT_CreateWindowEx (). 窗口贴图可用函数TFT_ ()。 3、读歌曲目录,存歌曲名写一函数使用opendir、readdir、closedir 函数读歌曲目录的文件,创建数据库和表,保存歌曲文件的文件名。4、打印歌曲列表 写一函数将存储起来的歌曲名打印到屏幕上,打印时注意将正在播放的歌曲高亮、突出显示。在调用打印函数前应设置打印位置,打印的颜色(即前景色,并且前景色与背景色应设置为不同的颜色).清除窗口内容可用函数TFT_ClearWindow ()。 设置窗口内光标位置可用函数TFT_SetTextPos ()。5、 启动MPlayer创建进程,子进程用

4、来启动Mplayer程序.启动Mplayer的命令: execl(”。/mplayer_arm, ”mplayer”,-ac”,”mad, -slave,”quiet”, ”-input”, ”。/media/sad_or_happy.mp3,NULL); 6、创建线程读键盘键值,根据键值发命令给mplayer 控制mplayer 播放、暂停、快进、快退、上一首、下一首 当使用key4+5 键盘驱动时应先执行命令insmod key4+5。ko 安装键盘驱动,然后再在线程中一直去读键盘的键值。读出键值后再根据键值发命令给mplayer.7、创建线程读触摸屏的触摸点,根据触摸点发命令给mplay

5、er ,控制mplayer 播放、暂停、快进、快退、上一首、下一首. 同键盘.8、创建线程发命令给mplayer 获取歌曲的信息 发命令获取的歌曲的信息:艺术家、专辑、流派、标题、歌曲当前的播放进度(百分比)、当前的播放时间(单位秒,可用于歌词的同步)。 注意:发命令给 mplayer 获取的歌曲的信息时,发的命令不能太快,否则mplayer 来不及处理,会卡死. 9、 创建线程读mplayer 的输出信息,解析信息,打印信息。发命令给mplayer 后,mplayer 会返回相应的信息。默认返回的信息会打印到终端上,要想在程序中获取相应的信息我们需要在子进程用 exec 开启 mplayer

6、 前重定向标准输出至管道。重定向mplayer 的输出后我们即可从管道中读取mplayer 的输出信息。得到mplayer 的输出信息后,写出相应的字符串解析程序,得到想要的信息并打印到屏幕上。10、 创建线程解析歌词并在显示屏上和歌曲同步:根据mplayer 输出的时间同步歌词。四、 遇到的问题及解决办法1、 在创建数据表时,每次启动程序都会添加指定目录中的歌曲文件,造成数据的重复添加。解决办法:在创建数据表的时候,先删除上次创建的数据表。2、 打印歌曲列表的时候,当前播放的歌曲不能反显。解决办法:首先获取当前播放歌曲的Id,在打印的歌曲列表的时候根据获取到的当前播放的歌曲id,在输出到屏幕

7、上的时候分别用不同的颜色进行输出。3、 在切换歌曲时,上一首歌曲的进度条不能清除,直到追上上首歌播放的位置时才能正常显示。解决办法:把从Mplayer获取的进度信息设置成全局变量,在切换歌曲的时候把进度信息清零。4、 程序在组合过程中,暂停键不起作用解决办法:因为Mplayer接收到新的命令时,会把暂停命令清除,当程序一直向Mplayer发送进度和时间信息时,会把暂停命令清除,所以造成了暂停键的不能使用。在暂停的时候设置一个标志位,当标志位为0的时候,禁止向Mplayer发送任何命令,这样就解决了命令冲突的问题。5、 程序运行时出现Segmentation fault解决办法:出现Segmen

8、tation fault的主要原因是指针操作越界.在遇到Segmentation fault时首先定位造成错误的位置,然后判断指针操作是否越界。最后在使用指针的时候必须进行初始化,这样就可以大大减少这样错误的发生。6、打印时发生乱码现象,更换编码方式后,还是出现部分乱码,或段错误解决方法:统一程序的编写方式。7、在运算表达式中a=i+,未出现a的变更解决方法:a=+i,先加1,再赋值8、 段错误例如:if(last-order=13) last=search_link(num/12)*12+1); else if(last=NULL) last=search_link((num/12)1211

9、); else last= search_link(last-order-24);解决方案:要首先判定指针是否为空,在继续判断,否则如上所示,当last为空(NULL),那么查询last-order时,就极有可能发生段错误;解决方案如下:(注意执行顺序) if(last=NULL) last=search_link(num/121)*12+1);else if(lastorder=13) last=search_link(num/12)12+1); else last= search_link(lastorder-24);9、触摸屏按键失灵,且不稳定,读取按键值抖动或无法读取解决方法:当触摸屏

10、多次频繁调用时,尽量整个程序只打开一次设备文件,多次打开又立即关闭,会影响屏幕的稳定性,读取按键时要选在手指已经脱离了触摸屏的状态。10、歌词反显开始的时候写了一个反显函数,每次切歌的时候,当前的列表会反显, 但是上次的列表没有恢复原来的颜色,重新加上一个恢复原来颜色的函数才行.11、 全局变量的使用解决办法:全局变量的命名不规范,在定义局部变量时和全局变量重名,达不到自己想要的结果.定义全局变量时,在命名的时候做个特殊的标识,规范全局变量的命名,以便和普通变量进行区别。五、 未解决的问题1、 在歌词显示过程中,如果下快进或者快退键时,歌词显示延时太长.2、 屏幕有时候闪烁的过于厉害。六、 项

11、目总结通过此次项目的练习,复习了前面所学的基本知识,也熟悉了各个知识点的综合运用.在学习各个阶段课程时,做课程练习时都能很好做出想要的效果,但是在做项目遇到各个知识综合应用时,就出现各个知识不能很好综合运用,总是想到了这个忘记那个。在开始做项目的时候,思路没有条理,想到一点就写一点,写到中间的时候,发现之前写的代码很紊乱,自己想修改的时候都无从下手,随着项目的越来的深入,了解了很多编程规范,包括变量的命名和文件的封装。尤其在分文件时,刚开始不注意规范,到最后出现头文件的重复引用。还有一些全局变量的命名不规范,在定义局部变量时和全局变量重名,达不到自己想要的结果。这次项目最大的收获就是知道项目编

12、程的一些基本规范,为以后的工作打下了基础。做项目的过程中,每个功能模块的效果比较容易实现,但是整合起来会出现很多意想不到的错误,这就锻炼了我们整合功能模块的能力。还有在写代码的时候,要写一个模块功能时要进行测试,测试无误时在进行下一个模块的实现,这样就会减少模块整合时解决问题的时间。在做项目的过程中遇到了很多困难,有时候苦思冥想很久之后,才发现是自己的一个拼写错误造成的,明白了在项目开发过程中要注意一些细节的问题,以前不明白细节决定成败这句话的重要性,通过此次项目的完成,才明白细节的重要性。在遇到问题时,有时候也想到了放弃,心理不稳定,遇到解决不了的问题,心里总是很窝火,好在有春哥和同学们的帮助,才一步步坚持到了项目的完成.文中如有不足,请您指教! /

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号