




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实现MP3播放器的快进快退专业班级:XXXXX设计者 :XXXXXXXX 指导老师:XXXXXXX设计时间:XXXXXXX一、设计题目:实现MP3播放器的快进快退。二、主要指标和要求:1) 指标:open函数,write 函数,read函数,设备控制函数 ioctl ,结构体struct wav_fmt,以及fd1、fd2文件描述符。2) 要求:在linux 环境下,将/home/asdf/mp3player/nuannuan.wav文件读出并写入声卡设备文件/dev/dsp中。实验结果通过三步实现:第一步,实现声卡的发声, 其现象为产生噪声;第二步,实现MP3音乐文件的播放,其现象为nua
2、nnuan .wav文件的正常播放;第三步,实现快进快退功能,其现象为按下设定的按键时,音乐 能快进或快退5秒。三、方案选择及其工作原理:1) 方案选择:首先在计算机上安装的虚拟机中编程实现MP3文件的快进快退功能,然后通过arm-linux-gcc rc.c,arm-linux-gcc a./.out等一系列语句将文件连接到超级终端,最后由超级终端将文件发送到实验开发板,观察现象完成实验。2) 工作原理:程序开始需先定义一个音频控制的结构体struct wav_fmt 和一个异步端口控制函数 fun ()。然后通过 open 函数将 /home/asdf/mp3player/nuannuan
3、.wav文件和声卡设备文件/dev/dsp打开,分别赋给fd1和fd2(称其为文件描述符),紧接着用 read 函数读 fd1 , 通过声卡设备 ioctl(fd2,SNDCTL_DSP_SETFMT,&f), ioctl(fd2,SNDCTL_DSP_CHANNELS,&a),ioctl(fd2,SNDCTL_DSP_SPEED,&b)对其进行处 理,这3个语句是程序的关键,对 &f、&a、&b的处理不当将会引起 MP3播放时声音的 失真。最后,在以上两步都实现后,我们开始进行文件的读写, 分别用read函数和write 函数实现,其中read函数完成将fd1内容读入buf的功能,write
4、实现将buf内容 写入fd2的功能,在 while语句中完成快退快进程序的编写,值得注意的是在while语句执行时我们要先调用一步端口控制函数fun(),其目的是将 while中包含的getchar()同步函数转化为异步执行,最终实现快进快退功能。四、各模块及顶层文件的设计:3#in elude /头文件;#in elude #in elude #in elude #in elude #in elude #in elude #in elude #in elude struet stat st;/struet wav_fmt ehar fiffid4;int riffsize;ehar riff
5、fmt4;ehar fmtid4;int fmttag;short fmttype;short n eha nn els;int speed;int bpsee ond;short alig n;short bitspersample;struet wav_fmt fmt;int fun ()/int ret;struet termios n ew_opts;音频文件结构体定义;异步端口控制;if(tegetattr (0,&n ew_op ts)0)5主函数;实现快进快退;prin tf(error:tcgetattr();return 1;n ew_opts.c_lflag &=(ICAN
6、ON);new_opts.c_ccVMIN=0;new_opts.c_ccVTIME=0;if(tcsetattr(0,TCSANOW,&n ew_op ts)0) write(fd2,buf,4192);k=getchar();if(k=f)lseek(fd1,44100*2*5,SEEK_CUR);if(k=T)Iseek(fd1,-441OO*2*5,SEEK_CUR);close(fd1);/关闭文件;close(fd2);五、仿真、调试中遇到的问题,解决的方法以及实验效果:1) 声音的失真:在程序编写完成并正常执行后,输出的声音不是设置的女声而是略带嘈杂的低沉的声音,经检查并在老师的
7、指导下发现是ioctl()中第3各参数赋值的错误,他指出我们不能直接将CHANNEL、SPEED这样的参数赋给ioctl(),而需先将CHANNELSSPEEDS别赋给变量a、b,再由&a、&b赋给ioctl(),这是与linux下的存储结构有关 的。更改后能正常发声。2) 无法快进快退:在程序中我们用getchar()语句来实现输入外来控制字符(我的程序中用 f I 分别实现快进快退),但我们知道 getchar()语句为同步执行,当我执行 f或T,程序进入等待状态,并不执行快进快退功能,为解决这个问题老 师给我们提供了异步端口控制函数fun(),在执行getchar()之前我们先调用这个函数,这样使得getchar()能异步执行,运行程序后,按下f I 能正常实现快进快退。六、设计体会:这次的课程设计的实现方式是独特的,由专门的科技人员对我们进行理论知识的灌输和上机的指导,这种理论与实践相结合的方式让我从这次设计中受益匪浅。尽管在设计中我们遇到很多棘手的问题,但在错误中学到的知识和总结的经验无疑让我们更加铭记于心。作为大学生,我们在更多时候都是接受理论知识的教育,以至于在更多时候我们只能纸上谈兵,无法将理论与实践相结合。这次课程设计无疑给 了我们一次很好的动手机会,我们把它当做一次学习和检验学习成果的机会,设计 中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大多数考试题目及答案
- 常考焊工考试题目及答案
- 安全生产许可证管理办法讲解
- 推动新质生产力数字化转型
- 新质生产力与金融结合路径
- 各地新质生产力发展新闻盘点
- 新质生产力短视频创作
- 信息技术教学工作方案
- 幼儿园班级毕业典礼活动方案
- 新质生产力的流行与本质
- 2025年新《公司法》知识竞赛题库(附含答案)
- 八年级心理健康体验式教学计划
- 二手房资金监管协议书
- 甘肃省会宁县2025年上半年公开招聘辅警试题含答案分析
- 2025年太阳能海水淡化项目经济效益评估报告
- 2025年机关事业单位工人招聘《机动车驾驶员》技师考试题库与答案
- 2025年物资保管岗位招聘面试实战指南及模拟题解析
- 4D厨房区域区间管理责任卡
- GB/T 990-1991带式输送机托辊基本参数与尺寸
- 猪动物福利及其我国对策课件
- 沟槽坍塌应急演练方案
评论
0/150
提交评论