大家好,这几天正在研究OPC.服务器端做完了,现在要做一个客户端,我用的是自动化接口OPCDAAuto.dll.
但是遇到一个问题,就是C#调用OPCDAAuto.dll的非托管函数时,老是出现"参数不正确"的异常.
被调用的函数:
HRESULT SyncRead(
[in] SHORT Source,
[in] LONG NumItems,
[in] SAFEARRAY(LONG) * ServerHandles,
[out] SAFEARRAY(VARIANT)* Values,
[out] SAFEARRAY(LONG)* Errors,
[out,optional] VARIANT* Qualities,
[out,optional] VARIANT* TimeStamps
);C#调用代码:
//下面这段代码有问题,SyncRead出现异常int[] serverHandles=new int []{item.ServerHandle};
System.Collections .ArrayList al=new ArrayList ();
al.AddRange (serverHandles);
System.Array Handles=al.ToArray (System.Type .GetType ("System.Int32"));System.Array values;
System.Array errors;
object quality;
object timestamp;group.SyncRead ((short)OPCAutomation.OPCDataSource .OPCDevice,1,ref Handles,out values,out errors,out quality,out timestamp);这是我的程序.请求大家帮助
但是遇到一个问题,就是C#调用OPCDAAuto.dll的非托管函数时,老是出现"参数不正确"的异常.
被调用的函数:
HRESULT SyncRead(
[in] SHORT Source,
[in] LONG NumItems,
[in] SAFEARRAY(LONG) * ServerHandles,
[out] SAFEARRAY(VARIANT)* Values,
[out] SAFEARRAY(LONG)* Errors,
[out,optional] VARIANT* Qualities,
[out,optional] VARIANT* TimeStamps
);C#调用代码:
//下面这段代码有问题,SyncRead出现异常int[] serverHandles=new int []{item.ServerHandle};
System.Collections .ArrayList al=new ArrayList ();
al.AddRange (serverHandles);
System.Array Handles=al.ToArray (System.Type .GetType ("System.Int32"));System.Array values;
System.Array errors;
object quality;
object timestamp;group.SyncRead ((short)OPCAutomation.OPCDataSource .OPCDevice,1,ref Handles,out values,out errors,out quality,out timestamp);这是我的程序.请求大家帮助
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货