/// <summary> /// 从欧姆龙PLC中批量读取位软元件,返回读取结果 /// </summary> /// <param name="address">读取地址,具体的地址参考文档</param> /// <param name="length">读取的长度</param> /// <returns>带成功标志的结果数据对象</returns> /// <example> /// <code lang="cs" source="Communication_Net45.Test\Documentation\Samples\Profinet\OmronFinsNet.cs" region="ReadBool" title="ReadBool示例" /> /// </example> public OperateResult <bool[]> ReadBool(string address, ushort length) { // 获取指令 var command = OmronFinsNetHelper.BuildReadCommand(address, length, true); if (!command.IsSuccess) { return(OperateResult.CreateFailedResult <bool[]>(command)); } // 核心交互 OperateResult <byte[]> read = ReadBase(PackCommand(command.Content)); if (!read.IsSuccess) { return(OperateResult.CreateFailedResult <bool[]>(read)); } // 数据有效性分析 OperateResult <byte[]> valid = ResponseValidAnalysis(read.Content, true); if (!valid.IsSuccess) { return(OperateResult.CreateFailedResult <bool[]>(valid)); } // 返回正确的数据信息 return(OperateResult.CreateSuccessResult(valid.Content.Select(m => m != 0x00 ? true : false).ToArray())); }
/// <summary> /// 批量读取PLC的数据,以字为单位,具体的地址参考文档 /// </summary> /// <param name="address">地址信息</param> /// <param name="length">数据长度</param> /// <returns>读取结果信息</returns> public override OperateResult <byte[]> Read(string address, ushort length) { // 解析地址 var command = OmronFinsNetHelper.BuildReadCommand(address, length, false); if (!command.IsSuccess) { return(command); } // 核心交互 OperateResult <byte[]> read = ReadBase(PackCommand(command.Content)); if (!read.IsSuccess) { return(OperateResult.CreateFailedResult <byte[]>(read)); } // 数据有效性分析 OperateResult <byte[]> valid = ResponseValidAnalysis(read.Content, true); if (!valid.IsSuccess) { return(OperateResult.CreateFailedResult <byte[]>(valid)); } // 读取到了正确的数据 return(OperateResult.CreateSuccessResult(valid.Content)); }