Labwindows/CVI中GRAPH控件相关设置
1、Graph控件设置面板介绍
如图,主要分四个部分:
(1) Source code connection源代码连接相关的设置,包含控件的名字和控件的回调函数,此处没有这只回调函数。
(2) Control Settings控件设置部分,
(3)Control Appearance控件的显示设置
主要包括坐标轴的名字的显示,及其字体等。
(4)Label Appearance控件面板旁有个小黑色的Label的设置。
2、在CVI中的GRAPH控件的属性设置中,有两种方法:
第一种,通过面板直接设置
CVI中的Graph控件的坐标总共有4个,x轴分上下坐标,y分左右坐标。具体设置方法,以X的Bottom X坐标为例,方法如下过程:
双击程序*.uir界面中的Graph控件,进入Graph控件的Edit Graph编辑界面,单击Control Settings中的Bottom X-axis就进入下底部的X轴的编辑界面,如图所示。
编辑界面中包含的信息有:Axis Name 坐标的名字;Minimum坐标最小值;Maximum坐标最大值;offset坐标的偏置,一般设置为0;Gain坐标增益,实际坐标显示的结果是为最大值、最小值乘以Gain得到,所以一般为设置为1;Divisions坐标分为多少个刻度,此时选择的Auto Divisions自动分刻度,所以为阴影;Precision 坐标数据的小数位位数; Padding显示数据位数,如果设置为3,0就是显示为000;Display Format 显示格式等,其他的就不详细讲解。
在这个界面上我们可以自己设置坐标的最大值,最小值,显示格式等等信息,这个比较方便和简单。其他坐标设置方式一样。如果不想显示过多的坐标,就可以在相对应的坐标设置下将Show Labels的“钩”去掉,就可以取消不需要的坐标。
第二种,通过程序间接设置坐标轴的增益来改变坐标值。
主要通过函数SetCtrlAttribute来设置Graph控件的一些属性。这个函数在其他控件上用的很多,一些主要的属性设置都很简单,比如,设置Graph控件的模式,即Control Mode 的设置,可以用遮掩的代码:
SetCtrlAttribute(panelHandle,PANEL_GRAPH,ATTR_CTRL_MODE,VAL_HOT);
但是,在设置坐标的刻度数据的时候,CVI中没有具体的设置函数,SetCtrlAttribute函数也不能直接实现,因此,通过程序代码不能直接实现对坐标轴刻度数据的修改,需要进行间接地修改,方法如下:
char axis_xy[10];
double axis_x;
double axis_y;
double aa;
double ab;
GetCtrlVal(panelHandle,PANEL_STRING,axis_xy);
Fmt(&axis_x,"%f<%s",axis_xy);
aa = axis_x/100;
GetCtrlVal(panelHandle,PANEL_STRING_2,axis_xy);
Fmt(&axis_y,"%f<%s",axis_xy);
ab = axis_y/100;
SetCtrlAttribute(panelHandle,PANEL_GRAPH,ATTR_XAXIS_GAIN,aa);
SetCtrlAttribute(panelHandle,PANEL_GRAPH,ATTR_YAXIS_GAIN,ab);
PANEL_STRING和PANEL_STRING_2是两个输入数据string控件,用来设定坐标轴的刻度。先得到x坐标的字符串,通过Fmt函数将字符串转换成float类型的数据保存在axis_x中,作为x坐标设定值,同样得到y坐标的设定值放在axis_y中,然后经过一个运算,将新的设定值和以前面板中设置的x、y轴的最大值相除,求出一个Gain增益值。然后通过设定坐标的增益值来设定我们需要的坐标刻度,从而完成坐标轴刻度的变化。此处的100就是通过面板设定的一个坐标的最大值。
第三种,通过函数直接设置
采用的函数为SetAxisScalingMode,通过此函数可以直接对坐标值进行设置,比较方便快捷。函数原型如下:
int SetAxisScalingMode (int panelHandle, int controlID, int axis, int axisScaling, double min, double max);
panelHandle:面板的句柄
int controlID:控件ID
int axis:Graph控件的坐标轴,主要有下面几个:
VAL_BOTTOM_XAXIS (graphs only)
VAL_TOP_XAXIS (graphs only)
VAL_LEFT_YAXIS (graphs and strip charts)
VAL_RIGHT_YAXIS (graphs and strip charts)
int axisScaling:控件显示图像时的扫描方式:
VAL_MANUAL:根据设定的范围min和max来扫描显示,
VAL_AUTOSCALE:更加数据的多少自动扫描,跟设定的范围min和max没有关系,在strip chart不适用。
VAL_LOCK:手动设置,但是保持原来的方式扫描方式不变,设定的范围min和max是改变的,一般情况是自动模式
作者: sharcky, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-221763.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
用户377235 2013-4-19 21:11
用户436075 2013-3-7 10:18