基于ARM和QT的嵌入式图形用户界面设计与实现.docx
《基于ARM和QT的嵌入式图形用户界面设计与实现.docx》由会员分享,可在线阅读,更多相关《基于ARM和QT的嵌入式图形用户界面设计与实现.docx(12页珍藏版)》请在冰豆网上搜索。
基于ARM和QT的嵌入式图形用户界面设计与实现
基于ARM和QT的嵌入式图形用户界面设计与实现
课程设计报告
题目:
基于ARM和QT的嵌入式图形用户界面设计与实现
专业:
自动化,电站,
班级:
XXXXXX
姓名:
学号:
一、Qt课题研究意义、国内外研究现状及应用分析:
Qt是一个跨平台的C++图形用户界面库,是挪威Trolltech公司的产品。
Qt是一个全面的C++应用程序开发框架。
它包含一个类库,和用于跨平台开发及国际化的工具。
Qt是用于本地化跨平台应用开发的领先性框架。
Qt应用程序接口与工具兼容于所有支持平台,让开发员们掌握一个应用程序接口,便可执行与平台非相关的应用开发与配置。
通过使用Qt,开发小组们从主要的开发平台,可为主要操作系统创建本地化的应用程序。
众多的Qt类库构成Qt的基础。
该库可以利用大约400个面向对象的类,这些类带有大多数构建跨平台服务器与富客户端应用程序的底层基础构造函数.这些库包括用于GUI、布局、数据库、国际化、网络与XML等的类。
在开发用户图形界面中,一个常见并重复发生的系统崩溃与问题源,即如何在不同组件之间进行通信。
对于该问题,Qt的解决方案为信号与槽机制。
信号与槽是Qt的主要特征,它对促进对象通信提供一个类型安全的方法,并可能是区别于其它多数框架所提供特征的一个部分。
Qt/Embedded是一个完整的自包含GUI和基于Linux的嵌入式平台开发工具,是Qt在嵌入式平台的版本。
Qt/Embedded以原始Qt为基础,并做了许多出色的调整以适用于嵌入式环境。
Qt/Embedded通过QtAPI与LinuxI/O设施直接交互,成为嵌入式Linux端口。
同Qt/X11相比,Qt/Embedded很省内存,因为它不需要一个X服务器或是Xlib库,它在底层摒弃了Xlib,采用framebuffer(帧缓冲)作为底层图形接口。
同时,将外部输入设备抽象为keyboard和mouse输入事件。
Qt/Embedde的应用程序可以直接写内核缓冲帧,这避免开发者使用繁琐的Xlib/Server系统。
图一、Qt/Embedded与Qt/X11的比较
Qt/Embedded的底层图形引擎基于Framebuffer。
Framebuffer是Linux2.2.x以上本版内核中的一种驱动程序接口。
这种接口采用mmap系统调用,将显示设备抽象为帧缓冲区。
用户可以将它看成是显示内存的一个映象,将其映射到进程地址空间之后,就可以直接进行读写操作了,而写操作可以立即反映在屏幕上。
framebuffer驱动程序是最重要的驱动程序之一,正是这个驱动程序才能使系统屏幕显示内容。
其实现分为两个方面:
一是对LCD及其相关部件的初始化,包括画面缓冲区的创建和对DMA通道的设置;二是对画面缓冲区的读写,具体到代码为read、write等系统调用接口。
Qtopia是一种全方位的应用程序开发平台,它可用于基于嵌入式Linux的PDA(个人数字助理),移动电话,webpads,以及其他移动计算设备。
Qtopia构建于Qt/Embedded之上,是专为基于Linux的消费电子设备提供和创建图形用户界面而设计的。
常见的有2种版本:
QtopiaPhone版和QtopiaPDA版。
QtopiaPhone版必须付费才
1
能得到,而QtopiaPDA版有免费版本。
输入法:
Qtopia支持两种基本类型的输入法。
Qtopia可由带有少量按键的键盘驱动,也可由用于触摸屏设备的手写笔驱动。
Qtopia支持众多的文本输入方式,包括基于键盘的预测键入,可定制的手写识别,以及屏幕键盘输入。
此外,还支持数种可用于亚洲书写系统的第三方输入方式。
国际化支持:
Qtopia内部使用统一的代码,因此可以很方便地针对不同的市场进行本地化。
此外,程序的设计引擎能自动调整比原始文本长或短的翻译文本的按钮和标签。
目前,Qtopia支持多种语言。
屏幕尺寸/布局:
Qtopia强大的设计引擎支持各种屏幕尺寸以及横向和纵向布局,包括176×208,176×220,240×320和480×640(像素)。
程序发布器:
Qtopia含有一个程序发布器。
根据使用版本的不同(PDA或Phone),程序发布器也会有所不同,但它始终包含一个默认的基于图标的应用程序导航布局方案。
插件管理器:
Qtopia自带的插件框架使得向设备添加新特性无缝化且便捷。
用户可以添加新字体,插入新的多媒体格式,添加或移除输入方式,插入新的媒体播放器外观,新的主项,以及许多其他特性。
QtopiaPDA版本简介:
QtopiaPDA版(Trolltech)是第一个用于嵌入式LinuxPDA的全方位应用程序开发平台。
QtopiaPDA版(QtopiaPDA),名副其实基于Linux的PDA的标准,可为新一代的高级移动计算设备提供稳定的软件平台。
QtopiaPDA运行于Linux之上,只需占用少量内存就能提供强大的功能。
Qtopia开发模式:
Qt/Embedded和
嵌入式软件开发通常都采用交叉编译的方式进行,基于Qt/Embedded与Qtopia的GUI
应用开发也采取这样的模式。
先在宿主机上调试应用程序,调试通过通过后,经过交叉编译
移植到目标板上。
二、方案设计及功能模块:
方案:
在pc机linux系统下安装qtpia软件,在安装完成qtpia后,利用Qt软件设计一个图形化界面“welcometoQt”,进行“welcometoQt”的编程,“welcometoQt”实现的功能为,运行“welcometoQt”,在开始界面上我们可以看到三个按钮,分别为显示字符串,quit(退出),dialog(对话框)。
实现的功能,显示字符串,按quit退出程序,点击dialog出现对话框,实现人机交互。
三、系统硬件平台:
硬件:
PC机一台
MagicARM2410教学实验开发平台一套
四、系统软件功能设计,程序流程图及代码实现:
2
首先是安装qtpia,然后进行编程,以实现想要的软件功能。
图形化界面软件的功能大致为,运行程序点击按钮会显示一串字符,而通过编程我们可以改变软件的框图大小,软件名字有我们自定义,显示的字符标签也由我们自定义,然后我们可以插入按钮部件,用按钮来控制软件的下一步动作。
在对按钮编程时,我们可以自定义它的大小,且可以设置它的一些属性,比如显示按钮,按钮的名字等。
然后是对dialog按钮进行编程,它实现了显示一个新的对话框,自定义对话框的标题,点击对话框中的按钮,将会关闭新对话框。
最后对界面中的
开始
布局Button1QuitDialog
显示字符点击退出新对话框
关闭对话框
图二、程序框图
按流程图我们按以下步骤完成实验:
1、首先对主程序进行编写,步骤如下:
(1)进入/zylinux/x86-qtopia目录,运行set-env脚本,为本实验设置环境变量,然后创建文件夹hello。
命令行中输入以下命令:
$cd/zylinux/x86-qtopia
$.set-env
$mkdirhello
(2)进入hello目录,新建文件hello.cpp,并编写如程序清单9.1所示的程序,然后用progen工具生成工程文件hello.pro。
命令行中输入:
$cdhello
$vihello.cpp
$progen–tapp.t–ohello.pro
(3)使用tmake工具,生成hello工程的Makefile文件。
命令行:
$tmake-oMakefilehello.pro(4)修改Makefile文件,在LIBS变量中增加需要用到的库,然后输入make命令编译。
LIBS=$(SUBLIBS)-L$(QTDIR)/lib-lqte-lm-lstdc++
$make
(5)启动虚拟控制台,运行hello程序,将会得到如图9.1所示的实验结果(主机须启动帧缓冲,必须能够访问/dev/fb0)。
命令行:
3
$cd/zylinux/x86-qtopia
$.set-env
$cdhello
$./hello–qws
或者在终端,启动虚拟缓冲区和QPE,启动Qtopia的终端,输入./hello运行程序。
命令行中输入:
$cd/zylinux/x86-qtopia
$.set-env
$cdhello
$qvfb&
$qpe
2、按钮子程序编程步骤:
(1)进入/zylinux/x86-qtopia目录,运行set-env脚本,设置环境变量,然后创建文件夹button。
命令行中输入:
$cd/zylinux/x86-qtopia
$.set-env
$mkdirbutton
(2)进入button目录,新建文件button.cpp,并编写如程序清单9.2所示的程序,然后用progen工具生成工程文件button.pro。
命令行中输入:
$cdbutton
$vibutton.cpp
$progen–tapp.t–obutton.pro
(3)使用tmake工具生成Makefile文件,并按照9.1小节进行修改,编译程序,得到可执行文件button。
输入命令:
$tmake–oMakefilebutton.pro
$make
(4)启动虚拟控制台,运行button程序。
命令行中输入:
$./button–qws
3、quit子程序编程步骤:
(1)进入/zylinux/x86-qtopia目录,运行set-env脚本,设置环境变量,然后创建文件夹signalslot。
命令行中输入:
$cd/zylinux/x86-qtopia
$mkdirsignalslot
(2)进入signalslot目录,建立文件signalslot.cpp,并编写如程序清单9.3所示的程序,然后用progen命令生成工程文件signalslot.pro。
命令行中输入:
$cdsignalslot
$visignalslot.cpp
$progen–tapp.t–osignalslot.pro
(3)使用tmake工具,生成signalslot工程的Makefile文件,然后编译,得到可执行文件signalslot。
命令行中输入:
$tmake–oMakefilesignalslot.pro
4
(4)启动虚拟控制台,运行signalslot程序,将会得到如图9.3所示的结果,点击“Quit”按钮,程序将退出。
$./signalslot–qws
4、dialog对话框编程步骤:
目录,运行脚本,设置环境变量,然后创建文
(1)进入/zylinux/x86-qtopiaset-env件夹dialog.。
命令行中输入:
$cd/zylinux/x86-qtopia
$mkdirdialog
(2)进入dialog目录,建立文件userdialog.h和userdialog.cpp,(程序在下面程序清单中),然后用progen工具生成工程文件userdialog.pro。
输入命令:
$cddia