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.
注意,必须定义连接器,而且参数数量和位置必须完全相同(所谓的严格类型定义)
[page]
下面再定义一个CAL,类似上面的PROCESS
需要说明的是,上面的VI有一个输入参数是VI 参考,这个VI参考是严格数据类型的,相当于PROCESS函数中的函数指针,说明一下它的生成过程.
然后用浏览找到子VI,就可以直接使用了.
这样,CAL VI有三个输入参数,a,b,vi refnum和一个输出(返回值),相当于PROCESS函数.
看看它的具体调用过程.
上面CASE中用的是STATIC VI REFERNCE,选择你要运行的VI,并且指定严格数据类型(鼠标右键)后,红色星号出现.
关键字:labview 函数指针
引用地址:labview的深入探索----如何实现类似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.
注意,必须定义连接器,而且参数数量和位置必须完全相同(所谓的严格类型定义)
[page]
下面再定义一个CAL,类似上面的PROCESS
需要说明的是,上面的VI有一个输入参数是VI 参考,这个VI参考是严格数据类型的,相当于PROCESS函数中的函数指针,说明一下它的生成过程.
然后用浏览找到子VI,就可以直接使用了.
这样,CAL VI有三个输入参数,a,b,vi refnum和一个输出(返回值),相当于PROCESS函数.
看看它的具体调用过程.
上面CASE中用的是STATIC VI REFERNCE,选择你要运行的VI,并且指定严格数据类型(鼠标右键)后,红色星号出现.
上一篇:labview的深入探索----文件系列之文本文件
下一篇:labview的深入探索----文件系列之数据记录文件
推荐阅读最新更新时间:2024-03-30 23:03
采用LabVIEW主控板自动测试系统设计
针对人工测试效率低、易受主观影响等不足,设计了基于LabVIEW的高清电视(HDTV)主控板自动测试系统。利用LabVIEW丰富的信号处理、虚拟仪器等图形化编程特点,开发音频及视频图像评价软件。采用基于梯度的结构相似性图像评价算法(GSSIM),提高了测试分析中对模糊失真图像的判别精度。该自动测试系统可大大提高测试效率,并保证产品测试指标的客观性和一致性。 高清电视(HDTV)已成为目前彩电市场的主力军,其核心部件是电视主控板。目前主控板出厂测试普遍采用人工测试方法,但存在如下不足:1)测试效率低,需要人工频繁更换测试工具,费时费力;2)评价主观性强,因依靠人的感官来评判产品好坏,容易造成产品质量参差不齐。因此,开发自动测试系统已
[测试测量]
浅析LabVIEW的智能车仿真系统应用设计案例
本 仿真 系统基于LabVIEW虚拟仪器技术开发完成,用于智能车的算法仿真及分析。 1 基本构架 图1是整个 仿真 系统的构架图,主要分为基本模型层、控制算法层、通讯层以及仿真环境层。 基本模型层包括赛车模型与赛道模型,使用者可根据实际情况设定模型参数,它为整个系统提供了底层的驱动,仿真结果都是在这两个模型的基础上计算的。 图1 仿真系统构架图 控制算法层为使用者提供了3种不同的仿真方案:SubVI、C结点以及单片机在线仿真,具体在后文将会详述。使用者可选择其中一个方案输入或移植自己的控制算法。 通讯层只用于单片机的在线仿真,使用CAN模块,可以使单片机与 仿真 系统进行即时的数据交流,从而实现动态仿真。 动态仿真环境基于
[电源管理]
labview编程技巧-----文本的特殊效果制作
今天介绍几种GUI中文字特殊效果制作方法. 一如何改变部分文本的颜色和字体: 我们知道,统一改变文本的字体和颜色是很容易的,但是如果只改变部分字体和颜色就需要一定的技巧了。 二:滚动文本的特效制作 很多程序中,经常能看到类似滚屏的效果,其实,LV也能实现,看下面的方法,采用古典TEXT,去掉边框,透明显示 三:文本的颜色渐变显示 四:如果要实现TEXT本身难以实现的效果,可以用PICTURE BOX实现,它的文本功能可以实现任意效果,不过编程复杂。 基本原理:选择合适的背景图片,选择特殊字体,图片选择透明方式。
[测试测量]
基于LabVIEW的战斗机的应用
便携式数字数据采集系统(PDDAS)使用了LabVIEW实时模块和PXI,以控制风洞测试和采集记录来自128个不同通道的空气压力数据 "通过LabVIEW实时模块,可以在各种操作情况下获得采集空气压力数据及向风洞提供反馈控制信号所需的确定性响应时间。" – Dave Scheibenhoffer, G Systems 挑战: 用一个可采集、分析和存储来自下一代喷气式战斗机引擎设计的动态压力数据的系统,来替换洛克希德马丁航空公司的一个专用的基于VME的DSP 系统。 解决方案: 利用业界标准的、现成可用的技术,其中包括PXI、MXI、UDP 和RAID,以及LabVIEW实时模块,创建一个满足严格技术要求
[测试测量]
基于LabVIEW的汽车雨刮器综合控制系统
本文介绍一种基于LabVIEW的汽车雨刮器综合控制系统的设计,描述了软件界面设计、参数测量及数据处理的实现方法。 挑战:解决对汽车雨刮器的功能测试(刮刷角度与刮刷频率)、耐久性能测试(刮刷150万次)以及对汽车挡风玻璃的淋水控制(包括喷水间隔与水量大小的调节)。 应用方案:使用Nationl Instruments公司的LabVIEW编程软件对数据进行采集、处理并对雨刮系统进行控制。 使用产品:Labview8.6软件开发平台;NI PCI-7831R数据采集卡 雨刮器是汽车上重要的零部件,它能确保汽车在雨天能安全行驶,其性能的好坏直接影响汽车行驶的状况。为了保证雨刮器的可靠性,雨刮器出厂试验要求必须能达到150万次的刮刷循环。
[测试测量]
基于虚拟仪器的新型汽车电子测试平台研究
随着半导体及软件技术的快速发展,汽车电子在汽车产业中所占比例越来越大。从汽车的舒适性到稳定性乃至安全性的实现中,汽车电子产品都担任着至关重要的角色,并且正发挥着越来越广泛的作用。汽车电子产品厂商也正面临着巨大的市场挑战——提高产品质量、加快生产周期、降低生产成本等等。
在这样的条件下,对汽车电子产品的测试设备的要求日益增高,主要体现在以下方面。
复杂的测试要求
汽车电子产品在整车系统中的比例和实现的功能不断增加,要求其具有丰富的功能;随着基于CAN、K-Line、LIN等总线的车身网络的发展,还需要实现单个设备与整车网络之间可靠的实时通讯。这都要求汽车电子产品出厂前需要经历复杂的功能和参数测试过
[嵌入式]
基于LabVIEW开发平台的声音能量设计
引言 语音信号是人们进行沟通和交流的主要媒介。语音具有两重属性,一方面语音具有表义功能;另一方面语音毕竟是一种声音,它是由人的头脑中产生的意念通过一组神经信号去控制发音器官,变成空气的振动信号,然后由空气传递到人的耳朵或受话器中的信号。语音的基本作用是进行信息交换,构成语音通信。在语音通信系统中,语音信号的传输存储和处理的方式是各种各样的。大体上说话音处理的研究可以分为以下几个方面:语音分析、语音增强、语音编码、话音合成和语音识别与理解。单从记录声音的设备来看就有留声机、录音机到现在数字化的MP3播放器,这其中的记录技术也一直在飞速的变化中。因此,在信息社会高度发达的今天,用数字方法进行语音的传送、存储、识别、增强就显得尤为必要。
[测试测量]
采用LabVIEW为视力障碍人群设计半自动车辆
TheChallenge: 开发半自动车辆允许盲人驾驶员在安全驾驶的过程中成功完成操纵、速度控制、并避免碰撞。 TheSolution: 采用NICompactRIO及LabVIEW软件开发世界首辆盲人驾驶车辆的功能原型。 致力于提升并发挥失明人群经常被低估的能力,鼓励服务于视力障碍群体的技术创新开发,美国国家失明人士联合会提出建议,设计一种系统来帮助失明人群尝试从未有过的体验:驾驶。弗吉尼亚理工大学的机器人与器械实验室(RoMeLa)是唯一一个接收挑战的组织。该大学机械工程系于2008年重新建立了高年级设计团队和大学生研究项目弗吉尼亚大学盲人驾驶挑战(BDC),他们为世界首辆可用的盲人驾驶车辆原型
[测试测量]