装饰器模式
/*---------------------------------------------------------------- * 作 者 :姜 彦 * 项目名称 :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; } } }
![](https://files-cdn.cnblogs.com/files/jiangyan219/Alipay.bmp)
您的资助是我最大的动力!
金额随意,欢迎来赏!
![](https://files-cdn.cnblogs.com/files/jiangyan219/WeChat.bmp)
我写的东西能让你能懂,那是义务
毕竟占用了你生命中的宝贵的时间和注意力
要是你还能喜欢我的作品,那就是缘分了
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的因为,我的写作热情也离不开您的肯定支持,感谢您的阅读,我是【青青子衿】!