LabWindows CVI 2017开发笔记--常用API

参考资料:https://download.csdn.net/download/Stark_/87424565?spm=1001.2014.3001.5501
转载注明出处:https://blog.csdn.net/Stark_/article/details/128929308

打印输出printf

printf("Hello,world!\n");
putchar();

参考:https://blog.csdn.net/sugarbliss/article/details/80230710

获取输入scanf

scanf();
getchar();
gets();

正弦波生成SinePattern

SinePattern函数产生一个正弦波型数组,该函数输出一个double型数组供使用。
SinePattern的原型:

AnalysisLibErrType SinePattern (ssize_t numberOfElements, 
								double amplitude, 
								double phaseDegrees, 
								double numberOfCycles, 
								double sinePattern[]);

输入参数:
在这里插入图片描述
输出参数
在这里插入图片描述

double sine[1000];
SinePattern(1000,1,0,2,sine);
//产生1000个数据点,幅值1,相位0,周期2,保存至数组sine

白噪声生成WhiteNoise

AnalysisLibErrType WhiteNoise (int Number_of_Elements, 
							   double Amplitude, 
							   int Seed, 
							   double Noise[]);

高斯噪声生成GaussNoise

AnalysisLibErrType GaussNoise (int Number_of_Elements, 
							   double Standard_Deviation, //Standard_Deviation为标准偏差
							   int Seed, //Seed为随机种子值
							   //当Seed≥0时,函数依据该种子值生成一个新的随机序列,
							   //当Seed<0时,多次调用函数生成的随机序列前后连续
							   double Gaussian_Noise[]);//输出的噪声信号波形数组

弹窗波形绘制YGraphPopup

绘图控件弹出菜单有四种图表显示格式:XGraphPopup 、 YGraphPopup、XYGraphPopup、WaveformGraphPopup

其中YGraphPopup画出以数组的索引为X轴坐标,数组元素作为Y轴坐标的一个曲线图

double sine[1000];
SinePattern(1000,1,0,2,sine);
YGraphPopup("sine wave",sine ,1000, VAL_DOUBLE);
//绘制窗口名称为sine wave,数据点为数据为sine ,数据点个数为1000,数据类型为VAL_DOUBLE

以上代码运行结果:
在这里插入图片描述

StripChart控件波形绘制PlotStripChartPoint

double point = 0;
point = 50;
PlotStripChartPoint(panelmain,PANELMAIN_CURVE,point);    
//在句柄为panelmain的面板上,控件ID为PANELMAIN_CURVE的控件上,绘制一个点,这个点的值为point 

GUI界面主函数框架main

static int panelMain; //面板的全局句柄
//argc记录用户在运行程序的命令行的参数个数,在VS中默认为1,argv[0] 程序的全名。
//*argv[]是个指针数组,存放输入在命令行上的命令(字符串)
int main (int argc, char *argv[])
{
	if (InitCVIRTE (0, argv, 0) == 0)   //CVI运行引擎初始化
		return -1;	/* out of memory */
	if ((panelMain = LoadPanel (0, "Calculate.uir", PANEL_Main)) < 0)	 //加载主面板
		return -1;															 
	DisplayPanel (panelMain);   //显示主面板
	RunUserInterface ();	   //开始消息队列循环,正常情况下死循环,直到用户主动关闭界面
	DiscardPanel (panelMain);
	return 0;
}

main 函数实现的功能分别是
CVI 运行引擎初始化(InitCVIRTE 函数)、
加载面板(LoadPanel 函数)、
显示面板(DisplayPanel 函数)、
开始消息队列循环(RunUserInterface 函数)。
其中,
RunUserInterface 会不断的检查面板的消息或者操作系统发送的消息,永远不会返回,除非用户主动调用 QuitUserInterface 函数中止消息循环。
所以,正常运行状态下,main 函数中的 DiscardPanel 永远不会被执行,main 函数永远不会退出,直到程序被关闭。

关闭程序QuitUserInterface

//主面板回调函数
int CVICALLBACK MainCallBack (int panel, int event, void *callbackData,
							  int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_GOT_FOCUS: //窗口被激活

			break;
		case EVENT_LOST_FOCUS:   //窗口失活

			break;
		case EVENT_CLOSE: //点击窗口右上角“关闭”按钮
			QuitUserInterface (0);//关闭面板0(主面板)
			break;
	}
	return 0;
}

