新闻中心

EEPW首页>消费电子>设计应用> 嵌入式机车车辆车载播放系统软件设计与实现

嵌入式机车车辆车载播放系统软件设计与实现

作者: 时间:2018-09-05 来源:网络 收藏

1.Qt简介

本文引用地址://m.amcfsurvey.com/article/201809/388447.htm

Qt是Trolltech公司的标志性产品(现Trolltech公司已被手机巨头NOKIA公司收购),是一个跨平台的C++图形用户界面(GUI)工具包。它既可以开发GUI程式,也可用于开发非GUI程式,比如控制台工具和服务器。Qt是面向对象语言,易于扩展,并且允许组件编程。Qt应用程序接口与工具兼容于所有支持平台,让开发员们掌握一个应用程序接口便可执行与平台非相关的应用开发与配置。

Qt支持下述平台:

1)MS/Windows-95、98、NT 4.0、ME、2000、XP、Vista和Win7;

2)Unix/X11-Linux、Sun Solaris、HPUX、CompaqTru64 UNIX、IBM AIX、SGI IRIX、FreeBSD、BSD/OS和其它很多X11平台;3)Macintosh-Mac OS X;

4)Embedded-有帧缓冲(framebuffer)支持的嵌入式Linux平台,Windows CE.

Qt对不同平台的专门API进行了专门的封装(文件处理、网络等)。

Qt被Nokia收购后推出了一款新的轻量级集成开发环境(IDE)Qt Creator.QtCreator可带来两大关键益处:提供首个专为支持跨平台开发而设计的集成开发环境(IDE),并确保首次接触Qt框架的开发人员能迅速上手和操作。

Qt Creator包含了一套用于创建和测试基于Qt应用程序的高效工具,包括:一个高级的C++代码编辑器、上下文感知帮助系统、可视化调试器、源代码管理、项目和构建管理工具。

Qt/Embedded(简称QT/E)是一个专门为嵌入式系统设计图形用户界面的工具包,是NOKIA公司的图形化界面开发工具Qt的嵌入式版本,它通过QtAPI与LinuxI/O以及Framebuffer直接交互,拥有较高的运行效率,而且整体采用面向对象编程,拥有良好地体系架构和编程模式。

Qt/embedded和Qt一样,在4.5版本之后提供了三种不同的授权协议GPL,LGPL和Commercial.开发者使用QT/E开发的应用程序要移植到不同平台时,只需要重新编译代码,而不需要对代码进行修改。并可以随意设置程序界面的外观、方便地为程序连接数据库、使程序本地化、将程序与Java集成等。

2.使用Qt Creator设计界面

在Qt Creator中完成车载播放器工程的创建后首先是设计界面。界面可用代码生成,也可用Qt Designer辅助设计。使用Qt Designer设计界面只需将界面中所需的窗口部件拖入ui界面文件中,然后设置属性修改其显示效果,最后使用布局控件设置布局效果。通过拖放窗口部件完成的界面在布局上不够精确,因此本系统采用纯代码来完成界面开发。

本系统的界面主要包括的窗口部件有Table View、Push Button等。在界面的布局上,系统采用了手工布局方式。

手工布局方式通过基类Q W i d g e t提供的setGeometry()函数来设置子窗口部件的位置和大小,当窗口大小改变的时候,重新计算窗口的大小或者变化比例,然后重载QWidget::resizeEvent(QResizeEvent*)函数,能够使得子窗口部件的大小和位置作出适应性的改变。

如图1所示为本系统的主界面:

界面设计的主要开发过程如下:

1)使基础窗口QWidget继承于主窗口QMainWindow,窗体构造函数负责模板的初始化;

2)创建MyButton类构造窗体按钮部件,并对窗口部件中使用的对象以及函数进行声明,包括图标、名称、字体、文本、坐标、画笔、按钮是否有效、重绘时间、鼠标按下事件等;

3)添加按钮的信号与槽。系统界面中每个功能按钮都对应一个信号和槽,信号和槽式Qt编程的核心技术,通过信号可以将界面上的空间所发生的事件进行发射,槽函数负责接受相应信号并作出响应处理。如播放暂停按钮,与其对应的信号是单击,它的单击信号连接一个槽处理函数,在这个函数中通过QProcess来向slave模式下的MPlayer发送命令,达到控制播放的目的。其他的控件在处理方式上都与播放暂停按钮类似,都有自己得信号和槽。

3.软件功能模块设计

机车车辆车载播放器主要由音频播放和视频播放两大部分组成,这两部分存在着很多相同和相似的功能,为避免重复编码,采用C++面向对象的模块化设计思想,将两部分中功能相似的部分抽取出来,形成独立的功能模块,提高了软件的可重用性和系统的运行效率。各功能模块均采用C++类来实现,对模块内部的数据进行封转,对外提供接口供外部调用,一方面提高了系统的数据安全性,另一方面也使软件编码更加的规范。

为实现机车车辆车载播放系统的功能,创建了窗体文件用于设置车载播放器的窗体;创建了配置文件用于处理系统配置信息;创建了用于实现对数据库操作的源文件;创建了触摸屏控制文件以及歌曲列表文件。

具体功能模块设计方式如下:

1)搜索歌曲

点击搜索歌曲按钮时,跳出一个对话框,当用户输入了歌曲名或名称中的部分内容并确定后,发送消息到服务器端,服务器端对表song进行模糊查询,得到符合的歌曲列表,将这些信息返回给客户端,在客户端形成一个QwidgetTable控件,用来显示搜索的结果。当用户点击其中的一行时,将相应行的歌曲信息赋值给current并播放。

2)上一首

上一首按钮连接了prev()函数,它的功能是通过prev()函数来实现的。在此函数中,实现读取usersong.xml文件中位置为songpos-1的歌曲信息,赋值给current,然后进行播放,实现上一首功能。

3)播放

当点击播放按钮时,隐藏播放按钮,显示暂停按钮,并读取c u r r e n t中的信息,通过Phonon的函数play()实现播放。

4)暂停

当点击暂停按钮时,隐藏暂停按钮,显示播放按钮,调用Phonon中的pause()函数,将播放暂停。

5)下一首

当点击下一首按钮时,调用nextFile()函数,并且当歌曲播放完之后会产生一个aboutToFinish()信号,这个时候也会调用nextFile()函数。在此函数中调用readinformation()函数,得到下一首的信息,并播放。


上一页 1 2 下一页

关键词:

评论


相关推荐

技术专区

关闭