装饰器模式

/*----------------------------------------------------------------
 * 作    者 :姜  彦 
 * 项目名称 :AE240.Core.Protocol.Model.Decorator
 * 类 名 称 :SendFrameModelDecoratorDecode 
 * 命名空间 :AE240.Core.Protocol.Model.Decorator
 * CLR 版本 :4.0.30319.42000
 * 创建时间 :2018/8/10 19:09:56
 * 当前版本 :1.0.0.1 
 *  
 * 描述说明: 
 * 
 * 修改历史: 
 * 
*******************************************************************
 * Copyright @ JiangYan 2018. All rights reserved.
*******************************************************************
------------------------------------------------------------------*/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AE240.Core.Protocol.Model.Decorator
{
    /// <summary>
    /// SendFrameModelDecoratorDecode
    /// </summary>
    public class SendFrameModelDecoratorDecode:FrameModel
    {
        private FrameModel _FrameModel = null;
        public SendFrameModelDecoratorDecode(FrameModel frameModel)
        {
            this._FrameModel = frameModel;
        }

        public override byte[] ToByte()
        {
            List<byte> packet = new List<byte>();
            byte[] ccmd = BitConverter.GetBytes((ushort)base.CmdID);
            byte[] iSeqNo = BitConverter.GetBytes(base.iSeqNo);

            packet.Add(FrameBegin);
            packet.Add(ccmd[1]);
            packet.Add(ccmd[0]);
            packet.Add(iSeqNo[1]);
            packet.Add(iSeqNo[0]);
            packet.Add(base.IsReply);


            for (int i = 0; i < base.CmdData.Length; i++)
            {
                packet.Add(base.CmdData[i]);
            }

            byte Cs = GetLRC(packet.Skip(1).Take(packet.Count - 1).ToList());
            packet.Add(Cs);
            packet.Add(FrameEnd);
            return packet.ToArray();
        }

        public override string ToString()
        {
            List<byte> packet = new List<byte>();
            byte[] ccmd = BitConverter.GetBytes((ushort)_FrameModel.CmdID);
            byte[] iSeqNo = BitConverter.GetBytes((ushort)_FrameModel.iSeqNo);

            packet.Add(FrameBegin);
            packet.Add(ccmd[1]);//F0     
            packet.Add(ccmd[0]);//30   
            packet.Add(iSeqNo[1]);//01     
            packet.Add(iSeqNo[0]);//00 
            packet.Add(_FrameModel.IsReply);

            for (int i = 0; i < _FrameModel.CmdData.Length; i++)
            {
                packet.Add(_FrameModel.CmdData[i]);
            }

            byte Cs = GetLRC(packet.Skip(1).Take(packet.Count - 1).ToList());
            packet.Add(Cs);
            packet.Add(FrameEnd);

            StringBuilder recBuffer16 = new StringBuilder();
            string sendStr = string.Empty;
            byte[] sendBytes = packet.ToArray();
            for (int i = 0; i < sendBytes.Length; i++)
            {
                recBuffer16.AppendFormat("{0:X2}" + " ", sendBytes[i]);
            }
            sendStr = recBuffer16.ToString();
            return sendStr;
        }
    }
}
/*----------------------------------------------------------------
 * 作    者 :姜  彦 
 * 项目名称 :AE240.Core.Protocol.Model.Decorator
 * 类 名 称 :RecvFrameModelDecoratorDecode 
 * 命名空间 :AE240.Core.Protocol.Model.Decorator
 * CLR 版本 :4.0.30319.42000
 * 创建时间 :2018/8/10 19:10:18
 * 当前版本 :1.0.0.1 
 *  
 * 描述说明: 
 * 
 * 修改历史: 
 * 
*******************************************************************
 * Copyright @ JiangYan 2018. All rights reserved.
*******************************************************************
------------------------------------------------------------------*/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AE240.Core.Protocol.Model.Decorator
{
    /// <summary>
    /// RecvFrameModelDecoratorDecode
    /// </summary>
    public class RecvFrameModelDecoratorDecode:FrameModel
    {
        private FrameModel _FrameModel = null;
        public RecvFrameModelDecoratorDecode(FrameModel frameModel)
        {
            this._FrameModel = frameModel;
        }
        public override byte[] ToByte()
        {
            List<byte> packet = new List<byte>();
            byte[] ccmd = BitConverter.GetBytes((ushort)this.CmdID);
            byte[] iSeqNo = BitConverter.GetBytes((ushort)this.iSeqNo);

            packet.Add(FrameBegin);
            packet.Add(ccmd[1]);
            packet.Add(ccmd[0]);
            packet.Add(iSeqNo[1]);
            packet.Add(iSeqNo[0]);
            packet.Add(this.IsReply);
            for (int i = 0; i < this.CmdData.Length; i++)
            {
                packet.Add(this.CmdData[i]);
            }

            byte Cs = GetLRC(packet.Skip(1).Take(packet.Count - 1).ToList());
            packet.Add(Cs);
            packet.Add(FrameEnd);
            return packet.ToArray();
        }
        public override string ToString()
        {
            List<byte> packet = new List<byte>();
            byte[] ccmd = BitConverter.GetBytes((ushort)_FrameModel.CmdID);
            byte[] iSeqNo = BitConverter.GetBytes((ushort)_FrameModel.iSeqNo);

            packet.Add(FrameBegin);
            packet.Add(ccmd[1]);//F0     
            packet.Add(ccmd[0]);//30   
            packet.Add(iSeqNo[1]);//01     
            packet.Add(iSeqNo[0]);//00 

            packet.Add(_FrameModel.IsReply);

            for (int i = 0; i < _FrameModel.CmdData.Length; i++)
            {
                packet.Add(_FrameModel.CmdData[i]);
            }

            byte Cs = GetLRC(packet.Skip(1).Take(packet.Count - 1).ToList());
            packet.Add(Cs);
            packet.Add(FrameEnd);

            StringBuilder recBuffer16 = new StringBuilder();
            string sendStr = string.Empty;
            byte[] sendBytes = packet.ToArray();
            for (int i = 0; i < sendBytes.Length; i++)
            {
                recBuffer16.AppendFormat("{0:X2}" + " ", sendBytes[i]);
            }
            sendStr = recBuffer16.ToString();
            return sendStr;
        }
    }
}

 

posted @ 2018-08-31 19:19  <--青青子衿-->  阅读(106)  评论(0编辑  收藏  举报
// /**/ // 在页脚Html代码 引入 // function btn_donateClick() { var DivPopup = document.getElementById('Div_popup'); var DivMasklayer = document.getElementById('div_masklayer'); DivMasklayer.style.display = 'block'; DivPopup.style.display = 'block'; var h = Div_popup.clientHeight; with (Div_popup.style) { marginTop = -h / 2 + 'px'; } } function MasklayerClick() { var masklayer = document.getElementById('div_masklayer'); var divImg = document.getElementById("Div_popup"); masklayer.style.display = "none"; divImg.style.display = "none"; } setTimeout( function () { document.getElementById('div_masklayer').onclick = MasklayerClick; document.getElementById('btn_donate').onclick = btn_donateClick; var a_gzw = document.getElementById("guanzhuwo"); a_gzw.href = "javascript:void(0);"; $("#guanzhuwo").attr("onclick","follow('33513f9f-ba13-e011-ac81-842b2b196315');"); }, 900);