获取控件参数值GetCtrlVal

int GetCtrlVal (int panelHandle, int controlID, void *value);
//其中value为控件的当前值变量的指针。panelHandle参数为函数面板的句柄,controlID为目标控件句柄

控件的句柄即[控件所在的面板的 Constant Name]_[控件
的 Constant Name]。
若控件所在面板的 Constant Name 为 PANEL,控件的 Constant Name 为 NAME,那么控件的句柄即为 PANEL_NAME。

double a;
GetCtrlVal(panelMain,PANEL_Main_PARA_A,&a);
//获取panelMain面板上,控件句柄为PANEL_Main_PARA_A的值,并存放至a的地址中

设置控件参数值SetCtrlVal

int SetCtrlVal (int panelHandle, int controlID, ...);

同 GetCtrlVal 一样,调用 SetCtrlVal 并填入面板、控件句柄之后即可设置控件的值

char ss[100];   
sprintf(ss,"%f",a);	//将double类型a的值转为字符串,存入char型数组ss
SetCtrlVal(panelMain,PANEL_Main_RESULT,ss);
//设置panelMain面板上,控件句柄为PANEL_Main_RESULT的值,设定值为ss地址中的数据

获取控件属性值GetCtrlAttribute

 int GetCtrlAttribute (int panelHandle, int controlID, int controlAttribute,  void *attributeValue);

输入参数:
controlID,控件 ID 号。
controlAttribute,控件属性标识符(参考 LabWindows/CVI 帮助)。
输出参数:
attributeValue,获取的控件属性值。

int ctrlAttr;/* 定义存储控件属性的变量*/
GetCtrlAttribute (mainpanel, MAINPANEL_QUIT, 
ATTR_CMD_BUTTON_COLOR, &ctrlAttr);/*获得“Quit”控件的颜色*/

设置控件属性值SetCtrlAttribute

int SetCtrlAttribute (int panelHandle, int controlID, int controlAttribute, ...);

输入参数:
attributeValue,控件属性值

/*如果控件颜色不是红色,将其设置成红色*/ 
if(ctrlAttr!=VAL_RED) 
SetCtrlAttribute (mainpanel, MAINPANEL_QUIT, 
ATTR_CMD_BUTTON_COLOR, VAL_RED);

TextBox控件清空ResetTextBox

ResetTextBox(panelmain,PANELMAIN_RECEIVETEXT,"\0");//清除接收框 
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LabWindows CVI是一种强大的图形化编程软件,通常用于数据采集、仪器控制和自动化测试等领域。而西门子S7-1200是一种先进的工业自动化控制器,用于控制多种设备和系统。 要实现LabWindows CVI与西门子S7-1200之间的通讯,可以采用以下步骤: 1. 确定通讯协议:LabWindows CVI支持多种通讯协议,如Modbus、OPC等。确定S7-1200支持的通讯协议,并根据需要选择适合的协议。 2. 配置通讯参数:LabWindows CVI提供了一些函数和工具用于设置通讯参数,如IP地址、端口号等。根据S7-1200的网络配置和通讯协议的要求,进行适当的配置。 3. 建立连接:使用LabWindows CVI提供的库函数,通过网络连接与S7-1200建立通讯。通常需要提供S7-1200的IP地址和端口号。 4. 通讯数据交互:根据通讯协议的要求,使用LabWindows CVI提供的函数来读取和写入S7-1200的数据。可以通过读取S7-1200的PLC变量值,或者设定S7-1200的输出状态等。 5. 断开连接:在通讯完成后,通过LabWindows CVI提供的函数断开与S7-1200的连接,释放资源。 在配置LabWindows CVI和S7-1200通讯时,需要了解LabWindows CVI的编程知识和S7-1200的通讯协议。可以参考相关的LabWindows CVI和S7-1200的文档和教程,以了解更多关于通讯配置和编程的细节。 综上所述,通过以上步骤和相关的LabWindows CVI和S7-1200的文档,可以成功实现LabWindows CVI与西门子S7-1200之间的通讯。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值