You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
2.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using BatCharging.Model;
namespace BatCharging.Service.Encoder.New
{
public class MsgDisconnectStopChargeEncoder
{
public byte[] GetDisconnectStopChargeMsg(byte[] destAddr, byte responseResults, ushort reserve)
{
byte[] result = null;
APCI headAPCI = new APCI();
headAPCI.StartChar = CmnChargerConst.APCI_START_CHAR;
headAPCI.PackLen = 0; //临时赋值为零,具体数值看下面的计算结果
headAPCI.CtlArea = 0; //控制域
headAPCI.DestAddr = destAddr;//目的地址
headAPCI.SrcAddr = 0;//源地址本系统中源地址统一为00000000即为0
ASDU headASDU = new ASDU();
headASDU.FrameTypeNo = 45; //帧类型号
headASDU.MsgBodyCount = 1; //信息体个数
headASDU.TransReason = 3; //传送原因
headASDU.PublicAddr = 0; //公共地址
headASDU.MsgBodyAddr = new byte[] { 0, 0, 0 }; //信息体地址
DisconnectStopChargeData disconnectStopChargeData = new DisconnectStopChargeData();
disconnectStopChargeData.ResponseResults= responseResults;
disconnectStopChargeData.Reserve = reserve;
headASDU.MsgBodyContents = GetMsgContents(disconnectStopChargeData); //信息体
headAPCI.PackLen = Convert.ToUInt16(24 + headASDU.MsgBodyContents.Length); //报文长度
List<byte> lstResult = MsgHeadApciEncoder.BuildBaseAPCI(headAPCI);
lstResult.AddRange(MsgHeadAsduEncoder.BuildBaseASDU(headASDU).ToArray());
result = lstResult.ToArray();
return result;
}
private byte[] GetMsgContents(DisconnectStopChargeData disconnectStopChargeData)
{
byte[] results = null;
if (disconnectStopChargeData != null)
{
List<byte> lstContent = new List<byte>();
lstContent.Add(disconnectStopChargeData.RecordType);
lstContent.Add(disconnectStopChargeData.ResponseResults);
lstContent.AddRange(BitConverter.GetBytes(disconnectStopChargeData.Reserve));
results = lstContent.ToArray();
}
return results;
}
class DisconnectStopChargeData
{
public byte RecordType { get; set; } = 43;
//应答结果 0不使能 1使能
public byte ResponseResults { get; set; }
//保留
public ushort Reserve { get; set; }
}
}
}