LabVIEW 调用 C/C++ Dll 详解

2015-10-21 13:45:40来源: eefocus
LabVIEW 在配上NI的采集卡或者别的第三方的硬件,约等于神器(虽然有时候贵了点)。这样你可以比较集中精力的专注于数据处理了,就不用学习麻烦的Win32的GUI编程, 也不用关注和你自己搞的采集板之间的通信了。
对于每一个测控行业的程序来说,基本上都是:
初始化-->数据采集-->数据处理-->数据显示-->数据保存-->结束  的一个过程。
当然如果是实时的,那么采集,处理,显示就是在一个loop里面。当然为了保证实时性,数据处理和数据采集不一定在一个线程里,因为处理的时候把采集给block住也挺傻的。
 
LabVIEW 很容易帮你搞定:
初始化-->数据采集-->数据处理-->数据显示-->数据保存-->结束
但是数据处理部分,是和你的学科紧密相关的,有时候算法会“诡异”到你很难用VI来实现,那么你就要有C++" target="_blank">C++
code来搞了。 那么C/C++ 是如何与LabVIEW 交互的呢,本文来较详细的阐述一下,因为准备采用总分总的写作手法...所以先来个概括...
1. 把C/C++ code 编译成Dll
2. 用LabVIEW的call library node来调用。
难点在于:如何把LabVIEW的数据类型和C/C++ 的来对应。
    

控件x相当与一个double,当然其类型也是可以选择的(如右图所示)。
boolean 按理说应该是一个bool, 但是传入call library node的时候,一般要转成unsigned int型。
cluster其实就是个struct ,左图的cluster是:
struct tCluster
{
   double x11; // 类型都可以向右图那样自己配置
   double x2;
   int x3;
};
对于string,这里要着重讲一下,labview的string类型里面是包含长度信息的,它不是一个简单的char *
它是个LStrHandle类型:定义咋extcode.h 里面(可以在labview目录下搜到)
typedef struct {
int32 cnt;
uChar str[1];
} LStr, *LStrPtr, **LStrHandle;
cnt就是含有多少个字符,str这个指针所指的就是数据区的第一个字符。
 
(还有很多没写...明天继续,排版也杂乱无章...等全部写好在整理吧)
其实应该列个提纲,大概是:
1.背景
2.call library node(CLN) 支持很多数据类型
3.用户内存区 和 LabVIEW内存区
4.
struct tArray
{
   unsigned int cnt;
   T data[1];
}; 是神马? 一堆handle.
5.怎样把字符串传递给CLN
6.怎样把LabVIEW 的 1-D, 2-D, 3-D 数组传递给 DLL
7.把LabVIEW 的簇和簇数组传递给 DLL

关键字:LabVIEW  C  C++  Dll

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/Test_and_measurement/2015/1021/article_13603.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
LabVIEW
C
C++
Dll

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved