如何绘制动态曲线

 我来答
木有剪辑
2016-05-16 · TA获得超过2001个赞
知道小有建树答主
回答量:729
采纳率:77%
帮助的人:89.1万
展开全部
  可以参考QWT绘制动态曲线
  关于QWT
  以下源于百度百科“QWT全称是QtWidgetsforTechnicalApplications,是一个基于LGPL版权协议的开源项目,可生成各种统计图。它为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据,数据源以数值,数组或一组浮点数等方式提供,输出方式可以是Curves(曲线),Slider(滚动条),Dials(圆盘),Compasses(仪表盘)等等。该工具库基于Qt开发,所以也继承了Qt的跨平台特性。”
  voidsetAxisTitle(intaxisId,constQString&)用来设置坐标轴名字,第一个参数是QWT定义的坐标轴ID,即yLeft,yRight,xBottom和xTop.
voidsetAxisScaleDraw(intaxisId,QwtScaleDraw*)用来设置坐标轴刻度,第一个参数同上,第二个参数就是我们刚才定义的TimeScaleDraw;
voidsetAxisScale(intaxisId,doublemin,doublemax,doublestep=0)也是设置刻度的,第一个参数同上,第二参数是刻度的最小值,第三个参数是刻度的最大值,最后一个是步长.
然后定义一个曲线QwtPlotCurve:
QwtPlotCurve,它的功能就是输入一系列的X,Y的值,然后绘制出曲线,当然,曲线的color,style那些是可以自己设置的.
缩放曲线(PS:这点就体现了QWT的强大之处):
QwtPlotZoomer,简单的一个类,简单的只个设置就可以缩放曲线,谁用谁知道啊.
定时器完成曲线的重绘:
adPlotTimer=newQTimer();
adPlotTimer->start(100);
connect(adPlotTimer,SIGNAL(timeout()),this,SLOT(plotAdCurve()));
因为所用的AD是400K的,算了一下,大概160ms以下就能满足了.

读取AD数据:

因为服务器接收到的AD数据是保存在文件中的,而且是实时保存(也就是将Client接收的数据保存到文件的同时将此文件中的数据绘制出来).所以设置了一个文件偏移量,而已此文件的前26字节是采集的时间信息,所以跳过.

又因为用的是AD是12位的,Client采用一个short类型来保存数据,而已每次传输32个AD数据,所以在计算AD数据前要确保文件已经有了32个AD数据,即64字节的数据.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式