[求助]关于activex调用中的问题
<P>现在再用Labview和三菱PLC进行通信,三菱提供Activex可以调用,下面的代码是找到的ReadDeviceBlock定义:</P><P> virtual /* */ HRESULT STDMETHODCALLTYPE ReadDeviceBlock(
/* */ BSTR szDevice,
/* */ LONG dwSize,
/* */ LONG __RPC_FAR *lpdwData,
/* */ LONG __RPC_FAR *lplReturnCode) = 0;</P>
<P>其中szDevice和dwSize分别表示需要读取内容在PLC中的起始地址和读取长度,lpdwData用于存放读取的数据。在VB中调用此Activex的时候定义lpdwData为数组,用ReadDeviceBlocl("D10",10,lpdwData(0))就可以将D10开始的连续内容读取到lpdwData数组中。但是在Labview中用Acvitex Contianer调用的时候为什么只能每次读取一个数据呢,请各位帮忙分析一下。</P>
<P>另外从原型函数看lpdwData为数组类型,但是不知道为什么在Labview中不能将定义的数组直接作为参数传递给lpdwData,如果想实现批量读取数据应该怎么处理呢?</P> <P>晕倒,没人愿意帮忙</P><P>现在已经搞定了,花了我三天时间,还是没有搞清楚到底为什么这个函数声明的activex函数在labview中调用时只能传递数值,而不能传递数组进去。想想估计也可能是在C中数组名在作为参数的时候可以具备指针的性质,而labview中的数组却没有这些属性,不知道蒙的对不对哪位知道确切的原因帮忙解释一下,否则要一直郁闷下去了。</P><P>下面把我的解决方法拿出来分享一下:其实也很简单,给原来三菱的activex控件和labview做了个中间控件,在自定义控件中实现了原控件的大部分属性和方法,但是对我所需要应用的部分函数进行了重新定义。这样就可以在labview中直接传数组了</P>
页:
[1]