基于qt的车载音乐播放系统总结.doc_第1页
基于qt的车载音乐播放系统总结.doc_第2页
基于qt的车载音乐播放系统总结.doc_第3页
基于qt的车载音乐播放系统总结.doc_第4页
基于qt的车载音乐播放系统总结.doc_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于QT的车载音乐播放系统Based on the QT on-board music playback system摘 要随着汽车技术的不断进步,车主对驾驶坏境和舒适性都提出了更高的要求,车载音乐播放系统成为现代汽车必不可少的装备.而随着音乐文件特别是MP3文件的存储媒介极大的丰富,现在主要采用USB设备和SD卡进行存储,对车载音乐播放系统提出了多种存储媒介接口和读取文件并播放的要求,针对现有车载MP3播放器的不足,设计了一个基于S3C2410芯片的linux环境下的车载音乐播放系统。详细介绍了嵌入式linux操作系统和由ARM9芯片S3C2410构建的音乐播放器的硬件结构和软件系统。从而实现了车载多媒体音乐播放功能,可以满足车主对车载音乐多媒体播放需要。关键词:车载音乐播放系统, linux , S3C2410I目 录摘 要I目 录I第一章 基于QT的车载音乐播放系统绪论11.1目的和意义11.2 系统功能1第二章 系统方案22.1 嵌入式系统组成22.2 车载音乐播放系统组成22.3 方案论证3第三章 宿主机开发环境的配置53.1开发环境方案53.2 宿主机Linux环境的搭建5第四章 硬件开发平台及其操作系统的构建64.1开发平台的硬件资源64.2 开发平台的体系结构64.3 开发平台硬件间的工作流程74.4 开发平台操作系统的搭建74.4.1 U-Boot的编译74.4.2烧写U-boot84.4.3 内核(kernel)的编译与烧写8第五章 基于Qt/Embedded的嵌入式图形系统95.1 Qt概述95.2 Qt特征95.3 Qt编程核心技术95.3.1 元对象系统95.3.2信号和插槽95.3.3 属性105.3.4. QObject类105.3.5 对象树105.3.6 事件105.3.7. QApplication类105.3.8 QWidget类115.4 Qt Creator:跨平台的Qt IDE115.5 Qt/Embedded简介115.6建立Qt/Embedded开发环境115.6.1 准备工作115.6.2 安装交叉编译器125.6.3安装qt-sdk-linux-x86-opensource-2010.04.bin开发工具包125.6.4 编译及安装QT/E4.6.3-x86和QT/E4.6.3-arm12第六章 车载音乐播放系统设计156.1 SQLite数据库156.1.1 SQLite数据库简介156.1.2 SQLite数据库的操作156.1.3 Qt程序中对SQLite的操作156.2 使用Qt Creator 进行系统开发166.2.1 熟悉Qt Creator IDE166.2.2 使用Qt Creator 建立工程166.2.3 设计界面166.2.4 程序代码的编写176.2.5 程序调试以及修改186.2.6车载音乐播放系统的功能测试186.3 MPlayer播放器206.3.1 MPlayer简介206.3.2 MPlayer播放器的架构20第七章 系统的移植与集成217.1移植QT/E4.6.3以及tslib1.4到开发板217.2 MPlayer的编译及移植217.3 车载音乐播放系统的移植217.3.1 交叉编译227.3.2 将程序下载到开发平台并运行22第八章 系统整体测试248.1触屏的测试与校准248.2 系统完整的运行测试24II第一章 基于QT的车载音乐播放系统绪论1.1目的和意义计算机已经成为我们学习和工作的得力助手,但同时也是我们娱乐放松的工具。今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域,尤其是娱乐方面,应用更是广泛,其中就有和我们所要开发的系统及其相近的一个领域,那就是车载音乐播放系统。将我们的车载音乐播放系统应用到各种车辆中,也为人们的业余娱乐生活提供了新的方式,特别是那些爱好听歌的人,很大程度上满足了他们的需求。在这样的前提下,我们设计并开发了该系统。1.2 系统功能我们的车载音乐播放系统拥有即点即放、歌曲查找、随机进行播放及其他等功能。1第二章 系统方案2.1 嵌入式系统组成嵌入式系统组成如图2.1所示,嵌入式硬件平台中包含嵌入式微处理器、存储器、通用设备接口和I/O接口等。嵌入式硬件平台与嵌入式操作系统之间为中间层,也称板级支持包(Board Support Package,BSP),它将系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无需关心底层硬件的具体情况,根据BSP 层提供的接口即可进行开发。嵌入式操作系统负责嵌入系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。嵌入式应用软件是由基于实时系统开发的应用程序组成,用来实现对被控对象的控制功能。功能层是要面对被控对象和用户,为方便用户操作,往往需要提供一个友好的人机界面。图2.1嵌入式系统组成2.2 车载音乐播放系统组成车载音乐播放系统组成如图2.2所示,首先使用数据库系统创建候选歌曲列表,然后车载音乐播放系统通过响应用户的选择操作,将用户所选择的相应歌曲在数据库的支持下添加到歌曲列表中,然后车载音乐播放系统再调用媒体播放器播放对应的已选歌曲。图2.2车载音乐播放系统组成图2.3 方案论证1.硬件平台选择现在用作嵌入式开发的硬件平台很多,经典S3C2410平台硬件资源丰富,可扩展性好,并且带有音频输出以及触摸屏设备,非常适合用作车载音乐播放系统的开发平台,因此我们选择了2410平台。2.Bootloder选择用作嵌入式开发平台的Bootloder有很多种,其中著名的被广泛应用到实际的有u-boot和vivi两种,因为u-boot具有开放源码,支持多种嵌入式操作系统内核,支持多个处理器系列,较高的可靠性和稳定性,高度灵活的功能设置,丰富的设备驱动源码等特点,所以我们选择了u-boot作为我们开发平台的Bootloder。3.嵌入式操作系统选择Linux本身具有源码开发、内核可裁剪等种种特点,使其成为嵌入式开发的首选,因此这里我们也选择了Linux作为我们的嵌入式操作系统。4.开发工具选择Qt是一个跨平台的C+图形用户界面(GUI)工具包,Qt 应用程序接口与工具兼容于所有支持平台,并且Qt中QtSql模块实现了对数据库的完美支持,因此我们选择了Qt 作为我们的开发工具。5.数据库系统选择SQLite是一套非常强大的数据库系统,同时它还拥有开源、小巧等特点,非常适合用到嵌入式开发中,因此我们选择了SQLite数据库系统。5第三章 宿主机开发环境的配置3.1开发环境方案宿主机嵌入式LINUX开发环境有如下方案:1基于PC 机WINDOWS 操作系统下的CYGWIN;2在WINDOWS 下安装虚拟机后,再在虚拟机中安装LINXUX 操作系统;3直接安装LINUX 操作系统。这里我们选择第二种基于WINDOWS 的虚拟机上的Linux开发环境。通常的嵌入式系统的软件开发采用一种交叉编译调试的方式。交叉编译调试环境建立在宿主机上,对应的开发板叫做目标板。运行Linux 的PC开发时使用宿主机上的交叉编译、汇编及连接工具形成可执行的二进制代码,然后把可执行文件下载到目标机上运行。调试时的方法很多,可以使用串口,以太网口等。宿主机和目标板的处理器一般不相同,宿主机为Intel 处理器,而目标板如UP-TECH S2410/P270 DVP 开发板为三星S3c2410。GNU 编译器提供这样的功能,在编译器编译时可以选择开发所需的宿主机和目标机从而建立开发环境。所以在进行嵌入式开发前第一步的工作就是要安装一台装有指定操作系统的PC 机作宿主开发机。 3.2 宿主机Linux环境的搭建开发过程中所使用到的Linux操作系统是开发代号为Lucid Lynx的长期支持版本:Ubuntu10.04。该系统继承了前期Ubuntu版本的优良特性,具有启动速度快,内核新,软件更新方便,具有强大的后备支持等诸多优良特点。第四章 硬件开发平台及其操作系统的构建4.1开发平台的硬件资源1核心板为 S3C2410,配置2MNor Flash AM29LV160/320,硬件支持从NorFlash 启动并可增加NandFlash 容量。2LCD 和VGA 接口,标配8 寸16bit 真彩屏,同时预留一个24bit 接口。扩展了VGA 接口和AV 接口,可以连接VGA 显示器。3AUDIO:CODEC 采用UDA1341 和UCB1400,二者根据核心板的不同由软件设置CPLD 逻辑进行选择,具有放音、录音和线路输入等功能。功放电路由LM386 构成,板载扬声器可播放音频。4.2 开发平台的体系结构图4.1 s3c3410体系结构图4.3 开发平台硬件间的工作流程图4.2 s3c3410工作流程图4.4 开发平台操作系统的搭建 4.4.1 U-Boot的编译1U-Boot主要目录结构 - board 目标板相关文件,主要包含SDRAM、FLASH驱动; - common 独立于处理器体系结构的通用代码,如内存大小探测与故障检测; - cpu 与处理器相关的文件。2编译U-boot首先运行如下命令配置U-Boot:# make up2410_config 然后运行make命令编译: # make编译成功之后会产生三个重要映象文件U - Boot1bin、U - Boot和U- Boot1srec文件。其中U - Boot是一个二进制的源映像文件,U - Boot1bin是个elf格式的二进制映像文件,将使用这个文件。4.4.2烧写U-boot将烧写软件sjf2410和U - Boot1bin放在同一个目录下,然后进入DOS命令行模式,切换到所在目录,输入sjf2410-s.exe /f:u-boot.bin。选择0:K9S1208 prog0:K9S1208 Program。然后再入一次0,进行烧写。 4.4.3 内核(kernel)的编译与烧写安装内核:把内核源码安装/usr/src/ linux子目录中。cd /usr/src/linuxmake mrproper配置内核,修改相关参数。字符界面下,make menuconfig在内核配置菜单中正确设置各内核选项,保存退出正确设置关联文件 make编译内核,用编译U-Boot时在源代码的tools目录下生成的mkimage可执行文件对前面编译内核时生成的zImage进行处理,生成uImage以供U-Boot启动。使用内核把uImage放入主机的TFTP目录下,启动开发板,用U-Boot的tftp命令下载uImage到SDRAM,并启动。至此我们开发平台的BOOT和操作系统搭建完成。8第五章 基于Qt/Embedded的嵌入式图形系统5.1 Qt概述Qt是Trolltech公司的标志性产品(现Trolltech公司已被手机巨头NOKIA公司收购),是一个跨平台的C+图形用户界面(GUI)工具包,Qt 应用程序接口与工具兼容于所有支持平台,让开发员们掌握一个应用程序接口,便可执行与平台非相关的应用开发与配置Qt/Windows(Windows XP, 2000, NT 4, Me/98) Qt/Mac(Mac OS X) Qt/X11(Linux, Solaris, HP-UX, IRIX, AIX等) Qt对不同平台的专门API进行了专门的封装(文件处理,网络等)。5.2 Qt特征引入一种用于无缝对象通讯的被称为信号和槽非常强大机制,可查询和可设计的属性,强大的事件和事件过滤器,根据上下文进行国际化的字符串翻译,完善的时间间隔驱动的计时器使得在一个事件驱动的图形界面程序中很好地集成许多任务成为可能。以一种自然的方式组织对象所有权的分层次和可查询的对象树。被守护的指针,QGuardedPtr,当参考对象被破坏时,可以自动地设置为无效,不像正常的C+指针在它们的对象被破坏的时候变成了“摇摆指针”。5.3 Qt编程核心技术5.3.1 元对象系统元对象系统是一个C+扩展,使得QT更适合真正的组件GUI编程,使用元编译器moc产生能被标准C+编译器访问的附加C+代码,带有moc预编译器的C+基本上提供了面向对象的灵活性,并保持了C+的执行效率和扩展性。5.3.2信号和插槽在Qt程序中,利用信号(signal)和插槽(slot)机制进行对象间的通信。事件处理的方式也是回调。当对象状态发生改变的时候,发出signal通知所有的slot接收signal,尽管它并不知道哪些函数定义了slot,而slot也同样不知道要接收怎样的signal。signal和slot机制真正实现了封装的概念,slot除了接收signal之外和其它的成员函数没有什么不同,而且signal和slot之间也不是一一对应的。5.3.3 属性属性也是一个类的成员,在类声明中用宏Q_PROPERTY来声明,只能在继承于QObject的子类中声明,设置和得到属性的成员函数如下:QObject:setProperty()QMetaObject:propertyNames()QMetaObject:property()5.3.4. QObject类QObject是Qt类体系的唯一基类,是Qt各种功能的源头活水,就象MFC中的CObject和Dephi中的TObject。5.3.5 对象树QObject在对象树中组织它们自己。当你以另外一个对象作为父对象来创建一个QObject时,它就被添加到父对象的children()列表中,并且当父对象被删除的时候,它也会被删除。这种机制很好的适合了图形用户界面应用对象的需要。5.3.6 事件事件是由窗口系统或qt本身对各种事务的反应而产生的。当用户按下、释放一个键或鼠标按钮,一个键盘或鼠标事件被产生;当窗口第一次显示,一个绘图事件产生,从而告知最新的可见窗口需要重绘自身。大多数事件是由于响应用户的动作而产生的,但还有一些,比如定时器等,是由系统独立产生的。5.3.7. QApplication类QApplication类和QWidget类都是QObject类的子类.QApplication类负责GUI应用程序的控制流和主要的设置,它包括主事件循环体,负责处理和调度所有来自窗口系统和其他资源的事件,并且处理应用程序的开始、结束以及会话管理,还包括系统和应用程序方面的设置。对于一个应用程序来说,建立此类的对象是必不可少的。5.3.8 QWidget类QWidget类是所有用户接口对象的基类,它继承了QObject类的属性。组件是用户界面的单元组成部分,它接收鼠标、键盘和其它从窗口系统来的事件,并把它自己绘制在盘屏幕上。QWidget类有很多成员函数,但一般不直接使用,而是通过子类继承来使用其函数功能。如,QPushButton、QlistBox等都是它的子类。5.4 Qt Creator:跨平台的Qt IDEQt Creator 是 Qt 被 Nokia 收购后推出的一款新的轻量级集成开发环境(IDE)。此 IDE 能够跨平台运行,支持的系统包括 Linux(32 位及 64 位)、Mac OS X 以及 Windows。Qt Creator包含了一套用于创建和测试基于Qt应用程序的高效工具,包括:一个高级的C+代码编辑器、上下文感知、帮助系统、可视化调试器、源代码管理、项目和构建管理工具等。Qt Creator 的设计目标是使开发人员能够利用 Qt 这个应用程序框架更加快速及轻易的完成开发任务。5.5 Qt/Embedded简介 Qt/Embedded(简称QtE)是一个专门为嵌入式系统设计图形用户界面的工具包。使用QtE,开发者可以:用QtE开发的应用程序要移植到不同平台时,只需要重新编译代码,而不需要对代码进行修改。可以随意设置程序界面的外观。可以方便地为程序连接数据库。可以使程序本地化。可以将程序与Java集成。嵌入式系统地要求是小而快速,而QtE就能帮助开发者为满足这些要求开发强壮地应用程序。QtE是模块化和可裁剪地。开发者可以选取他所需要的一些特性,而裁剪掉所不需要的。这样,通过选择所需要的特性,QtE的映像变得很小,最小只有600K左右。QtE由于平台无关性和提供了很好的Gui编程接口,在许多嵌入式系统中得到了广泛的应用,是一个成功的嵌入式GUI产品。5.6建立Qt/Embedded开发环境5.6.1 准备工作在/usr/local目录下新建一个名字为QT的目录,然后将要用到的文件包arm-linux-gcc-3.4.6-glibc-2.3.6.tar.bz2、qt-everywhere-opensource-src-4.6.3.tar.gz(适用于QT-X11和QT/E)、tslib-1.4.tar.bz2以及Qt Creator的安装包qt-sdk-linux-x86-opensource-2010.04.bin(软件开发工具包,包含QT-X11和Qt Creator)放到新建的QT目录中。5.6.2 安装交叉编译器在终端中执行如下操作:# cd /usr/local/QT # tar xvzf arm-linux-gcc-4.3.2.tgz C /usr/local/执行该命令,将把 arm-linux-gcc3.4.6 安装到/usr/local/gcc-3.4.6-glibc-2.3.6/arm-linux/目录。然后,将交叉编译器的环境变量设置为: PATH=/usr/local/gcc-3.4.6-glibc-2.3.6/arm-linux/bin:$PATH,在终端中进行以下操作:export PATH=/usr/local/arm/4.3.2/bin:$PATH 这样就把交叉编译器的环境变量设置好了。5.6.3安装qt-sdk-linux-x86-opensource-2010.04.bin开发工具包1安装QT-X11的开发工具包qt-sdk-linux-x86-opensource-2010.04.bin安装完成后可以产生Qt开发工具,如Qt Creator、designer、qvfb等,嵌入式的开发有了qvfb,就可以不需要实际的开发板,也可以开发Qt应程序。首先进入软件包的存放目录,然后在终端中执行以下命令:# chmod +x qt-sdk-linux-x86-opensource-2010.04.bin./ qt-sdk-linux-x86-opensource-2010.04.bin默认的安装路径为/opt/qtsdk-2010.04,这样我们的开发工具包就安装成功了。2 设置环境变量在/.profile文件的最后添加如下语句:export QTDIR=$PATH:/opt/qtsdk-2010.04/qtexport PATH=$PATH:/opt/qtsdk-2010.04/qt/bin使环境变量立即起效:Source /.profile至此我们的Qt Creator以及其他QT-X11的开发工具安装成功。5.6.4 编译及安装QT/E4.6.3-x86和QT/E4.6.3-arm1. 解压QT文件包将/usr/local/QT目录下的qt-everywhere-opensource-src-4.6.3.tar.gz解压两次,分别重命名为QT/E4.6.3-x86和QT/E4.6.3-arm。这里,qt-everywhere-opensource-src-4.6.3有两个复制:QT/E4.6.3-x86和QT/E4.6.3-arm,根据他们的名字可以知道前者是适合x架构的,后者适合arm架构,如果有开发板的话,可以只编译qt-everywhere版本成arm架构的就可以了,但是很多时候用qvfb的话,开发会方便很多,所以多编译一个x86架构的。QT/E4.6.3-arm版本只能在嵌入式板子上面运行,编译成x86架构的程序也只能在x86的嵌入式板子上跑。前面说过,我们需要qvfb来测试开发程序,但是qvfb只能执行x86架构的应用程序,所以需要让QT/E4.6.3-x86生成关于x86的库和其他文件。最终的qt应用程序需要在arm架构上面运行,需要这方面的库,所以还需要编译应用arm的。2. 解压及编译触摸屏软件tslib1.4.tar.bz2打开文件所在目录:cd /usr/local/QT ,解压:tar xjvf tslib-1.4.tar.bz2,进入解压目录:cd tslib-1.4,修改脚本:gedit build.sh,为: #/bin/shexport CC=arm-linux-gcc./autogen.shecho ac_cv_func_malloc_0_nonnull=yes arm-linux.cache ./configure -host=arm-linux -cache-file=arm-linux.cache -prefix=/usr/local/tslibmakemake install执行:./build.sh,成功安装到了/usr/local/tslib目录下,至此tslib1.4编译成功。3. 编译及安装QT/E4.6.3-x86进入/usr/local/QT/QT/E4.6.3-x86目录,进行编译安装。在终端中进行如下操作:# cd /usr/local/QT/QT/E4.6.3-x86# ./configure -prefix /usr/local/QT/E4.6.3-x86 -embedded x86 -qvfb# make# make install安装编译过程大概需要4个小时,具体时间得看机器的配置,完成后QT/E4.6.3-x86被成功安装在了/usr/local/QT/E4.6.3-x86目录下。4. 编译及安装QT/E4.6.3-arm进入/usr/local/QT/QT/E4.6.3-arm目录,首先修改src/3rdparty/freetype/include/freetype/config/ftconfig.h文件,将第330行修改为:orr %0, %0,%2, lsl #16nt /* %0 |= %2 16 */。修改完成后开始配置configure,具体命令为:# ./configure -qt-kbd-tty -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -qt-mouse-pc -no-gfx-qvfb -no-gfx-vnc -qt-kbd-tty -qt-gfx-linuxfb -no-gfx-qvfb -no-gfx-vnc -qt-mouse-tslib -no-glib -prefix /usr/local/ QT/E4.6.3-arm -embedded arm -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs -nomake tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g+ -little-endian -qt-freetype -depths 16,18 -I/usr/local/tslib/include -L/usr/local/tslib/lib -v -D_ARM_ARCH_5TEJ_命令写好后按下回车,然后再输入O回车、输入yes回车,然后configure就开始配置生成Makefile,配置成功后会有一个提示,然后就可以根据系统的提示进行编译安装了,具体命令为:# make# make install5环境变量的设置由于我们有两种不同架构的QT/E,为了使用方便不与混淆,所以我们使用脚本设置环境变量的方法。(1)QT/E4.6.3-x86环境变量设置QTEDIR=/usr/local/QT/E4.6.3-x86PATH=/usr/local/QT/E4.6.3-x86/bin:$PATHLD_LIBRARY_PATH=/usr/local/QT/E4.6.3-x86/lib:$LD_LIBRARY_PATH(2)QT/E4.6.3-arm环境变量设置QTEDIR=/usr/local/QT/E4.6.3-armPATH=/usr/local/QT/E4.6.3-arm/bin:$PATHLD_LIBRARY_PATH=/usr/local/QT/E4.6.3-arm/lib:$LD_LIBRARY_PATH至此QT/E开发环境的建立全部成功。14第六章 车载音乐播放系统设计6.1 SQLite数据库数据库几乎是每个较大的软件所必须应用的,而在Qt中也使用QtSql模块实现了对数据库的完美支持。 6.1.1 SQLite数据库简介SQLite顾名思议是以SQL为基础的数据库软件,SQL是一套强大的数据库语言,主要概念是由数据库、资料表(table)等单元组成的关联性数据库。因为SQL的查询功能强大,语法一致而入门容易,因此成为现今主流数据库的标准语言。 6.1.2 SQLite数据库的操作启动sqlite3程序,仅仅需要敲入带有SQLite数据库名字的sqlite3命令即可。如果文件不存在,则创建一个新的(数据库)文件。然后sqlite3程序将提示你输入SQL。敲入SQL语句(以分号“;”结束),敲回车键之后,SQL语句就会执行。6.1.3 Qt程序中对SQLite的操作在使用QT编程中同样可以使用QT的机制来操作SQLite数据库,以下QT的语句就实现了同前面在命令行中操作一样的效果:static bool createConnection() /创建数据库链接函数 QSqlDatabase db=QSqlDatabase:addDatabase(QSQLITE); db.setDatabaseName(ktv.db); if (!db.open() return false; QSqlQuery query; query.exec(QObject:tr(create table song(歌名 vchar,歌手 vchar); return true;其中QSqlDatabase类实现了数据库连接的操作,QSqlQuery类用来执行SQL语句。6.2 使用Qt Creator 进行系统开发 6.2.1 熟悉Qt Creator IDEQt应用程序除了使用手工编写代码的方式外,还可以用过Qt Creator来完成,Qt Creator的功能十分强大,而且还提供了大量可供编程使用的组件。如图6.1所示是在Linux环境下打开后的第一屏显示的主界面,通过这个界面我们可以对Qt Creator的开发环境有一个大概的了解,下面我们就使用它来开发我们的车载音乐播放系统。图6.1 Qt Creator主界面6.2.2 使用Qt Creator 建立工程打开Qt Creator,然后在点击File菜单选中子菜单项中的第一个New File or Project进行创建工程,工程文件以及其他代码文件都放在了你所指定的路径下。6.2.3 设计界面使用Qt Creator完成工程的创建后首先是设计界面,如图6.2所示为系统的界面,界面中包括了Table View、Push Button等部件。图6.2 系统主界面6.2.4 程序代码的编写程序中用到了SQLite数据库,所以首先需要创建一个关于数据库的创建和链接的头文件,文件名为database.h,然后将源文件修改为以下内容:static bool createConnection() /创建数据库链接函数 QSqlDatabase db=QSqlDatabase:addDatabase(QSQLITE); db.setDatabaseName(ktv.db); if (!db.open() return false; QSqlQuery query; query.exec(QObject:tr(create table song(歌名 vchar,歌手 vchar); return true;内容修改完成后,打开工程文件在文件的最后添加一行关于使用数据库的声明,内容如下:QT +=sql最后是对程序的构造以及功能的实现做工作,这一步是最麻烦也是最费时间的一步,首先是编写构造函数、然后是析构函数、最后各个信号与槽的链接以及实现代码的编写,至此代码的初步编写工作完成。6.2.5 程序调试以及修改界面设计、代码编写完成后,就需要对程序进行功能调试以及修改,这一步也是非常的费时间中间可能还会牵扯到一些技术难题,所以在这一步一定要仔细认真,如图6.3所示为系统运行后的主界面。图6.3 系统运行后的主界面6.2.6车载音乐播放系统的功能测试打开主界面后,点击你想要听的歌曲系统就会自动将歌曲添加到已选列表内并且开始自动播放,如图6.4所示正在播放所选的歌曲。图6.4 播放选择的歌曲如果我们不想听当前的歌曲,就可以点击关闭播放按钮关闭当前的播放,然后我们还可以选择自己喜欢的歌曲,然后单击播放列表按钮就开始了播放,我们就可以享受听歌带来的乐趣了,如图6.5所示。图6.5 播放列表中的歌曲在播放的过程中用户如果想更换列表中的其他歌曲只需要双击想要听的歌曲即可,这里我们将歌曲更改为My Love,如图6.6所示。图6.6 更改正在播放的歌曲最后如果我们想关闭系统就可以直接点击主界面上的退出按钮就可以快速的退出系统了,我上面的测试只是程序大概的运行情况以及各种功能的介绍,同时我们的程序功能测试也完成了。6.3 MPlayer播放器 6.3.1 MPlayer简介MPlayer是Linux上的播放器,它的功能十分强大,能够播放众多格式的文件,在X86 PC机上运行很稳定,也可以把它移植到非X86CPU上的嵌入式系统中来。 6.3.2 MPlayer播放器的架构MPlayer播放器分为4层:输入层、分流层、解码层、输出层。输入层( input layer) :该层包含读取媒体文件模块,该模块将媒体文件的媒体数据按流的方式读入,并存放于数据缓冲区,通过解析文件头来判断该数据流属于何种音频、视频格式的文件。MPlayer的逻辑结构图分流层:包含分流器功能模块,该模块MPlayer逻辑结构分为通过分析文件头来判断音频在该段数据中的位置,然后将音频存入自己的缓冲区。同时,提取时间戳( PTS, Presentation timestamp) ,通过控制时间戳可以实现音频的同步。解码层:该层包含音频的解码模块和解码器选择模块。20第七章 系统的移植与集成 7.1移植QT/E4.6.3以及tslib1.4到开发板由于我们的程序是基于QT开发的,所以在程序运行之前需要先将QT/E移植到开发板上,搭建程序运行需要的平台。复制程序运行需要用到的库文件,拷贝库完成后,对于有些库文件,可以裁剪一下,最后将/usr/local/QT/E4.6.3-arm/lib/中的所有文件打包,再将tslib校准程序移植。然后将整个tslib目录打包,最后将所有打包的文件全部放到一个目录下,将所有包放进去,解压整理,最终生成一个应用程序包。至此移植已接近尾声,下面把编译好的应用程序包下载到S3C2410开发板上。进入touch目录进行触摸屏校准,tslib1.4移植成功。最后进入qte4.6.3目录中,写一个qt.sh脚本。至此,qte4.6.3、tslib1.4移植到博创S3C2410平台上的工作全部完成,这也意味着我们的车载音乐播放系统的运行平台搭建成功。 7.2 MPlayer的编译及移植编译比较简单,只有一个命令就可以了:# make编译过程是很漫长的,主要是在配置的时候没有把一些没用的codec 给去掉若没有出错的话,编译完成后,则在MPlayer目录下面看到生成的MPLayer可执行文件。将可执行文件MPlayer下载到目标板的/root/MPlayer目录下,即完成了MPlayer的移植。 7.3 车载音乐播放系统的移植系统平台搭建完成后,我们就可以将前面所开发的程序移植到目标板S3C2410上面,下面简单介绍一下程序的移植步骤。7.3.1 交叉编译将前面编写完成的程序代码进行交叉编译,编译步骤如下:进入源代码所在目录,使用绝对路径的qmake编译工具,由于程序编译后要在目标平台上运行,所以具体执行命令如下:# /usr/local/QT/E4.6.3-arm/bin/qmake project生成工程文件后打开并在文件最后添加:QT +=sql然后再执行命令生成Makefile:# /usr/local/QT/E4.6.3-arm/bin/qmake最后再执行命令进行交叉编译:# make支持交叉编译完成,在目录下生成了一个在arm架构上可以执行的二进制文件,这就是所需要的可执行文件。7.3.2 将程序下载到开发平台并运行交叉编译完成后,将生成的最终程序文件放到共享目录下,然后通过minicom连接上目标板,并使用交叉线将目标板和PC机连接,然后设置目标板的IP地址,将目标板的IP地址和PC机的IP地址设置为同一网段,这里我将目标板的IP地址设置如下:Ifconfig eth0 89 broadcast 54Inetd使用inetd命令是使IP更改生效。完成后,在windows下使用flashXP软件,通过输入目标板的IP地址匿名连接,连接成功后将共享目录中的最终程序下载到目标板,然后在目标板上执行如下命令:cd /root/qte4.6.3/binmv /root/system/var/ftp/pub/ktv .chmod +x ktv然后返回上层目录:cd .将用到的歌曲文件放在当前目录然后编写程序运行脚本。通过执行脚本就可以运行我们的程序,至此我们的系统移植工作完成,这也标志着我们的整个车载音乐播放系统的完成。59第八章 系统整体测试8.1触屏的测试与校准通过串口连接上目标平台后,进入/root/touch目录,然后执行touch.sh脚本进行触摸屏的测试和校准,校准程序执行后运行正常,可以进行校准,触屏的测试和校准完成。8.2 系统完整的运行测试正常运行系统后,通过测试、播放列表、关闭播放、以及下页等功能后系统运行正常稳定,如图8.1所示。图8.1 系统的整体运行 至此我们的车载音乐播放系统的基本制作阶段已经完成,系统已经具有车在音乐播放系统的雏形。附件:大学本科生毕业论文(设计)规范一、毕业论文(设计)格式规范一份完整的毕业论文(设计)材料一般应包括下列内容:(一)题目;(二)目录;(三)论文主体(包括中英文摘要及关键词;正文;致谢;参考文献等);(四)附录。具体分述如下: (一)题目题目应力求简短、精确、有概括性,直接反映毕业论文(设计)的中心内容和学科特点。题目一般不超过20个汉字,如确有必要,可用副标题作补充。(二)目录毕业论文(设计)必须按其结构顺序编写目录,要求层次分明,体现文章展开的步骤和作者思路。目录格式是论文的结构层次,反映作者的逻辑思维能力,所用格式应全文统一,每一层次下的正文必须另起一行。目录独立成页,以章、节、小节来编排。(三) 论文主体1、中英文摘要及关键词摘要一般不分段,不用图表,以精炼的文字对毕业论文(设计)的内容、观点、方法、成果和结论进行高度概括,具有独立性和自含性,自成一篇短文,具有报导作用。中文摘要一般以200-300个字为宜。关键词是反映毕业论文(设计)内容主题的词或词组,一般35个。其中英文摘要与中文摘要基本对应,英文关键词之间用分号分开,最后一个关键词后不加任何标点。2、正文包括引言、正文、结论等部分。(1)引言引言也称前言、导论、导言、绪言、绪论等。它的作用是向读者初步介绍文章的背景和内容,通常包括以下几个方面:为什么写这篇文章,要解决什么问题;论文的主要观点;与课题相关的历史回顾;写作资料的来源、性质及其运用情况,论文的规划和简要内容;研究中的新发现;课题的意义等。(2)正文正文是论文的核心部分,是作者学术理论水平和创造性工作的综合体现,是作者运用掌握的材料与方法进行论证、得出结论的部分,其任务是分析问题和解决问题。根据不同论文研究的课题性质、研究方法的不同,理论型、实验型和描述型论文的正文格式和写法不尽相同,但他们的要求是一致的。即:主题明确:全文围绕主题展开讨论,不离题;论证充分:有观点、有思路、有材料、有说服力;结论清楚:研究导出的结论不含糊、易理解;逻辑严密:文字精炼流畅、条理清晰。(3)结论结论是论文要点的回顾和提高,是整个研究过程的结晶,是全篇论文的精髓。结论中应对本篇论文解决了什么问题,得出了什么规律,存在什么问题给出明确的回答。撰写结论时,要注意精炼准确、总结提高、前后呼应。3、致谢(无必要时可省略)以精练的文字,对在毕业论文(设计)工作中直接给予指导、帮助的人员表示谢意,言辞恳切,实事求是。4、参考文献毕业论文(设计)须在论文的最后列出参考文献。参考文献应以公开发表过的、作者真正阅读过的、与论文密切相关的或直接引用的为限,未发表过的论文、试验报告、内部资料等不宜列入。参考文献的列写必须严格按照毕业论文(设计)中引用的先后顺序依次列写。参考文献的列写格式,详见“毕业论文(设计)的书写规范与打印要求”。(四)附录(无附录时可省略)凡不宜收入正文中的、又有价值的内容可编入毕业论文的附录中。如:大号的设计图纸;篇幅较大的计算机程序(但以研究软件程序为主的毕业论文题目,其程序可作为正文的一部分);过长的公式推演过程。其它内容如译文及原文、专题调研报告、文献综述等可另行装订成册。二、毕业论文(设计)的书写规范与打印要求(一)书写规范1、 引用有关政策、方针性内容务必正确无误,不得泄漏国家和单位机密。2、使用普通语体文写作,体例统一,文句通顺,无语法错误,简化字符合规范,标点符号使用正确,符号的上下角标和数码要写清楚且位置准确。3、采用中华人民共和国国家标准(GB31003102-93)规定的计量单位和符号,单位用正体,符号用斜体。4、使用外文缩写代替一术语时,首次出现的,应用括号注明其含义,如CPU(Central Processing Unit,中央处理器)。5、国内工厂、机关、单位的名称等应使用全名,如不得把“大学”简写成“衡阳师院”或“衡师院”。6、公式应另起一行并居中书写,一行写不完的长公式,最好在等号处或在运算符号处转行。公式编号用圆括号括起,示于公式所在行的行末右端。公式编序可以全文统一,依前后次序编排,也可以分章节编排,但二者不能混用。文中公式、表格、图的编排应统一。7、文中引用某一公式时,应写成:“由式(5)可知”。8、文中表格可以全文统一编序,也可以逐章独立排序,表序必须连续。文中引用表格时,“表”在前,序号在后,如:“见表8”。 表格格式可采用三线表,表格的名称和编号应居中,并位于表格上方,表序在前,表名在后,其中空一格,表名末不加标点符号。如: 9、文中插图都应有名称和序号,可以全文统一编序,也可以逐章独立排序,图序必须连续。文中引用插图时,“图”在前,序号在后,如:“见图12”。图的名称和编号应居中并写于图的下方,图序在前,图名在后,其中空一格,末尾不加标点。如: 插图应用Word文档绘制,或用CAD绘制后插入,不得用铅笔、钢笔、圆珠笔等绘制(特殊情况除外)。10、“正文”中如对某一术语或情况需加解释而又不宜写入正文时,应在此“术语”或“情况”后引入注释符号,置于右上角,有多个注释时,应依次编号,如:、。11、参考文献的书写格式:参考文献采用宋体5号字。正文引用参考文献依次编序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论