OPC-无法将类型为“System.Int32”的对象强制转换为类型“System.Array”

在用VB.NET编写OPC读写西门子S7400程序时候,碰到图中句柄问题,请问该问题如何解决?

Public Shared MyItemServerHandles2 As System.Array

Private Sub PLC_AsyncWrite(ByVal NumItemsW As Integer, ByRef ItemValuesW() As System.Object, ByRef MyErrors As System.Array)
 Dim lHandle(U_NUMITEMS) As System.Array
        Dim i As Integer
        If MyGroup2 Is Nothing Then
            Exit Sub
        End If
        If MyGroup2.OPCItems.Count > 0 Then
 lTransID_Rd2 = lTransID_Rd2 + 1
 For i = 1 To 30
 lHandle(i) = MyItemServerHandles2(NumItemsW)          
                MyGroup2.AsyncWrite(1, lHandle(i), ItemValuesW,
               MyErrors, lTransID_Rd2, lCancelID_Rd2)
    Next
        End If
    End Sub
我另外定义了一个数组STRBUF或STRBUF(30)测试,尝试过定义成System.array 、string、 integer,来接收MyItemServerHandles2这个System.array内的值,但是没办法获得MyItemServerHandles2内的值,
另外定义的数组或string,都显示Nothing
用MSGBOX(MyItemServerHandles2(I))可以显示出MyItemServerHandles2的值


将   Public Shared MyItemServerHandles2(32) As system.array改为    Public Shared MyItemServerHandles2(32) As Integer
错误提示:无法将类型为"system.int32[*]"的对象强制转换为system.int32[]
另外,我用Asyncread却没问题。

问题补充:
在lHandle(i) = MyItemServerHandles2.GetValue(NumItemsW)中能够获取值,但在MyGroup2.AsyncWrite(1, lHandle, ItemValuesW, MyErrors, lTransID_Rd2, lCancelID_Rd2)报错,System.Runtime.InteropServices.SafeArrayTypeMismatchException”类型的未经处理的异常在 X-RAY_BARCODE.exe 中发生 。其他信息: 指定的数组不属于需要的类型。

最佳答案

你要将整数利用循环语句一个一个加入到数组里才行,直接一个数组不可能直接转化成1个整数,1个整数也不能转化成1个数组。整数只能转化为数组里的某一个数

提问者对于答案的评价:
后来确实通过实例化,运行无错误。但是运行AsyncWrite后,DB1.DBW数据依然无改变,新建的AsyncWriteComplete也无运行及数据反映。请问高人我还有哪里有问题?

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc150255.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月4日
下一篇 2017年6月4日

相关推荐

  • 6GK5744-1AA30-2AA0 无线客户端

    6GK5744-1AA30-2AA0 无线客户端 及6XV1875-5CH10 接收端如何设置?有说明书,手册之类的下载吗? 最佳答案 有的,全球资源…

    SIMATIC Net 2017年6月5日
  • CPU315+CP343-1DP如何向装有WIN7系统的PC发送数据

    CPU315+CP343-1DP如何向装有WIN7系统的PC发送数据我PLC是西门子S-300的CPU315,网络设备是CP343-1DP,现在上位机上有关于现场运行的监控程序,用…

    SIMATIC Net 2017年6月5日
  • CP343-1 IT,2个以太网口的作用?

    CP343-1 IT这个以太网模块有2个以太网接口,其中一个接口我已经新建了一个以太网,连接到交换机上用来和WINCC通讯,另外一个以太网接口是否可以重新建一个以太网和M…

    SIMATIC Net 2017年6月13日
  • SIMATIC NET // cp5611常规无法从组态模式改为pg运行模式

    本人新手,前段时间做wincc通讯,在configuration console中不小心把cp5611的常规由pg运行模式改为了组态模式,就改不回去了,现在设置pg/pc…

    2017年6月5日
  • profibus总线通讯ADI4

    编好程序之后,能发送数据,但是不能接受数据,返回值错误代码为8090,硬件连接,地址数据应该都没问题,机床数据也设置了,地址与ADI4匹配,求大神帮忙 最佳答案 8090错误是表示…

    SIMATIC Net 2017年6月3日
  • FC5的参数

    请问FC5中的SEND 和LEN 都有指定发送长度的功能 那这2个有什么区别吗 LEN代表的意思是什么 问题补充:要是LEN设置成变量的话&…

    SIMATIC Net 2017年6月24日
  • KTP600 Basic DP触摸屏

    怎样将写好的程序下载到KTP600 Basic DP触摸屏上?始终传送不了!有谁有具体的操作步骤? 问题补充:西门子S7-313C-2DP能用自带的DP口作为R…

    2017年6月1日
  • simattc net

    simattc net有试用版吗?想试用一下 最佳答案 simattc net 试用版相关信息参考链接SIMATIC NET DV…

    2017年6月8日
  • 谁有WINAC软件传我一份

    拿位大哥有WINAC软件传我一份,谢谢拉,我的邮箱527529693@qq.com 最佳答案 查收邮箱如果你做项目的话就好买正版的 提问者对于答案的评价:.

    SIMATIC Net 2017年6月10日
  • CP 443 所有LED灯闪烁故障

    故障现象:在下载/上传大量数据时偶尔会出现CP443模块上所以LED灯一起闪烁的情况。请教各位可能是什么原因。谢谢! 最佳答案 A、转帖:1、断电重起,看看。如不能解决问题;2、重…

    SIMATIC Net 2017年6月7日