private OperateResult CheckResponse(byte[] response) { try { int status = ByteTransform.TransInt32(response, 8); if (status == 0) { return(OperateResult.CreateSuccessResult( )); } string msg = string.Empty; switch (status) { case 0x01: msg = StringResources.Language.AllenBradleySessionStatus01; break; case 0x02: msg = StringResources.Language.AllenBradleySessionStatus02; break; case 0x03: msg = StringResources.Language.AllenBradleySessionStatus03; break; case 0x64: msg = StringResources.Language.AllenBradleySessionStatus64; break; case 0x65: msg = StringResources.Language.AllenBradleySessionStatus65; break; case 0x69: msg = StringResources.Language.AllenBradleySessionStatus69; break; default: msg = StringResources.Language.UnknownError; break; } return(new OperateResult(status, msg)); } catch (Exception ex) { return(new OperateResult(ex.Message)); } }
/// <summary> /// 读取设备的int类型的数组 /// </summary> /// <param name="address">起始地址</param> /// <param name="length">数组长度</param> /// <returns>带成功标志的结果数据对象</returns> public OperateResult <int[]> ReadInt32(string address, ushort length) { OperateResult <byte[]> read = Read(address, (ushort)(length * WordLength * 2)); if (!read.IsSuccess) { return(OperateResult.CreateFailedResult <int[]>(read)); } return(OperateResult.CreateSuccessResult(ByteTransform.TransInt32(read.Content, 0, length))); }
private OperateResult CheckResponse(byte[] response) { try { int status = ByteTransform.TransInt32(response, 8); if (status == 0) { return(OperateResult.CreateSuccessResult( )); } string msg = string.Empty; switch (status) { case 0x01: msg = "发件人发出无效或不受支持的封装命令。"; break; case 0x02: msg = "接收器中的内存资源不足以处理命令。 这不是一个应用程序错误。 相反,只有在封装层无法获得所需内存资源的情况下才会导致此问题。"; break; case 0x03: msg = "封装消息的数据部分中的数据形成不良或不正确。"; break; case 0x64: msg = "向目标发送封装消息时,始发者使用了无效的会话句柄。"; break; case 0x65: msg = "目标收到一个无效长度的信息"; break; case 0x69: msg = "不支持的封装协议修订。"; break; default: msg = "未知错误"; break; } return(new OperateResult(status, msg)); } catch (Exception ex) { return(new OperateResult( ) { Message = ex.Message }); } }
/// <summary> /// 读取PLC的int类型的数组 -> An array that reads the int type of the PLC /// </summary> /// <param name="address">节点的名称 -> Name of the node </param> /// <param name="length">数组长度 -> Array length </param> /// <returns>带有结果对象的结果数据 -> Result data with result info </returns> /// <example> /// 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: /// <code lang="cs" source="HslCommunication_Net45.Test\Documentation\Samples\Core\NetworkDeviceBase.cs" region="ReadInt32Array" title="Int32类型示例" /> /// </example> public override OperateResult <int[]> ReadInt32(string address, ushort length) { return(ByteTransformHelper.GetResultFromBytes(Read(address, length), m => ByteTransform.TransInt32(m, 0, length))); }
/// <summary> /// 读取设备的int类型的数组 /// </summary> /// <param name="address">起始地址</param> /// <param name="length">数组长度</param> /// <returns>带成功标志的结果数据对象</returns> /// <example> /// 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: /// <code lang="cs" source="HslCommunication_Net45.Test\Documentation\Samples\Core\NetworkDeviceBase.cs" region="ReadInt32Array" title="Int32类型示例" /> /// </example> public virtual OperateResult <int[]> ReadInt32(string address, ushort length) { return(ByteTransformHelper.GetResultFromBytes(Read(address, (ushort)(length * WordLength * 2)), m => ByteTransform.TransInt32(m, 0, length))); }