• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 测试测量 > 技术文章 > LabWindows/CVI虚拟仪器设计技术基本控件使用之:回调函数

LabWindows/CVI虚拟仪器设计技术基本控件使用之:回调函数

录入:edatop.com    点击:

(2)程序源代码

?//头文件声明,系统自动添加 
#include <ansi_c.h>  
#include <cvirte.h>  
#include <userint.h>  
#include "回调函数.h"  
//全局静态变量 
static int panelHandle;  
//主函数 
int main (int argc, char *argv[])  
{   
 //初始化LabWindows/CVI 运行时库引擎 
 if (InitCVIRTE (0, argv, 0) == 0)  
 //如果返回值为0, 则初始化失败,返回–1  
 return –1;  
 //装载面板,返回面板句柄 
 if ((panelHandle = LoadPanel (0, " 回调函数.uir", PANEL)) < 0)  
 //如果装载面板失败,则返回–1  
 return –1; 
 //获得*argv[] 中的字符串,即为文件名 
 SetCtrlVal (panelHandle, PANEL_STRING, argv[0]); 
 //显示面板 
 DisplayPanel (panelHandle);  
 //运行用户界面 
 RunUserInterface ();  
 //删除面板句柄 
 DiscardPanel (panelHandle);  
 //主函数执行成功,返回0  
 return 0;  
}   
//面板回调函数 
int CVICALLBACK PanelCB (int panel, int event, void *callbackData,  
int eventData1, int eventData2)  
{  
switch (event)  
{  
//面板响应事件 
case EVENT_CLOSE:  
// 调用退出按钮的EVENT_COMMIT 事件 

? QuitCallback (panelHandle, PANEL_QUITBUTTON, EVENT_COMMIT, 0, 0, 0);  
 break; 
}   
 //函数返回值,0 表示成功 
 return 0;  
}   
//退出按钮 
int CVICALLBACK QuitCallback (int panel, int control, int event,  
void *callbackData, int eventData1, int eventData2)  
{  
if (event == EVENT_COMMIT)  
{  
//退出用户界面 
QuitUserInterface (0);  
}  
return 0;  
}  
//显示按钮 
int CVICALLBACK OkCallback (int panel, int control, int event,  
void *callbackData, int eventData1, int eventData2)  
{  
//定义局部变量 
int i;  
double datapoints[100]; 
switch (event)  
{  
case EVENT_COMMIT: 
// 产生100 个随机数,放入数组datapoints 中 
for (i = 0; i < 100; i++)  
{  
datapoints[i] = rand() / 32767.0 * 100.0;  

// 清除以前Graph 中绘制的波形 
DeleteGraphPlot (panelHandle, PANEL_GRAPH, -1, VAL_IMMEDIATE_DRAW); 
// 在Graph 中绘制波形 
PlotY (panelHandle, PANEL_GRAPH, datapoints, 100, VAL_DOUBLE, VAL_THIN_LINE,  
VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED); 
break; 
}  
return 0;  
}

3:程序注释

① main 函数

每一个C 程序都必须从一个main 函数开始,在调用其他函数流程后再次回到main 函数,并且在main 函数中结束整个程序的运行。实际上,main 函数可以放在程序的任何地方:有些程序员喜欢把它放在最前面,而另一些程序员把它放在最后面,无论放在哪个地方,以下几点说明都是适合的。

 

在C语言中,main 函数可以有三个参数,即:argc,argv 和env 。

argc :整数类型,表示传给main 函数的命令行参数个数,一般为1。

*argv[] :二维字符串数组。在LabWindows/CVI 中,argv[0] 为程序运行时的文件名,与编译设置有关,在菜单Build→Configuration 下有两个选项,即:Release 和Debug。当选择Release 时,argv[0] 为当前工程名加上".exe";当选择Debug 时,argv[0] 为当前工程名加上"_dbg.exe"。argv[argc] 为NULL 。

 

 *env:二维字符串数组,为环境变量。在LabWindows/CVI 中,env[]一般为空字符串且省略不写。

 

LabWindows/CVI 启动时总是把这三个参数传递给main 函数,参数的传递顺序为:argc 、argv 、env,可以在用户程序中加以说明也可以不说明,如果说明了部分或全部参数,它们就成为main 主函数的局部变量。main 主函数的声明方式主要有以下几种:

main (void)

main (int argc, char *argv[])
main (int argc, char *argv[], char *env[])

② InitCVIRTE 函数

初始化LabWindows/CVI 运行时(库)引擎。在使用外部编译器Visual C++ 、Borland C++ Builder 时调用,如果不使用外部编译器,不会影响程序正常运行。函数原型为:

int InitCVIRTE (void *HInstance, char *Argv[], void *Reserved);
*HInstance:对于main 函数应为0;对于WinMain 函数应为hInstance ;对于DllMain 应为
hInstDLL。
*Argv[] :对应于main 函数的*argv[] 参数。
*Reserved:保留参数,设置为0。

点击浏览:矢量网络分析仪、频谱仪、示波器,使用操作培训教程

上一篇:LabWindows/CVI虚拟仪器设计技术基本控件使用之:三态开关
下一篇:利用信号调节器的抗混淆滤波器 实现混合信号、多模态传感器调节

微波射频测量操作培训课程详情>>
射频和天线工程师培训课程详情>>

  网站地图