找回密码
 注册
LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 1925|回复: 1

[求助]关于activex调用中的问题

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2026-9-29 02:06 , Processed in 0.028076 second(s), 6 queries , Gzip On, File On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表