newhzh
级别: 探索解密
精华主题: 0
发帖数量: 4 个
工控威望: 132 点
下载积分: 610 分
在线时间: 3(小时)
注册时间: 2013-06-28
最后登录: 2013-07-18
查看newhzh的 主题 / 回贴
楼主  发表于: 2013-06-28 15:54
环境:VS2008 C#.NET,MX Component3.00A ,PLC型号:FX3U-16MT
在项目中引用了ACTPCCOMLib , 代码如下:

private void btnRead_Click(object sender, EventArgs e)
        {
            ACTPCCOMLib.ActFXCPUClass act = new ACTPCCOMLib.ActFXCPUClass();
            int val = act.Open();
            if (val != 0)
            {
                MessageBox.Show("PLC通讯打开失败!");
                return;
            }
            
            int B;

            val = act.ReadDeviceBlock("D0", 10, out B);
            
            memoEdit1.Text = "返回代码:" + val.ToString();
            
        }

在执行ReadDeviceBlock函数时,报错,请教一下哪里的问题?
多谢!
newhzh
级别: 探索解密
精华主题: 0
发帖数量: 4 个
工控威望: 132 点
下载积分: 610 分
在线时间: 3(小时)
注册时间: 2013-06-28
最后登录: 2013-07-18
查看newhzh的 主题 / 回贴
1楼  发表于: 2013-06-28 16:50
在C#里面,ReadDeviceBlock函数提示的out参数是int型,我就不太明白,从D0开始读取10位,这个返回值怎么能存放在一个int型的参数中?按理说应该给给int[]数组类型作为返回值啊。
想不明白,请不吝赐教!
newhzh
级别: 探索解密
精华主题: 0
发帖数量: 4 个
工控威望: 132 点
下载积分: 610 分
在线时间: 3(小时)
注册时间: 2013-06-28
最后登录: 2013-07-18
查看newhzh的 主题 / 回贴
2楼  发表于: 2013-07-18 14:56
这样写即可:

int[] B=new int[10]

val = act.ReadDeviceBlock("D0", 10, out B[0]);