毕业论文

打赏
当前位置: 毕业论文 > 计算机论文 >

Linux环境下CD播放器的设计与实现(6)

时间:2017-05-25 18:34来源:毕业论文
7) 显示并能调节CD的音量 8) 显示CD的播放状态 9) 停止时关闭设备文件 10) 弹出光驱 11) 界面尽量美观 4.2 需求分析 使用Qt结合ioctl系统调用来实现一个


7)    显示并能调节CD的音量
8)    显示CD的播放状态
9)    停止时关闭设备文件
10)    弹出光驱
11)    界面尽量美观
4.2 需求分析
    使用Qt结合ioctl系统调用来实现一个CD播放器并不困难,但要清楚具体的执行逻辑,使写出来的程序不出现难以理解的逻辑错误而导致最后的返工,还是需要事先认真思考规划好。
    图形界面的CD播放器。根据使用经验来看,运行程序后,呈现出来的一定是图形界面,然后点击图形界面上设计好的控件来实现对音频CD各种操作和控制。
    程序规划流程图如图5所示:
图5 程序规划流程图
不管在什么平台下,不管用什么开发工具,GUI应用程序的基本开发方法都是相似的。开发人员都要编写两方面的代码,即应用于实现图形界面的代码和用于实现程序运行的代码,然后再将这两部分结合起来,但本程序采用Qt进行编写,Qt对界面的设计进行了一定程度的封装,因此对于界面方面的代码需求是比较少的,但有时候还是需要在代码中加入一些必要的界面设计来使界面排布的更加紧凑美观些。
使用Qt设计好界面后,就需要将界面上控件的信号与槽函数进行关联,当对某个控件进行操作时,控件的某个信号被发送出去激活对应的槽函数,从而使相应的功能得到实现。
这样,程序的大体架构就清楚了。即,程序由控件的信号驱动,调用对应的预先编写好的槽函数进行功能实现。


4.3 主要数据结构
为了能够更好的理解对CD的操作,需要先了解几个结构体
1)    cdrom_tochdr结构
该结构中包含两个成员,分别为第一个和最后一个音轨的序号。通常说来,CD上第一个音轨的序号总是0,而最后一个音轨的序号则等于碟片上的有效音轨数,因此即便CD上只有一个音轨,第一个和最后一个音轨的序号也将分别为0和1:
    struct cdrom_tochdr     
    {
    __u8    cdth_trk0;    /* start track */
    __u8    cdth_trk1;    /* end track */
};
2)    cdrom_msf0结构
这个结构用户来定位音轨位置。MSF地址中的每个分量都代表某种具体的偏移量,其中M代表的是CD从开始播放到定位点所经历的分钟(minute)数,S代表是从M所确定的地址到定位点所经历的秒钟(second)数,而F代表的则是从M和S所确定的地址到定位点所间隔的帧(frame)数。
struct cdrom_msf0
{
    __u8    minute; //分钟数
    __u8    second; //秒钟数
    __u8    frame;  //帧数
};
3)    cdrom_tocentry结构
该结构用来保存从CD头部获取的音轨信息。内容描述表(TOC)是CD头部保存的最有价值的信息,它用来对CD中的每一条音轨进行详细地描述,包括它们各自的起始位置和长度等,使用ioctl的CDROMREADTOCENTRY命令可以读出这些数据
struct cdrom_tocentry
{
    __u8    cdte_track;
    __u8    cdte_adr    :4;
    __u8    cdte_ctrl    :4;
    __u8    cdte_format;
    union cdrom_addr cdte_addr;
    __u8    cdte_datamode;
};
union cdrom_addr         Linux环境下CD播放器的设计与实现(6):http://www.youerw.com/jisuanji/lunwen_7816.html
------分隔线----------------------------
推荐内容