NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

请教关于使用Call function node 和CIN的问题

我在使用Labview编写程序,程序中需要调用已知dll文件中的函数,该函数为SetChannelPar(unsigned int PortHandle, unsigned accessMask, linStatPar StatPar), 其中linStatPar为结构体:

typedef struct {
     unsigned int Mode;                          
     int          baudrate; 
     unsigned int Version;                        
     unsigned int reserved;               
}  linStatPar;

起初我使用Call function node来调用SetChannelPar(),但是发现在CFN中只能用Array或者Adapt to the type来传递结构体指针,没有办法直接传递结构体。

后来使用CIN将该函数调用放在c文件中,可以解决调用问题。但是这种方法又存在一个问题,就是每次打开我的vi时候,都找不到函数所在的dll文件,需要重新load一下lsb文件。

我的问题是:
1、使用CFN的话,是否有方法实现直接传递结构体,而非传递指针。我的结构体有128位。
2、如果使用CIN的方法,怎么解决打开vi无法找到dll文件的问题?
谢谢!
0 项奖励
1 条消息(共 3 条)
4,100 次查看

1,你说得对,因为labview里没有直接对应structure的数据类型;但可以实现。

    http://digital.ni.com/public.nsf/websearch/3FF4805467498BA986256CB80082FED8?OpenDocument

2,可以试一下在导引进dl/lsb文件后,选择operate/make current values default, 再save

0 项奖励
2 条消息(共 3 条)
4,084 次查看
谢谢,最后还是使用了CIN解决。将dll文件放在labview的路径下或者系统路径下既可找到。
0 项奖励
3 条消息(共 3 条)
4,050 次查看