/// <summary>
        /// 使用指定的类型写入指定的节点数据
        /// </summary>
        /// <param name="address">节点地址数据</param>
        /// <param name="typeCode">类型代码,详细参见<see cref="AllenBradleyHelper"/>上的常用字段</param>
        /// <param name="value">实际的数据值</param>
        /// <param name="length">如果节点是数组,就是数组长度</param>
        /// <returns>是否写入成功</returns>
        public OperateResult WriteTag(string address, ushort typeCode, byte[] value, int length = 1)
        {
            OperateResult <byte[]> command = BuildWriteCommand(address, typeCode, value, length);

            if (!command.IsSuccess)
            {
                return(command);
            }

            // 核心交互
            OperateResult <byte[]> read = ReadFromCoreServer(command.Content);

            if (!read.IsSuccess)
            {
                return(read);
            }

            // 检查反馈
            OperateResult check = CheckResponse(read.Content);

            if (!check.IsSuccess)
            {
                return(OperateResult.CreateFailedResult <byte[]>(check));
            }

            // 提取写入结果
            return(AllenBradleyHelper.ExtractActualData(read.Content, false));
        }
        /// <summary>
        /// 批量读取数据信息,数据长度无效
        /// </summary>
        /// <param name="address">节点的地址格式</param>
        /// <param name="length">每个地址的数组长度</param>
        /// <returns>带有结果对象的结果数据</returns>
        public OperateResult <byte[]> Read(string[] address, int[] length)
        {
            // 指令生成
            OperateResult <byte[]> command = BuildReadCommand(address, length);

            if (!command.IsSuccess)
            {
                return(command);
            }

            // 核心交互
            OperateResult <byte[]> read = ReadFromCoreServer(command.Content);

            if (!read.IsSuccess)
            {
                return(read);
            }

            // 检查反馈
            OperateResult check = CheckResponse(read.Content);

            if (!check.IsSuccess)
            {
                return(OperateResult.CreateFailedResult <byte[]>(check));
            }

            // 提取数据
            return(AllenBradleyHelper.ExtractActualData(read.Content, true));
        }
Beispiel #3
0
        private OperateResult <byte[]> ReadByCips(params byte[][] cips)
        {
            OperateResult <byte[]> result = ReadCipFromServer(cips);

            if (!result.IsSuccess)
            {
                return(result);
            }
            return(AllenBradleyHelper.ExtractActualData(result.Content, true));
        }
Beispiel #4
0
        public OperateResult WriteTag(string address, ushort typeCode, byte[] value, int length = 1)
        {
            OperateResult <byte[]> result = BuildWriteCommand(address, typeCode, value, length);

            if (!result.IsSuccess)
            {
                return(result);
            }
            OperateResult <byte[]> result2 = ReadFromCoreServer(result.Content);

            if (!result2.IsSuccess)
            {
                return(result2);
            }
            OperateResult result3 = CheckResponse(result2.Content);

            if (!result3.IsSuccess)
            {
                return(OperateResult.CreateFailedResult <byte[]>(result3));
            }
            return(AllenBradleyHelper.ExtractActualData(result2.Content, false));
        }
Beispiel #5
0
        public OperateResult <byte[]> Read(string[] address, int[] length)
        {
            OperateResult <byte[]> result = BuildReadCommand(address, length);

            if (!result.IsSuccess)
            {
                return(result);
            }
            OperateResult <byte[]> result2 = base.ReadFromCoreServer(result.Content);

            if (!result2.IsSuccess)
            {
                return(result2);
            }
            OperateResult result3 = CheckResponse(result2.Content);

            if (!result3.IsSuccess)
            {
                return(OperateResult.CreateFailedResult <byte[]>(result3));
            }
            return(AllenBradleyHelper.ExtractActualData(result2.Content, true));
        }