-
2008年10月
第45卷增刊2
四川大学学报(自然科学版)
Jou
rnalofSichuanUniversity(Natural
ScienceE
dition)
oCt.2008
V01.45
Suppl.2
文章编号:0490
-6756【2008)Suppl-0061
?
04
实时数据曲线绘制的Qt编程实现
杨盛毅1,文
方1,师娇2
(1.贵州大学电气工
程学院。贵阳550003;2.北京理工大学宇航科
学技术学院,北京100081)
摘要:动态绘制和显示实时数据曲线是工业测控系统中一项重
要功能.本文提
出了一种利用Qt编程动态绘制实时数据曲线的方案,解决了由于绘制时
间较长而
无法满足实时显示要求的问题,并通过实例介绍了其具体实现方法.实践证明该
绘
制方案能满足实时监控的要求.关键词:测控系统;实时数据曲线;Qt
中图分类号:TP311
文献标识码:A
Realizationof
real_time
data
curve
drawingbaseon
Qtprogramming
YAN
GSheng
—
Yil,WENFan91,SHIJia02
(1.CollegeofElectricEnginee
ring,Gu
izhouUniversity,Guiyang550003,Ch
ina,
2.SchoolofAerospaceScie
nceand
Engineering.BeijingIn
stituteofTech
nology,Beijing100081,China
)
Abstract:Dynamicdrawingand
showingt
hereal
—
ti
medata
curve
is
an
importantfunctionoftheindustri-
< br>
altestingan
dcontrollingsystem.Amet
hodofdynamicdraw
ingandshowingthereal
—
timedat
acurve
based
on
Qtprogrammingi
sintroducedinthispap
er,anditsolvesthepr
oblemthatthedrawi
ngtimeis
too
long
to
showthedata
curve
intime.anditisillustratedby
a
integralexample
.Itprovedthatthe
programcoul
dsatisfythereal
—
timecon
trolrequirements.
Keyw
ords:testingandcontrollingsyst
em,real
p>
—
timedatacurve,Qt
1
引言
工业测控系统中,常用动态实时
数据曲线来监测某些量在工作环境变化时的控
制稳定性.从而动态绘制实时数据曲线成为
测控软件开发中的重要一环,而动态绘
制实时数据曲线存在由于绘制时间较长而无法满足
实时显示要求、绘制数据量大、
动态平滑显示等问题.Qt是由挪威Trolltech
公司开发的一个跨平台的
C++图形应用程序开发框架,基于
“
信号一槽
”
的通讯机制,并具有高度模
块化、
可重用性好、运行速度快、可移植性好等特点,对于用户开发来说是非常方便.目
前主要用于Linux下的开发.同时Qt还是跨平台的,它使得跨平台软
件编程直观、简易和方便.但同其它编程工具一样,Qt也不具备直接的动
态
曲线绘制能力,必须借助一些编程技术来实现.我们提出了一种利用Qt编程动态
p>
绘制实时数据曲线的方案,解决了由于绘制时间较长而无法满足实时显示要求的问
题.
2
实时数据曲线绘制的基本思路
所谓数据曲线,实质上是由许多直线首尾相连
组合而成,在绘图区中用直线连接两数据点来实现,通过setWindow
函
数可设定绘图区大小及绘图原点坐标.数据曲线上前一时刻数据点通常在曲线上
最左端显
示,随着时间推移,整条曲线自右向左移动.实现曲线的动态平移必然涉
及到曲线的消<
/p>
收稿日期:2008-08-31
<
/p>
作者简介:杨盛毅(1986一),男,布依族,贵州平塘人,在读硕士研究
生,研究方向为计算机测控技术.
62
四川大学学报(自然科学版)增刊2
隐或重绘,常用的两种绘图方式为:一种方式是将画线对象的属性设为与或,
然后在原位
置重绘曲线,单一背景色的情况下,也可直接用背景色重绘曲线,实现
曲线的动态效果;
另一种方式是通过调用API函数BitBh实现曲线的平滑移
动.
上述两种常用绘制方案,虽然解决了大数据量、动态平滑显示的问题,但实时
p>
性不佳,所以本文提出一种新的数据绘制方案.本方案中数据曲线上各点纵坐标反
映实时数据的大小,通过记录次新点数据,并更新最新点数据,在定时器中使用Q
< br>wid
—
get类中scorll函数定时将图象向左卷
动一定像素,卷动后sc
roll函数发送绘制事件.绘制事件中,只绘制由于卷动而空
出的区域,利用d
rawLine函数将最新数据点与次新数据点以直线相连,即可实现
实时数据曲
线自右向左的平滑移动效果.
绘图区内实时曲线的数据量由scroll函数卷曲的像素值所决定,即卷曲
的像素
越多,数据量越少,卷曲的像素越少,数据量越多.条件允许时,应增加实
时曲线的数据
量,更有利于监控现场环境的变化趋势.同时为了避免绘图区数据点
过于拥挤,可在当前
绘图区显示一部分数据曲线,通过滚动条查看数据曲线的其它
部分.3
< br>
实时曲线绘制的实时性
由于绘制时间较长而无法满足实时显示的要
< br>求,是实时数据曲线绘制中存在的普遍问题.我们提出的方案,由于每次绘制
时所
需绘制的数据极I
(2)声明模块级变量
int
myTimerld;
intxpos;
intdisplayDatalypos;intdisplayData
f
yposintdisplayDatachargebool
Close
(3)在Drawer类构造函数中添加代码
setBackgroundColor(black)myTimerld
=
0xpos=O
displayDatalcharge-----0
(4)为公有槽openDraw和closeDraw添加代码
<
/p>
openDraw:Close
—
TUR
E;
myTimerId
—
startTimer(30):
少,所以能
有效提高绘制的实时性.在程序中,通过调用函数QueryPe
rformanceC
ounter获取计算机定时器的当前值,并调用函数Qu
eryPerformanc
e
—
Frequency获取计算机定时器的频率,
通过计算绘制后计算机定时器的值与绘制前计算机定时器的值之差,再乘以定时器
< br>频率,即可得到绘制所花费的时间.目前常用PC的定时器频率在3.5
×
106
Hz左右,所以采用该方法计算绘制所花费的时
间可以精确到0.28x10一S.通过实验,得到本文所述方案的平均绘制
时间为173ns,而采用双缓冲绘制方案的平均绘制时间为1.72ms,由此
可见,
我们提出的方案有效的提高了绘制的实时性.
-
-
-
-
-
-
-
-
-
上一篇:中考口号霸气押韵
下一篇:新东方考研英语词汇乱序版(绿皮书)-对照MP3背诵