微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 测试测量 > Labview > 如何使用LabVIEW和DLL传递或接收指标

如何使用LabVIEW和DLL传递或接收指标

时间:10-02 整理:3721RD 点击:

[Question]

虽然我们都知道要使用Call Library Function Node去载入DLL,但一遇到指标(Pointer)还真不知道该怎么设定?


[Answer]

指标(Pointer)是在C语言中很重要的一种资料型态,并且是被广泛的被使用,所以当要用LabVIEW去呼叫C/C++所开发的DLL时,一定会遇到指标的问题,接着我会以传递及接收指标这两个方向来说明。


一、传递指标到DLL

①传递整数(Integer)指标

如果以下是我们呼叫的函式

void ReturningValuesByReference_Integer(int x, int y, int *sum);

我们要将资料传递到*sum中,所以请在Data type栏位选择”Signed 32-bit Integer”,然后在Pass栏位选择”Pointer to Value”,如下图所示。




②传递阵列(Array)资料

我们以下列函式为例

int PassingParamters_ArrayOfIntegers (int x[], int length);

我们要将资料传递到阵列,此时也要使用指标的方式来传,请你在Type栏位选择”Array”,Data type栏位选择”Singed 32-bit Integer”,Array format栏位选择”Array Data Pointer”,如下图所示。




③传递字符串(String)指标

以下列函式为例

int PassingParamters_String (char *str);

当我们要将资料传递到*str中,请你在String format栏位选择”C String Pointer”,如下图所示。




④传递结构(Struct)资料

以下例函式为例

void ReturningValuesByReference_SimpleStruct (struct simpleStructCircle circle, struct simpleStructCircle *largerCircle);

如果是传递结构的话,只需要将原本结构中的内容依序传入即可,以本函式为例”circle”中含有三个浮点数分别是x, y, radius,所以只要依序宣告即可,但若是遇到结构指标,请你在Type栏位选择”Adapt to Type”,Data format栏位选择”Handles by Value”,如下图所示。




二、从DLL接收指标

①函式回传指标

如果函式程序码如下

int * ReturnAValue_PointerToInteger(void)

{

     int *x = (int *) malloc(sizeof(int));

     *x = 5;

     return x;

}

所以我们可以知道函式本式回传整数指标,请你在Type栏位选择” Numeric”,在Data type栏位选择”Signed Pointer-sized Integer”,如下图所示。




②以Reference型式回传

我们以下列程序码为例

void ReturningValuesByReference_Integer (int x, int y, int *sum)
{
     //sum is a pointer
     *sum = x + y;
}

由程序可知,运算后的资料会放在*sum当中,所以请你在Data type栏位中选择”Pointer to Value”即可,如下图所示。




转载


在人非得以的情况下,尽量不要触碰,哈哈,太麻烦了,尤其是一个全新的DLL,连参数都搞不清楚的

有头文件的话可以试着导入共享库dll  可以自动生成 然后稍微做下修改

一般DLL都自己写,不用指针,是在避不开的话,就单独拿出来做……

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top