调用DLL中的函数,参数设置问题?
时间:12-13
整理:3721RD
点击:
我想通过LabVIEW中的Call Library Function Node调用DLL来控制一个仪器
DLL中的一个函数原型是 function putcommand(prec:pointer):longint;
在设置Call Library Function Node的参数时有点迷惑
这个prec:pointer是什么类型? 手册里有句话是这样的
Together with the Putcommand function ,a 32 bit pointer, which points to command
message structur (see below) is to be transferred to the DLL.
TCommandMsg = packed record
ApId : longint;
commandnr : word;
command : tcommand;
end;
其中 tcommand的数据结构如下
tcommand = packed record
commandID : word;
param : tparam;
end;
这种结构里套结构,还涉及指针的DLL与LabVIEW之间的参数传递实在搞得我很迷惑啊.
这里哪位能指点一下.多谢先!
DLL中的一个函数原型是 function putcommand(prec:pointer):longint;
在设置Call Library Function Node的参数时有点迷惑
这个prec:pointer是什么类型? 手册里有句话是这样的
Together with the Putcommand function ,a 32 bit pointer, which points to command
message structur (see below) is to be transferred to the DLL.
TCommandMsg = packed record
ApId : longint;
commandnr : word;
command : tcommand;
end;
其中 tcommand的数据结构如下
tcommand = packed record
commandID : word;
param : tparam;
end;
这种结构里套结构,还涉及指针的DLL与LabVIEW之间的参数传递实在搞得我很迷惑啊.
这里哪位能指点一下.多谢先!
dephi写的程序?
指针一般就是一个数值型数据吧
LabVIEW里没有指针类型啊
都说了是数值型的……
此路无门你偏走 :)
labVIEW对这种结构套结构的参数支持非常不好,NI的技术支持也不赞成这种做法
两个解决方法
1. 对这个dll函数另外写或封装一个版本,把复杂的结构转化简单类型的参数
2. 平化字符串。前提是你对LabVIEW或其他语言的内存分布有很清楚的了解
囧rz
Thx
看来路还很长啊