精华内容
下载资源
问答
  • LabVIEW调用函数返回指针的动态链接库DLL引言创建动态链接库LabVIEW中调用DllMian.dll结束语 引言 LabVIEW通过调用库函数节点可以调用C/C++生成的动态链接库。首先在VC/CVI/Matlab等语言中设计好完成计算处理任务的...

    LabVIEW调用函数返回指针的动态链接库DLL

    引言

    LabVIEW通过调用库函数节点可以调用C/C++生成的动态链接库。首先在VC/CVI/Matlab等语言中设计好完成计算处理任务的动态链接库,通过配置调用库函数节点调用动态链接库中相应的库函数,获取所需的处理结果。在LabVIEW中,通过库函数输出参数(指针或数组参数)以及库函数返回单值获取数据有完善的解决办法,可以参考这篇文章。本文讲述获取函数返回值为指针(含单值和数组指针)数据的方法。
    LabVIEW调用库函数节点返回值只有空、数值和字符串三种类型,似乎无法返回指针数据(数组),其实是有解决办法的:对于返回指针的函数,返回的数值为存放数据的地址(对于数组,则为第一个元素的地址),用LabVIEW内置函数MoveBlock即可获取具体数据,下面以具体实例讲解创建DLL及调用、获取数据过程。

    创建动态链接库

    在VC6.0中创建动态链接库项目文件DllMain(创建过程略),代码文件main.cpp如下所示:

    #include <objbase.h>  // 也可以 #include <windows.h>
    #include <stdio.h>
    _declspec(dllexport) double * GetDimData(void)
    {
    
        double *p=(double *) malloc(sizeof(double)*3);
    	p[0]=1.01;
    	p[1]=2.02;
    	p[2]=3.03;
        return p;
    }
    _declspec(dllexport) int * GetSingleData(void)
    {
        int *p=(int *) malloc(sizeof(int));
    	*p=101;	
        return p;
    }
    

    头文件main.h如下所示:

    _declspec(dllexport) double * GetDimData(void);
    _declspec(dllexport) int * GetSingleData(void);
    

    生成动态链接库DllMain.dll。

    LabVIEW中调用DllMian.dll

    1. 获取单值指针数据
      在LabVIEW新建一个vi,拖一个调用库函数节点到程序框图中,双击节点弹出配置对话框,函数及参数配置如下图所示:
      打开动态连接库DllMain.dll,选择GetSingleData库函数
      在参数栏中设置返回类型
      再拖一个调用库函数节点到程序框图中,双击节点弹出配置对话框,如下图所示,在库名栏中直接输入LabVIEW,在函数名栏中选择MoveBlock。
      在库名中直接输入LabVIEW,在函数名中选择MoveBlock
      在参数栏中新建三个参数,分别为Address、MySingleData、Size,数据类型分别设置如下图所示:
      设置Address数据类型
      设置MySingleData数据类型
      设置Size数据类型
      创建的程序框图及运行结果如下图所示(和库函数中的变量数据是一致的):
      程序框图配置及运行结果
    2. 获取数组指针数据
      在LabVIEW新建一个vi,拖一个调用库函数节点到程序框图中,双击节点弹出配置对话框,函数及参数配置如下图所示:
      打开动态链接库DllMain.dll
      设置返回类型
      再拖一个调用库函数节点到程序框图中,双击节点弹出配置对话框,如下图所示,在库名栏中直接输入LabVIEW,在函数名栏中选择MoveBlock。
      在库名中直接输入LabVIEW,在函数名中选择MoveBlock
      在参数栏中新建三个参数,分别为Address、MyDimData、Size,数据类型分别设置如下所示:
      设置Address类型
      设置MyDimData类型
      设置Size类型
      创建的程序框图及运行结果如下图所示(和库函数中的数组数据是一致的):
      程序框图配置及运行结果
      上面的程序框图中,数字3表示数组元素有3个,8表示双精度数据长度为8个字节,MoveBlock函数从指定地址开始读取3*8=24个字节的数据并转换为双精度一维数组。

    结束语

    解决本文议题的关键是采用了LabVIEW内置的内存管理函数MoveBlock,通过输入数据地址,MoveBlock可以控制从指定地址开始读取多少字节数据,并将读取的数据转化为具体类型的数据。MoveBlock还可读取更复杂类型的数据,具体参见这篇文章

    展开全文
  • labview是一种程序开发环境,由美国国家仪器(ni)公司研制开发的,类似于c和basic开发环境,...与c和basic一样,labview也是通用的编程系统,有一个完成任何编程任务的庞大函数库。labview函数库包括数据采集、g...

    labview是一种程序开发环境,由美国国家仪器(ni)公司研制开发的,类似于c和basic开发环境,但是labview与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而labview使用的是图形化编辑语言g编写程序,产生的程序是框图的形式。

    与c和basic一样,labview也是通用的编程系统,有一个完成任何编程任务的庞大函数库。labview的函数库包括数据采集、gpib、串口控制、数据分析、数据显示及数据存储,等等。labview也有传统的程序调试工具,如设置断点、以动画方式显示数据及其子程序(子vi)的结果、单步执行等等,便于程序的调试。

    虚拟仪器(virtual instrumention)是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发展的一个重要方向。粗略地说这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。另一种方式是将仪器装入计算机。以通用的计算机硬件及操作系统为依托,实现各种仪器功能。虚拟仪器主要是指这种方式。下面的框图反映了常见的虚拟仪器方案。

    虚拟仪器的主要特点有:

    尽可能采用了通用的硬件,各种仪器的差异主要是软件。

    可充分发挥计算机的能力,有强大的数据处理功能,可以创造出功能更强的仪器。

    用户可以根据自己的需要定义和制造各种仪器。

    虚拟仪器实际上是一个按照仪器需求组织的数据采集系统。虚拟仪器的研究中涉及的基础理论主要有计算机数据采集和数字信号处理。目前在这一领域内,使用较为广泛的计算机语言是美国ni公司的labview。

    虚拟仪器的起源可以追溯到20世纪70年代,那时计算机测控系统在国防、航天等领域已经有了相当的发展。pc机出现以后,仪器级的计算机化成为可能,甚至在microsoft公司的windows诞生之前,ni公司已经在macintosh计算机上推出了labview2.0以前的版本。对虚拟仪器和labview长期、系统、有效的研究开发使得该公司成为业界公认的权威。目前labview的最新版本为labview8.6,labview 8.6为多线程功能添加了更多特性,这种特性在1998年的版本5中被初次引入。使用labview软件,用户可以借助于它提供的软件环境,该环境由于其数据流编程特性、labview real-time工具对嵌入式平台开发的多核支持,以及自上而下的为多核而设计的软件层次,是进行并行编程的首选。

    ◆◆

    评论读取中....

    请登录后再发表评论!

    ◆◆

    修改失败,请稍后尝试

    展开全文
  • 将自定义的m文件放入路径C:\Users\Administrator\Documents\LabVIEW Data中即可调用
    将自定义的m文件放入路径C:\Users\Administrator\Documents\LabVIEW Data中即可调用
    展开全文
  • LabVIEW 读取 DLL 函数

    千次阅读 2017-09-06 22:11:49
    我们以前在编写 LabVIEW 调用 C DLL 的程序的时候,使用以下策略读取 DLL 函数中的字符串: 1. 如果能够确保在符串小于 256,比如参数名的字符串等等,就直接在 LabVIEW 中开辟一块大小为 256 的内存。 2. 如果...
    我们以前在编写 LabVIEW 调用 C DLL 的程序的时候,使用以下策略读取 DLL 函数中的字符串:
    1. 如果能够确保在符串小于 256,比如参数名的字符串等等,就直接在 LabVIEW 中开辟一块大小为 256 的内存。
    2. 如果不能保证字符串大小,就要为一个读取字符串的 VI 提供两个 DLL 接口函数,先调用一个函数得到字符串的大小,然后在 VI 中开辟内存,之后调用第二个函数得到字符串。
    我在使用中,发现第一条策略不保险,应该全部使用第二条策略。
    展开全文
  • Labview调用VC

    2014-09-22 10:53:25
    原文地址:Labview调用VC作者:luckyhappier 对初学者来说来个比较详细的包含步骤例子是难得的,我来个简单的小例子,希望对您有用,呵呵!!! 1。建立动态连接库的C代码调用 1.1 建立函数原形 1)后面框图...
  • PAGE PAGE 3 Labview调用C语言的方法 CINCode InterfaceNode节点是LabVIEW中用来调用C/C++代码的功能节点它与动态链接库的不同之处在于它能够将代码集成在VI中作为单独的一个VI发布而不需要多余的文件另外它提供了...
  • LabVIEW调用DLL动态链接库 示例一 通过调用DLL实现数组求和。输入一个10个元素的数组,返回全部元素之和。 1.生成DLL VS中选择创建动态链接库项目 在头文件和源文件文件夹分别创建相应的.h .cpp文件 在test.h中...
  • 我们的方法是直接用c#封装dll后提供labview调用。 初始化与反初始化 函数名:lmc1_Initial说明:初始化lmc1控制卡.调用此函数,最终目的是使用库中的函数,来完成相应的操作.语法:int lmc1_Initial(TCHA...
  • 目录软件环境VS2017封装dll动态链接库labview调用dll库函数 本文的主要目的是使用lv读取外设数据,由于lv调用dll是存在限制的,dll语言需要是C/C++,故dll由C语言在VS2017下封装。 软件环境 本文所使用的软件环境为...
  • labview调用VS2015生成的DLL

    千次阅读 2018-07-11 10:44:18
    使用 _declspec(dllexport) 关键字从 DLL 导出数据、函数、类或类成员函数。_declspec(dllexport) 会将导出指令添加到对象文件中,不需要使用 .def 文件。extern "C"的真实目的是实现类C和C++的混合编程。...
  • LabView调用Windows API代码CLF节点

    千次阅读 2013-08-01 00:01:03
    2)配置CLF节点(CLF节点双击或右击选择配置,打开“CLF”对话框,函数选项页中的库名或路径中添加动态库函数文件路径C:\WINDOWS\system32\user32.dll) 以MessageBox函数为例: 返回参数:数值,无符号32位整型 ...
  • LABVIEW 学习-子VI调用

    千次阅读 2019-08-22 09:55:28
    子VI的调用C,C++调用函数的形式一样,先将功能函数封装好,在主函数里直接调用就可以。 先描述下功能:子VI是一个登陆界面,用户名和密码对,给布尔按钮赋真,按确定退出,这里用到一个调用节点的使用,创建好...
  • VC创建MFC-Wizard生成的Dll,在导出函数MyFileOpen中调用由CFileDialog派生类CMyFileDlg实现自定义文件对话框。再在LabView中引用库函数... 求懂LabView和MFC的大神求解,第一次使用LabView调用MFC的动态链接库就出错了
  • LAB调用C代码问题

    2009-04-08 17:33:00
    出现问题: 在用LABVIEW调用C代码时发现如调用MessageBox(_T("打开 ADC 驱动失败!"));EVC对话框代码,串口打印函数DEBUGMSG (1,(TEXT("[CPLD] v_pMEMRegs is not allocated/n/r")));时虽然编译能通过,但是在EIP中...
  • Labview 生成的函数原型如下: #include "extcode.h" #ifdef __cplusplus extern "C" { #endif /*! * StringTest */ void __cdecl StringTest(char String_Input[]); MgErr __cdecl LVDLLStatus(char...
  • MATLAB与Labview混合编程

    2020-09-20 08:27:39
    本人尝试了许多方法,只有该方法能够完美脱离MATLAB,利用Labview调用相关函数库。方法如下:https://blog.csdn.net/rmrgjxeivt/article/details/104521287 1、如果查询“自定义函数”中是否由不能C语言化的函数,...
  • LabVIEW是一种简单易学、形象直观的图形化编程语言,也称为G语言,具有丰富的同传统仪器外观类似的控件库(如旋钮、仪表盘、温度计、波形图表等),可以构建漂亮专业的用户界面,同时,内部提供了庞大的函数库(如数据...
  • Dev c++工具将C代码生成dll文件以及如何调用dll文件

    万次阅读 多人点赞 2017-08-03 17:47:18
    该篇文章是对工作中一个需求的总结,工作需求是要将C语言的函数接口,生成一个DLL文件,让labview调用。然后我尝试用devc++开发工具来实现这个功能,后来因为DLL生成了,但labview调用的结果和C执行的结果不一致,...
  • LabVIEW创建DLL

    千次阅读 2013-03-24 08:46:00
    2、调用规范说明:C调用规范时,调用方负责清空堆栈。使用标准调用规范时,被调用函数负责清空堆栈。  所以要确认您选择了和DLL相同的调用规范 3、调用库函数节点(CLF)中线程模式:在UI线程中运行(Run in UI...
  • LabVIEW的学习笔记

    2020-05-28 22:39:36
    目前为止学习到的LabVIEW基本能控制电机的一些基本操作,还有调用C/C++的函数进行运动,接下来要学习的几个模块包括: Event Structure Tab Control Property Node Invoke Node 状态机 一个一个学,慢慢做笔记; ...
  • 研究了xPC目标的C API接口编程及其API函数以及labview如何调用DLL动态链接库,建立了基于labview的xPC宿主机控制及遥测平台,该平台用于某卫星的姿轨控半物理仿真系统的地面验证,为其提供了功能强大并富于人性化的...
  • LabVIEW下普通数据采集卡的驱动与调用.pdf LabVIEW下远程虚拟实验室的研究与实现.pdf LabVIEW与Matlab_Simulink混合编程方法及应用.pdf LabVIEW与Matlab混合编程的实现.pdf LabVIEW与VC程序的动态数据交换.pdf ...
  • LabVIEW中使用CIN节点

    万次阅读 2007-08-21 13:36:00
    source: click here CIN(Code Interface Node)节点是LabVIEW中用来调用C/C++代码的功能节点。它与动态链接库的不同之处在于,它能够将代码集成在VI中作为单独的一个VI发布,而不需要多余的文件。另外,它提供了...
  • C#和Labview资料

    2019-03-22 21:24:03
    … 95.3 结构和类 ……………………·9现继承 ¨¨…………………%.1 虚方法………………………·97.2 隐藏方法……………………·98.3 调用函数的基类版本 ………·994.2.4 抽象类和抽象函数 ……∷·△004,2,5 ...
  • LabVIEW下普通数据采集卡的驱动与调用.pdf LabVIEW下远程虚拟实验室的研究与实现.pdf LabVIEW与Matlab_Simulink混合编程方法及应用.pdf LabVIEW与Matlab混合编程的实现.pdf LabVIEW与VC程序的动态数据交换.pdf ...
  • LabVIEW下普通数据采集卡的驱动与调用.pdf LabVIEW下远程虚拟实验室的研究与实现.pdf LabVIEW与Matlab_Simulink混合编程方法及应用.pdf LabVIEW与Matlab混合编程的实现.pdf LabVIEW与VC程序的动态数据交换.pdf ...
  • labview的接口原来如此简单

    千次阅读 2012-03-12 14:40:12
    还是dll调用最简单 一个win32的空dll就好了 加入两个文件(.c,.def) c里面写函数,def定义输出什么函数,就完了,很简单了。
  • LabVIEW下普通数据采集卡的驱动与调用.pdf LabVIEW下远程虚拟实验室的研究与实现.pdf LabVIEW与Matlab_Simulink混合编程方法及应用.pdf LabVIEW与Matlab混合编程的实现.pdf LabVIEW与VC程序的动态数据交换.pdf ...
  • 这里只介绍C函数的导出和不同环境(windows platform c/c++, python, labview)的导入。 Keywords: dllexport, no head file, dynamic load, LoadLibrary, and GetProcAddress 准备工作 假设我们写了几个非常简单的...
  • 5.24-29离线解析问题

    2019-07-25 07:55:00
    改成离线语音听写在 ...LXY答:需要1、DLL函数声明 int LVmain(char** OutInfo)2、函数调用约定需要一致-__cdecl (/Gd)3、使用传指针参数进labview 是不行的,无法实现类似于C语言的传地址功能...

空空如也

空空如也

1 2
收藏数 35
精华内容 14
关键字:

labview调用c函数