コード例 #1
0
        /// <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( ));
        }
コード例 #2
0
        /// <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)));
        }
コード例 #3
0
        /// <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( ));
        }
コード例 #4
0
        /// <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( ));
        }
コード例 #5
0
 /// <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)));
 }
コード例 #6
0
 /// <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)));
 }