Labwindows/CVI中GRAPH控件相关设置 1、Graph控件设置面板介绍 如图,主要分四个部分: (1) Source code connection源代码连接相关的设置,包含控件的名字和控件的回调函数,此处没有这只回调函数。 (2) Control Settings控件设置部分, 包含控件的模式control mode,主要模式有hot,normal和Indicator(仅仅作为显示,不能用来调用回调函数)三种。 Data Mode数据模式,主要有retain和Discard两种。 Zoom Style Copy Original Plot Data Editable Graph Axes 可以对控件进行编辑 Smooth Update Initially Dimmed 阴影状态,不可用 Initially Hidden 控件被隐藏 坐标轴相关的设置 (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 ; 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是改变的,一般情况是自动模式