您的位置 首页 方案

LabVIEW 调用 C/C++ Dll 详解

LabVIEW在配上NI的采集卡或者别的第三方的硬件,约等于神器(虽然有时候贵了点)。这样你可以比较集中精力的专注于数据处理了,就不用学

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

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/212721.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部