• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 测试测量 > Labview 虚拟仪器 > labview的深入探索----如何实现类似C的函数指针调用

labview的深入探索----如何实现类似C的函数指针调用

录入:edatop.com    点击:
C语言中有函数指针的概念,对于相同的参数数量和参数类型,以及相同的函数返回值,通过传递函数指针,可以动态地调用不同的函数实现不同的功能.

我们先看看C的一个函数指针调用的例子:

#include

int max(int x,int y)
{

int z;
if(x>y) z=x;
else
z=y;
return (z);
}

//求最大值

int min(int x,int y)
{
int z;
if(x>y) z=y;
else
z=x;

return(z);


}

//求最小值

int add(int x,int y)
{


return(x+y);

}

//求和

int process(int x,int y,int (*fun)())
{

int result;
result=fun();

return result;

}


int main()
{
int a,b,result;
a=10;
b=5;
result=process(a,b,max);
result=process(a,b,min);
result=process(a,b,add);

}
从上面的C程序可以看出,通过一个PROCESS函数,可以实现不同的函数调用,这就是函数指针的重要用途.LABVIEW是否能实现类似的功能


通过VI SERVER可以实现类似的功能.我通过一个简单的例子说明实现的过程.

首先定义两个加法和乘法的子VI.



注意,必须定义连接器,而且参数数量和位置必须完全相同(所谓的严格类型定义)


[p]

下面再定义一个CAL,类似上面的PROCESS



需要说明的是,上面的VI有一个输入参数是VI 参考,这个VI参考是严格数据类型的,相当于PROCESS函数中的函数指针,说明一下它的生成过程.



然后用浏览找到子VI,就可以直接使用了.
这样,CAL VI有三个输入参数,a,b,vi refnum和一个输出(返回值),相当于PROCESS函数.

看看它的具体调用过程.





上面CASE中用的是STATIC VI REFERNCE,选择你要运行的VI,并且指定严格数据类型(鼠标右键)后,红色星号出现.

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

上一篇:labview的数据类型----无所不在的类型描述符 TYPE DESCRIPTOR
下一篇:labview深入探索----局部变量,属性节点和数据流的性能比较

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

  网站地图