Labwindows/CVI基础教程(1)

本文主要解释labwindows中LED和按键的使用方法,将通过一个使用按键控制LED亮灭的简单工程来解释这个两个基础控件的使用方法:

1.面板设置

首先打开Labwindos,点击Flie->new-> User Interface 创建一个新的面板

然后右击面板空白处打开控件菜单,在控件菜单的LED中选择一个LED控件和command button中选择一个按钮控件进行放置。

如果需要对控件进行对齐和等间距排列,可以通过鼠标左键拖拽选中目标器件,然后单击工具栏中的Arrange,在其菜单中,Alignment下对应着各种对齐方式,Distribution下对应着各种等间距排列方式

双击led,打开其属性界面,其中Constant name将在后续的代码编写中使用到,为了代码的简洁尽量起一个简短且用意义的名称,Label为控件在面板中显示的名称,中英文都可,也可以为空白,点击...可以进入Lable属性界面,在Lable属性界面中可以进行Lable字体和位置的相关设置。其中的Initial state为off表示在初始时刻,没有进行任何操作时,LED为熄灭状态。

双击按钮,打开其属性界面,callback function中填写按钮对应的回调函数的名称,其工作流程与单片机中的外部中断类似,当该按钮被按下后,程序会进入该按钮对应的回调函数中进行对此此事件的处理,Modifier Key和Key默认情况下为none即可,若按下图所示设置则在程序运行的时候,按ctrl+A也可以触发这个按钮对应的回调函数。

双击面板空白处,打开面板属性界面,在callback function中填写一个回调函数名,并在后续设置中将该函数设置为退出程序按钮。

 在完成设置后 点击Flie选择save unitled.prj as...对工程文件进行保存

随后按ctrl+s对创建的新控制面板进行保存(为了便于管理最好和工程文件放在同一个文件夹内)

保存完成后点击工程名,选择Add Existing File...将面板文件(.uir)和面板头文件(.h)添加到工程中

完成上诉操作后,点击Code->Generate-> All Code...生成代码框架,在弹出的页面中,将Target Files 改为Add to current project。同时在下方的 Select quituserinterface callback中选则在面板属性中设置的Exit_panel作为退出程序的开关。然后点击OK即可生成整体代码框架。

2.代码详解

 GetCtrlVal (int Panel_Handle, int Control_ID, void *Value);其作用为获取对应界面中某个控件的值

int Panel_Handle为界面句柄,在本工程中为paneHandle

int Control_ID为控件id,在.h的头文件中可以找到。

void *Value 为存放控件值的变量对应的地址。

SetCtrlVal (int Panel_Handle, int Control_ID, Value);其作用为设置对应界面中某个控件的值

Value为设置的值。

本代码实现以下功能当LED亮着的时候,按下按钮则熄灭LED;当LED熄灭的时候按下按钮则点亮LED。

#include <cvirte.h>		
#include <userint.h>
#include "led_ctrl.h"

static int panelHandle;//定义面板句柄

int main (int argc, char *argv[])
{
	if (InitCVIRTE (0, argv, 0) == 0)
		return -1;	/* out of memory */
	if ((panelHandle = LoadPanel (0, "led_ctrl.uir", PANEL)) < 0) //加载面板
		return -1;
	DisplayPanel (panelHandle);
	RunUserInterface ();
	DiscardPanel (panelHandle);
	return 0;
}

int CVICALLBACK Exit_panel (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);
			break;
	}
	return 0;
}

int CVICALLBACK led_ctrl (int panel, int control, int event,
						  void *callbackData, int eventData1, int eventData2)
{
	int flag;
	switch (event)
	{
		case EVENT_COMMIT:
			
		GetCtrlVal (panelHandle,  PANEL_LED, &flag );	 //获取LED的值并把该值赋给变量flag
		if (flag)
		SetCtrlVal (panelHandle,  PANEL_LED, 0 );  //如果flag为1则LED的值写为0(熄灭LED)
		else
		SetCtrlVal (panelHandle,  PANEL_LED,1 );  //如果flag为0则LED的值写为1(点亮LED)	

			break;
	}
	return 0;
}

3.调试

工程文件以上传至工程压缩包

  • 14
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对于CVILabWindows/CVI)来说,WebService是一种用于通过网络进行通信和数据交换的技术。 WebService的HTTP地址可以通过提供方给出的URL来确定,例如http://10.7.3.43/webserverfengh/Service1.asmx。 在进行CVI与WebService的对接时,通常需要获取WebService的HTTP地址、WSDL文件以及开发说明文档。 CVI可以通过支持的传输协议格式(如数据流、ASCLL、XML、JSON、Modbus等)与WebService进行通信。同时,CVI还可以与多种PLC(如西门子、GE等)以及采集板卡(如研华等)兼容。此外,CVI还可以与多种数据库(如MySQL、SQLServer等)进行集成。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [WebServivce对接过程](https://blog.csdn.net/fanaticism1/article/details/22949005)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [基于OPC和.net的数据采集系统软件Demo](https://download.csdn.net/download/v_stefanie_v/10944751)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值