实时数据曲线绘制的Qt编程实现_第1页
实时数据曲线绘制的Qt编程实现_第2页
实时数据曲线绘制的Qt编程实现_第3页
实时数据曲线绘制的Qt编程实现_第4页
实时数据曲线绘制的Qt编程实现_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、年月第卷增刊四川大学学报(自然科学版)()文章编号:【)实时数据曲线绘制的编程实现杨盛毅,文方,师娇(贵州大学电气工程学院。贵阳;北京理工大学宇航科学技术学院,北京)摘要:动态绘制和显示实时数据曲线是工业测控系统中一项重要功能本文提出了一种利用编程动态绘制实时数据曲线的方案,解决了由于绘制时间较长而无法满足实时显示要求的问题,并通过实例介绍了其具体实现方法实践证明该绘制方案能满足实时监控的要求关键词:测控系统;实时数据曲线;中图分类号:文献标识码:,(,):,:,引言工业测控系统中,常用动态实时数据曲线来监测某些量在工作环境变化时的控制稳定性从而动态绘制实时数据曲线成为测控软件开发中的重要一环

2、,而动态绘制实时数据曲线存在由于绘制时间较长而无法满足实时显示要求、绘制数据量大、动态平滑显示等问题是由挪威公司开发的一个跨平台的图形应用程序开发框架,基于“信号一槽”的通讯机制,并具有高度模块化、可重用性好、运行速度快、可移植性好等特点,对于用户开发来说是非常方便目前主要用于下的开发同时还是跨平台的,它使得跨平台软件编程直观、简易和方便但同其它编程工具一样,也不具备直接的动态曲线绘制能力,必须借助一些编程技术来实现我们提出了一种利用编程动态绘制实时数据曲线的方案,解决了由于绘制时间较长而无法满足实时显示要求的问题实时数据曲线绘制的基本思路所谓数据曲线,实质上是由许多直线首尾相连组合而成,在绘

3、图区中用直线连接两数据点来实现,通过函数可设定绘图区大小及绘图原点坐标数据曲线上前一时刻数据点通常在曲线上最左端显示,随着时间推移,整条曲线自右向左移动实现曲线的动态平移必然涉及到曲线的消收稿日期:作者简介:杨盛毅(一),男,布依族,贵州平塘人,在读硕士研究生,研究方向为计算机测控技术四川大学学报(自然科学版)增刊隐或重绘,常用的两种绘图方式为:一种方式是将画线对象的属性设为与或,然后在原位置重绘曲线,单一背景色的情况下,也可直接用背景色重绘曲线,实现曲线的动态效果;另一种方式是通过调用函数实现曲线的平滑移动上述两种常用绘制方案,虽然解决了大数据量、动态平滑显示的问题,但实时性不佳,所以本文提

4、出一种新的数据绘制方案本方案中数据曲线上各点纵坐标反映实时数据的大小,通过记录次新点数据,并更新最新点数据,在定时器中使用类中函数定时将图象向左卷动一定像素,卷动后函数发送绘制事件绘制事件中,只绘制由于卷动而空出的区域,利用函数将最新数据点与次新数据点以直线相连,即可实现实时数据曲线自右向左的平滑移动效果绘图区内实时曲线的数据量由函数卷曲的像素值所决定,即卷曲的像素越多,数据量越少,卷曲的像素越少,数据量越多条件允许时,应增加实时曲线的数据量,更有利于监控现场环境的变化趋势同时为了避免绘图区数据点过于拥挤,可在当前绘图区显示一部分数据曲线,通过滚动条查看数据曲线的其它部分实时曲线绘制的实时性由

5、于绘制时间较长而无法满足实时显示的要求,是实时数据曲线绘制中存在的普遍问题我们提出的方案,由于每次绘制时所需绘制的数据极()声明模块级变量;()在类构造函数中添加代码()()为公有槽和添加代码:;():少,所以能有效提高绘制的实时性在程序中,通过调用函数获取计算机定时器的当前值,并调用函数获取计算机定时器的频率,通过计算绘制后计算机定时器的值与绘制前计算机定时器的值之差,再乘以定时器频率,即可得到绘制所花费的时间目前常用的定时器频率在×左右,所以采用该方法计算绘制所花费的时间可以精确到一通过实验,得到本文所述方案的平均绘制时间为,而采用双缓冲绘制方案的平均绘制时间为,由此可见,我们提

6、出的方案有效的提高了绘制的实时性程序实例此处以一个完整的程序实例说明实时数据曲线的绘制方法()首先构造实时绘图类创建类,它以公有方式继承于由于该类定义了信号和槽,所以必须将宏置于类定义的开始处在类中分别创建公有槽和,前者是开始绘制控制函数,后者是停止绘制控制函数再创建公有函数和,前者用于绘制实时曲线,后者用于绘制网格最后重载事件和,前者用于实现绘制事件,后者用于实现定时功能定义定时器实时数据曲线的横坐标实时数据啮线的最新点数据实时数据曲线的次新点数据最新点数据向次新点数据的中转变量绘制与初始化判断逻辑变量将绘制区域的背景设置为黑色设置定时器的初值设置实时数据曲线的横坐标的初值设置实时数据曲线中

7、转变量的初值设置为绘制设置每产生一个定时事件年杨盛毅等:实时数据曲线绘制的编程实现:;();();()为公有函数和添加代码():();(;)设置为初始化设置停止定时器重新绘制绘图区将画笔颜色设置为绿色绘制网格的纵轴()(,);(,一,);)(一一一)绘制网格的横轴(,一,););():();将画笔颜色设置为红色将最新点数据通过中转变量传递给次新点(,一,一);将最新点数据和次新点数据用直线连接()重载事件和():();(,(),();(一,一,);(一)();();(;():(一()一)(一,);();):();)()新建一个工程在窗体上添加一个类的对象,在其中绘制实时数据曲线;创建两个命令按

8、钮:和并用下列代码将对应的信号和槽连接起来(,(),();将开始键的单击信号与对象的槽连接在一(,(设置绘制设备的物理坐标设置画笔的逻辑坐标判断是绘制曲线还是要初始化绘制网格绘制曲线实时数据曲线的横坐标的初始化实时数据曲线中转变量初始化判断是否是我们需要的定时器向左卷动个像素装人最新数据若不是需要的定时器,将它传递给基类(),();将停止键的单击信号与对象的槽连接在一程序编译运行后的效果如图所示,绘图窗口中的数据曲线每隔一个定时时间自右向左移动设定像素当然,为了界面的美观和读数方便,可在绘图窗口周围加上坐标刻度等,本文的程序示例主要实现动态绘制实时数据曲线,其它功能的实现程序日女学学报(自然科学版)增刊结语动惫绘制寅时数榔曲线是测控系统中的重要功能模块,我们提出了一种利朋编程动态绘制实时数据曲线的方案,解陡由于绘制时问较而无法满足实时显示要求的问题,具有一定实用价值文中程序的数据均是随机模拟的,实际测控系统中只需用采集输数据或控制输出数据替换掉模拟数据即可程序圻例仅在同卟绘田窗口中动态绘制了单通道数据曲线如需同时显示通道数据曲线,需将文中

温馨提示

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

评论

0/150

提交评论