/// <summary> /// 在连接上AllenBradley PLC后,需要进行一步握手协议 /// </summary> /// <param name="socket">连接的套接字</param> /// <returns>初始化成功与否</returns> protected override OperateResult InitializationOnConnect(Socket socket) { // 注册会话信息 OperateResult <byte[], byte[]> read1 = ReadFromCoreServerBase(socket, RegisterSessionHandle( )); if (!read1.IsSuccess) { return(read1); } // 检查返回的状态 OperateResult check1 = CheckResponse(read1.Content1); if (!check1.IsSuccess) { return(check1); } // 提取会话ID SessionHandle = ByteTransform.TransUInt32(read1.Content1, 4); // 打开注册 //OperateResult<byte[], byte[]> read2 = ReadFromCoreServerBase( socket, SendRRData( ) ); //if (!read2.IsSuccess) return read2; //// 检查返回的状态 //OperateResult check2 = CheckResponse( read2.Content1 ); //if (!check2.IsSuccess) return check2; // 提取连接标识 //NetWorkConnectionID = ByteTransform.TransUInt32( read2.Content2, 20 ); // 校验成功 return(OperateResult.CreateSuccessResult( )); }
/// <summary> /// 读取设备的uint类型的数组 /// </summary> /// <param name="address">起始地址</param> /// <param name="length">数组长度</param> /// <returns>带成功标志的结果数据对象</returns> public OperateResult <uint[]> ReadUInt32(string address, ushort length) { OperateResult <byte[]> read = Read(address, (ushort)(length * WordLength * 2)); if (!read.IsSuccess) { return(OperateResult.CreateFailedResult <uint[]>(read)); } return(OperateResult.CreateSuccessResult(ByteTransform.TransUInt32(read.Content, 0, length))); }
/// <summary> /// After connecting the Allenbradley plc, a next step handshake protocol is required /// </summary> /// <param name="socket">socket after connectting sucessful</param> /// <returns>Success of initialization</returns> protected override OperateResult InitializationOnConnect(Socket socket) { // Registering Session Information OperateResult <byte[]> read = ReadFromCoreServer(socket, RegisterSessionHandle( )); if (!read.IsSuccess) { return(read); } // Check the returned status OperateResult check = CheckResponse(read.Content); if (!check.IsSuccess) { return(check); } // Extract session ID SessionHandle = ByteTransform.TransUInt32(read.Content, 4); return(OperateResult.CreateSuccessResult( )); }
/// <summary> /// 在连接上AllenBradley PLC后,需要进行一步握手协议 /// </summary> /// <param name="socket">连接的套接字</param> /// <returns>初始化成功与否</returns> protected override OperateResult InitializationOnConnect(Socket socket) { // 注册会话信息 OperateResult <byte[], byte[]> read1 = ReadFromCoreServerBase(socket, RegisterSessionHandle( )); if (!read1.IsSuccess) { return(read1); } // 检查返回的状态 OperateResult check1 = CheckResponse(read1.Content1); if (!check1.IsSuccess) { return(check1); } // 提取会话ID SessionHandle = ByteTransform.TransUInt32(read1.Content1, 4); return(OperateResult.CreateSuccessResult( )); }
/// <summary> /// 读取PLC的uint类型的数组 -> An array that reads the UINT 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="ReadUInt32Array" title="UInt32类型示例" /> /// </example> public override OperateResult <uint[]> ReadUInt32(string address, ushort length) { return(ByteTransformHelper.GetResultFromBytes(Read(address, length), m => ByteTransform.TransUInt32(m, 0, length))); }
/// <summary> /// 读取设备的uint类型的数组 /// </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="ReadUInt32Array" title="UInt32类型示例" /> /// </example> public virtual OperateResult <uint[]> ReadUInt32(string address, ushort length) { return(ByteTransformHelper.GetResultFromBytes(Read(address, (ushort)(length * WordLength * 2)), m => ByteTransform.TransUInt32(m, 0, length))); }