/*----------------------------------------------------------------
* 作 者 :姜 彦
* 项目名称 :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;
}
}
}