精华内容
下载资源
问答
  • PAGE PAGE 3 Labview调用C语言的方法 CINCode InterfaceNode节点是LabVIEW中用来调用C/C++代码的功能节点它与动态链接库的不同之处在于它能够将代码集成在VI中作为单独的一个VI发布而不需要多余的文件另外它提供了...
  • 详细介绍labview调用matlab函数的方法,以及过程中的注意事项。 详细介绍labview调用matlab函数的方法,以及过程中的注意事项。
  • 通过Labview调用API函数 CreateDCA、GetPixel获取屏幕RGB值,移动鼠标可以获取实时的颜色值,十六进制显示。
  • 指导labview 调用C的简单例程,适合初学者学习。。。。。。
  • labview 调用windows API函数DLL摄像头采集程序
  • LabVIEW调用MATLAB进行图像处理
  • LabVIEW调用MATLAB进行图像处理的实现,labview调用matlab函数,LabView源码.zip
  • LabVIEW调用MATLAB进行图像处理的实现,labview调用matlab函数,LabView源码.rar
  • LABVIEW调用DLL方法

    2018-04-12 16:37:58
    如何通过LABVIEW调用DLL,适用于采用LABVIEW调用一些外部模块接口
  • LabviewC语言回调函数的实现

    千次阅读 2016-08-14 10:32:58
    labview实现Dll中的回调函数调用  曾经困惑于labview 调用DLL中的函数,该DLL所调用函数内部当发生一些事件时调用回调函数,用labview该去怎么实现。 假设Dll中有导出函数funcA(int a,int b ,int (*...

    labview实现Dll中的回调函数的调用

           曾经困惑于labview 调用DLL中的函数,该DLL所调用的函数内部当发生一些事件时调用回调函数,用labview该去怎么实现。

    假设Dll中有导出函数funcA(int a,int b ,int (*callback) (int,int)),导出函数funcA有三个参数,两个整形参数,一个函数指针(即回调函数),这个导出函数用labview去调用该如何实现。C语言的函数指针相当于labview的vi句柄,labview中Vi就是封装的函数,基于这样的思路,callback回调自己用labview 封装成Vi并留出参数接口,当在labview 中装载Dll并调用funcA时,将callback函数封装的Vi的句柄传给第三个参数,但是这样并没有成功过。那么又该如何去实现?

    这两天没事上网搜索,发现讲这方面的几乎没有,唯一找到的线索是labview 好像不能直接通过子Vi的方式调用回调函数,但是可以通过另外写个Dll,在该DLL中写一个导出函数用于获取回调函数的地址(即函数指针),而所调用的回调函数也在该DLL中实现。下面就这样的思路来验证下。

    一、写包含funcA函数的DLL,该函数的某个参数为回调函数的函数指针

          在VS2015中新建win32项目MyDll

           

                                                                                               图1

             应用程序类型选DLL,并勾选导出符号

             

                                                                                 图2

            

             在MyDll.h中删除这几行代码(图a), 新增EXTERN_CMYDLL_API int _stdcall functionCall(int a, intb, int(*callback)(int,int)); 后如图(b)

            

                                                                                          

                                                                                             图a

            

           

                                                                                              图b

           

            在MyDll.cpp中删除这几行代码(图a),新增

            usingnamespace std;

            MYDLL_API int _stdcall functionCall(int a,intb,int(*callback)(int,int)){

            int result;

            result = callback(a,b)+10;

              //cout<< "Call callback:"<< result << endl;

             return result;

             }

            后如图(b)

            

                                           图a

            

            

                                                                                                    图b

           

             运行生成MyDll.dll

             

    二、写辅助DLL,该DLL中导出获取回调函数地址的函数,回调函数的实现也在该Dll中实现

          同一,新建win32 DLL工程dllattach

          将第一步生成的MyDll.dll和MyDll.h拷到dllattach的源代码所在目录下,并包含在工程中。直接拷过来的MyDll.h有可能提                      示EXTERN_C错误,将其改为extern"C"即可

          dllattach.h如下

          #ifdefDLLATTACH_EXPORTS

          #defineDLLATTACH_API __declspec(dllexport)

          #else

          #defineDLLATTACH_API __declspec(dllimport)

          #endif

     

          extern"C" DLLATTACH_API void*_stdcall getFunAdd(int);

         dllattach.cpp如下

          #include"stdafx.h"

          #include<Windows.h>

          #include<iostream>

          #include<tchar.h>

          #include"dllattach.h"

          #include"MyDll.h"

     

         int nummin(int ,int);

         int nummax(int, int);

     

         DLLATTACH_API void* _stdcall getFunAdd(int num){

                switch(num)

               {

               case1:

                    return nummin;

                    break;

               case2:

                    return nummax;

                     break;

               default:

                     break;

                 }

               return0;

             }

        int  nummin(int a,intb){

        int temp;

        if(a>b){

            temp =b;

        }

        else{

            temp =a;

        }

        return temp;

        }

       int nummax(int a,intb){

        int temp;

        if(a>b){

            temp =a;

        }

        else{

            temp =b;

        }

        return temp;

        }

          运行工程生成dllattach.dll

    三、通过labview调用DLL

          新建labview Vi,保存为dllcall.vi,将前面生成的MyDll.dll和dllattach.dll拷到vi所在目录

    dllcall.vi 后面板如图

          

        

           dllcall.vi 前面板如图

           

           

           dllattach.dll调用节点设置如下

           

           

           MyDll.dll调用节点设置如下

           

           

           该vi根据selector的值,当selector为1时result为num1和num2中的最小值加十,当selector为2时result为num1和num2中的最大值加十

     

           如下运行结果

                               

           

           回调函数nummin(int a,int b)和nummax (int a,int b)都是在dllattach.dll自己实现了,dllattach.dll要的是导出一个获取回调函数的地址的导出函数,然后将函数地址传给呼叫回调函数的DLL调用节点。这种方法虽然麻烦了点但还是实现了。





          


    展开全文
  • Labview和putty交互, 通过labview调用putty的接口函数, 在putty实现的功能,都可以在labview中实现, 比如telnet, shell, 等等其他的功能
  • 对 Matlab 和 Lab VIEW 的混合编程进行了探讨,主要研究 SIT 件包和动态链接库两种技术,并在此基础上以单相半波电路实验为例详细介绍了构建虚拟电力电子实验室的方法及各自的技术优点。
  • C语言创建dll及Labview实现调用

    千次阅读 2017-03-20 16:19:15
    本文将详细记录使用C语言创建一个dll库文件,然后在Labview中进行调用的过程。 一、目标用C语言创建两个函数,分别用于获取两个整数中较大、较小的值。函数命名:getMax,getMin。生成dll文件后,在Labview中将这两...

    本文将详细记录使用C语言创建一个dll库文件,然后在Labview中进行调用的过程。

    一、目标

    用C语言创建两个函数,分别用于获取两个整数中较大、较小的值。函数命名:getMax,getMin。生成dll文件后,在Labview中将这两函数创建成对应的子vi。

    二、创建DLL文件

    利用CodeBlocks创建自定义的dll文件;在CB中创建一个Dynamic Link Library项目。
    这里写图片描述
    创建完成后,将默认的main.cpp(或main.c)、main.h文件删从项目中除掉,然后创建新的两个文件Lab_Call_DLL.c、Lab_Call_DLL.h并添加到项目中。
    Lab_Call_DLL.h文件内容:

    #ifndef _LAB_CALL_DLL_H_
    #define _LAB_CALL_DLL_H_
    
    #define DLL_EXPORT __declspec(dllimport)
    
    int DLL_EXPORT  getMax(int a, int b);
    int DLL_EXPORT  getMin(int a, int b);
    #endif // _LAB_CALL_DLL_H_
    

    Lab_Call_DLL.c文件内容:

    #include "Lab_Call_DLL.h"
    
    int DLL_EXPORT  getMax(int a, int b)
    {
        return a>=b?a:b;
    }
    int DLL_EXPORT  getMin(int a, int b)
    {
        return a<=b?a:b;
    }
    

    项目结构如图所示:
    这里写图片描述

    完成上述步骤后,点击Build,进行编译、建立dll文件。编译没有语法错误,将会在在项目输出文件目录下生成接下来要调用的dll文件。
    这里写图片描述

    三、Labview调用DLL

    这里写图片描述

    新建vi命名为需要调用函数的名字并保存;在Labview函数中选择 互连接口->库与可执行程序->调用库函数节点。
    这里写图片描述

    双击该节点、或者右键选择配置…,弹出一个对话框进行函数配置;在库名或路径中选择,刚才生成的Lab_Call_DLL.dll文件,函数名选择getMax,并将参数设置成如图所示。
    这里写图片描述

    并个vi添加输入、输出端;制作成一个可调用的子vi。最后可设计成如图所示的一个vi:
    这里写图片描述

    使用同样的方式,将getMin也制作成一个可调用的子vi.
    这里写图片描述

    展开全文
  • labview调用matlab函数[归纳].pdf
  • labview调用安捷伦

    2019-01-28 16:21:47
    labview调用安捷伦,复制该文件夹到labview安装目录,即可用labview调用安捷伦。
  • 第一篇博客当中说了Labview 的优势,其中就有一项就是可以和Matlab和OpenCV混合编程,今天就说一下用Labview调用opencv,当然网上也有人分享出来怎么去做这个动态链接库,但是针对于图像处理的还不多,至少我看到的...

    DLL输入和输出函数—dllinport与dllexport


    第一篇博客当中说了Labview 的优势,其中就有一项就是可以和Matlab和OpenCV混合编程,今天就说一下用Labview调用opencv,当然网上也有人分享出来怎么去做这个动态链接库,但是针对于图像处理的还不多,至少我看到的都是调用windows的动态链接库,其实也都很简单就是把一维的处理变成二维的处理,网上也有不少例程,我在这个过程当中也因为粗心大意遇到一些问题,今天就把这块详细的说一说,每一步都有图,都有解释。

    今天主要用的函数就是下面这个


    调用库函数,双击之后你会发现有个地方是需要输入库的地址的,也就说你要有自己的库让Lv来调用,而这个库,我们用opencv的函数去写,然后用Lv来调用,这就是所谓的混合编程了。下一步就是要写自己的图相处理的库函数。我用的是VS2013,建立一个dll的工程。看图说话。


    这个在百度知道里边有详细的方法,所以我就直接上代码了。。 很简单的一个功能,先进行方框滤波,然后边缘检测,我就是随便弄的一个处理过程,说明问题就好,先看一下用VS运行之后的效果。


    [html]  view plain  copy
     print ?
    1. <pre class="html" name="code">#include <opencv2\opencv.hpp>  
    2. using namespace cv;  
    3. #define WINDOW_NAME1 "[原始图片]"  
    4. #define WINDOW_NAME2 "[效果窗口]"  
    5.   
    6. Mat g_srcImage; Mat g_templateImage; Mat g_resultImage;  
    7. int g_nMatchMethod;  
    8. int g_nMaxTrackbarnum = 5;  
    9.   
    10. void on_Matching(int, void*);  
    11. int main()  
    12. {  
    13.     Mat image = imread("333.png");  
    14.     Mat temp;  
    15.     cvtColor(image, image, CV_BGR2GRAY);  
    16.     boxFilter(image, image,-1,Size(5,5));  
    17.     Canny(image, image, 150, 100, 3);  
    18.   
    19.     imshow("2", image);  
    20.     //imwrite("2.jpg", image);  
    21.     waitKey(0);  
    22.   
    23.   
    24.   
    25. }  
    26. </pre>  
    27. <pre></pre>  



    没错就是以前用的图片就拿出来用了,能说明问题就好,在新建的dll库中添加这段代码。你会发现非常的简单了。

    [html]  view plain  copy
     print ?
    1. #include <opencv2\opencv.hpp>  
    2. using namespace cv;  
    3.   
    4.   
    5.   
    6. _declspec(dllexport)  void add2(int rows, int cols, unsigned __int8 *data)  
    7. {  
    8.     Mat image_src(rows,cols, CV_8U, &data[0]);  
    9.     /* Insert code here */  
    10.     Mat temp;  
    11.     boxFilter(image_src, temp, -1, Size(5, 5));  
    12.   
    13.     Canny(temp, image_src, 150, 100, 3);  
    14.   
    15.   
    16.   
    17. }  

    没错就是这样了。这里边注意几个问题,就是输出dll比我们正常编程序在函数前面会有dllesport,字面意思也就是dll输出了,当然还有输入就是dllimport,具体为什么这样在http://www.cnblogs.com/paopao/archive/2006/05/08/393924.aspx这博客当中有很好的说明了,我就不赘述了,还有一点就是我们要输入一个图像,而Lv中的图像数据是有自己的结构的,而opencv中也有Mat结构,他们俩的联系就是数组了,所以我们的图像输入变量就必须是个数组指针,把这个数组的数据给opencv的Mat结构,这样就把他们两个联系起来,其实很简单,就是数据结构的问题,当然后来数据结构的问题也是困扰我最久的问题,这里边很多细节细节。滤波和边缘检测的这两个函数要求图像必须是灰度图像,所以定义的data是8位无符号的数据类型,等下在Lv中也有相应的设置,还有一个问题就是,很多人可能会说我的这个函数没有输出,确实没有输出,因为我把最终的图像又还给了输入的图像,这样反正就是少了一个参数,如果你要是写比较复杂的函数,其实中间变量temp就可以充分发挥作用了,只要把最终结果给image就可以。这个函数编译一下就OK了,在Debug文件夹下会发现一个dll文件。

    这个就是我们做好的函数库,下面来看一下Lv中的设置。


    第一页需要修改这两个地方。不用说了,很简单。

    图像行列都是有符号32位,而图像数据是无符号8位的数据,要跟我们库函数中的定义保持一致。确定就可以,确定之后发现多了三个输入量,

    输出就直接连data就可以了,因为在库函数当中我们把最终结果,给了data,前面板就可以看到最终图像,跟我们在opencv当中的效果是一样的。

    展开全文
  • LABVIEW调用excel

    2018-09-09 20:40:11
    导出数据到Excel,可直接把常用的excel调用函数放入user.lib,见附件
  • labview 调用windows API函数DLL摄像头采集程序,labview调用dll实例,LabView源码
  • 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调用外部exe之后指定运行位置,通过使用WindowsAPI函数,获取窗口句柄。
  • LabVIEW调用库函数节点

    2021-09-25 10:30:34
    调用库函数节点配置–函数 库名/路径:输入或选择DLL的函数名或者全路径。当DLL在系统目录下时,不需要输入全路径。 在程序框图中指定路径:如未选择,则LabVIEW静态调用了这个DLL。当调用DLL的这个vi被加载到内存...
  • 将自定义的m文件放入路径C:\Users\Administrator\Documents\LabVIEW Data中即可调用
  • 本例程用Labview调用matlab的方法实现了简单的乘法运算。 只要在laview前面板中输入两个乘数立即得到结果。 本程序简单易懂,学习者一看就会。 注意的是要同时安装labview和matlab软件的计算机才能正确运行。
  • LabVIEW调用c#的完美方案 LabVIEW的功能很强,c#的功能也很强,但总有需要互相借鉴的地方。最初要混合编程是希望用lv做界面,借用VisiyonPro的强大图像处理功能。当时囿于知识限制,并没有很好的解决这个问题。后来...
  • LabView调用C语言CIN节点

    千次阅读 2013-07-31 23:58:18
    一.创建CIN(Code Interface Node)节点的步骤: 1) 创建一个空的CIN节点 2) 为CIN节点设置输入输出端口 3) 创建C语言源程序 ...5) 加载*.lsb文件并完成调用过程(CIN节点右击选择LoadC
  • labview调用halcon程序 (不是调用函数)进行车牌字符的OCR识别 将所有文件放在同一个文件夹下。
  • ![图片说明](https://img-ask.csdn.net/upload/201509/15/1442304160_710359.jpg) 请大神们帮帮忙,这个问题怎么解决啊?
  • LabVIEW必知 - 数学函数

    2020-11-18 06:18:12
    关联知识 LabView 基础数学函数 三角函数和双曲三角函数 指数和对数函数 布尔和比较函数 调试 术语 …更多

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,776
精华内容 710
关键字:

labview调用c函数