基于QT的图形界面控制系统的开发

  • 格式:doc
  • 大小:17.00 KB
  • 文档页数:4

龙源期刊网

基于QT的图形界面控制系统的开发

作者:汪国强 赵弘磊 焦亮

来源:《科技创新导报》2011年第21期

摘 要:在linux操作系统下,以qtopia为图形界面应用程序开发平台,介绍了图形界面控制系统的开发过程。首先阐述了控制界面的开发环境的建立,介绍了界面应用程序的设计,以完成后续温度数据采集、显示、目标预设等功能。

关键词:Qt技术图形界面控制系统程序的设计

中图分类号:TP29 文献标识码:A 文章编号:1674-098X(2011)07(c)-0023-02

随着嵌入式技术的发展,越来越多的智能化带有界面控制功能的小型设备深入到人们生活当中。开发者基于嵌入式领域中的Qt技术,设计出一套应用于工控领域的具有人机交互界面的智能控制系统,该系统实现AD双路读取、数据显示、温度预设、PWM自动调节等功能,本文着重介绍界面设计过程。

1 图形用户接口环境的建立

1.1 安装Qt/Embedded2.3.7命令

tar xvzf qt-embeded-2.3.7.tar.gz

cd qt.2.3.7

export QTDIR=$QTDIR

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH./configure –qconfig –qvfb

–depths 4,8,16,32

Make sub-src

其中设置QT嵌入式开发包虚拟缓冲帧工具qvfb,并支持4,8,16,32位显示颜色的深度。虚拟出来的缓冲帧和硬件平台设备上的每个像素保持一致,这样在软件开发和系统调用时就不用总是刷新嵌入式设备的FLASH存储空间,加速了整个研发的周期。 龙源期刊网

1.2 安装Qt/X112.3.2

Qt/X112.3.2提供用户接口编译器uic,它所产生的源文件和Qt/embedded的库一应起被编译链接,但是QT for X11的版本该要比Qt/Embedded旧,否则会导致软件不兼容。

1.3 安装qtopia

为了避免qtopia2.2.0复杂的配置编译的过程,我们直接从arm9论坛下载了关于qtopia的安装脚本并执行。

2 图形界面的设计

2.1 用QT图形设计器设计控制界面

用QT图形设计器是一个具有可视化用户接口的设计工具。按照项目需要,控制界面要求简单,可预设控制值,将界面分为一级主目录和若干个二级子目录和三级子目录。其中主菜单为功能选项,二级子菜单包括状态显示、温度预设、视频监控、功能简介等(视频监控,和多算法选择现在还没有开发完全)。如图一、图二所示,为上位机QT环境下设计的一级菜单界面和子菜单中的状态显示界面:

uic自动创建了类 CDlgMonitorBase,这个类是以公有方式对QDialog窗口类的继承:class

CDlgMonitorBase : public QDialog。在该类中添加公有成员:QPushButton* btn_up;提供上选择按钮部件;其他三个触摸按键添加同此方法,完成父类控件的信号与槽的配对,实现上下选择、确定、取消功能:

connect((QObject*)btn_ok,SIGNAL(clicked()),this,SLOT(menu_select()) );

在QT应用程序的read_adc(int ch)函数中,命令int ret = ioctl(adc_fd, ADC_SEL_CHANN, ch),其中ch是传递进来的通道号0或者1;adc_fd是设备号,这里传递进来的为ADC的设备号,而ADC_SEL_CHANN可以理解为一条命令,直接与ADC的驱动相联系,调用驱动里命令读取ADC数据寄存器ADCDAT0里的值,如果读到值,ioctl返回值为1。最终read_adc(int ch)实现了读取ADC数据寄存器中的值。系统不仅具备触摸屏按键控制功能,而且具备硬件面板真实按键功能,为了能够使两者建立映射关系,在MyPIGPC.cpp中具体实现如下:

bt[0] = btn_status[0];

bt[1] = btn_status[1];

bt[2] = btn_status[2]; 龙源期刊网

bt[3] = btn_status[3];

for (int i=0; i

{ btn_status[i] = 0; }

if (bt[0]) menu_movedn();

if (bt[1]) menu_select();

if (bt[2]) menu_moveup();

if (bt[3]) closeme();

btn_status[]是在头文件中用静态变量定义的四成员的数组,分别对应着控制的液晶触摸按键,当硬件面板上有按键被按下,驱动程序会使btn_status[]中的相应变量值为1,然后btn_status[]数组值将赋值给数组bt[],值得注意的是两个数组的区别,前者使用静态变量定义的,会在内存中永久性地分成一片空间用来单独感应按键是否被按下,将其值付给char型数组bt[]后,btn_status[]数组随即清零以便感受是否有新的键被按下。menu_movedn();menu_select();menu_moveup();closeme();分别是触摸上四个按键触发后所对应的槽函数,当硬件按键被按下后,调用相应函数,实现的效果与点击触摸屏所实现的效果是一样的。

2.2 硬件平台控制界面的实现

将编写好的程序经交叉编译生成mypigpc,mypigpc.desktop,mypigpc.png三个文件,通过ftp传到目标板以下三个目录:

mkdir -p /opt/Qtopia/pics/mypigpc

cp mypigpc.png /opt/Qtopia/pics/mypigpc/

应用程序图标存放在该文件夹下。

chmod 777 mypigpc

使登录的所有人具有最高权限。

cp mypigpc /opt/Qtopia/bin

可执行文件存放该文件夹下。

cp mypigpc.desktop /opt/Qtopia/apps/Application 龙源期刊网

此时已把程序固化到硬件平台的FLASH中。

3 结语

本文简述了界面开发环境的建立,各级界面的设计,应用程序工作的流程。实现了界面控制、显示、触摸按键与硬件平台按键的映射功能。