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.

54 lines
2.2 KiB

using BatCharging.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BatCharging.Service
{
/// <summary>
/// 解析充放电机上送充电启动完成帧
/// </summary>
public class MsgStaComFraDecoder
{
/// <summary>
/// 解析充放电机上送充电启动完成帧
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public StartComFrame GetMsgStartComFrame(byte[] data)
{
StartComFrame startComFrame = null;
if (data.Count() >= 73)
{
startComFrame = new StartComFrame();
startComFrame.SuccessMark = data[25];
startComFrame.CauseFailure = data[26];
startComFrame.BMSIndProVersion = data[27]+"."+ data[28] + "."+ data[29];
startComFrame.BMSHandResult = data[30];
startComFrame.TypeBattery = data[31];
startComFrame.MaxPerTem = data[32];
startComFrame.BMSMaxAllChaVol = ByteUtils.ToUInt16(data, 33);
startComFrame.MaxAllChaVolUnit = ByteUtils.ToUInt16(data, 35);
startComFrame.MaxAllChaCur = ByteUtils.ToUInt16(data, 37);
startComFrame.RatTotalVolVehPowBat = ByteUtils.ToUInt16(data, 39);
startComFrame.CurVolVehPowBat = ByteUtils.ToUInt16(data, 41);
startComFrame.RatCapVehPowBat = ByteUtils.ToUInt16(data, 43);
startComFrame.NomCapVehPowBat = ByteUtils.ToUInt16(data, 45);
startComFrame.MaxOutVolCha = ByteUtils.ToUInt16(data, 47);
startComFrame.MinOutVolCha = ByteUtils.ToUInt16(data, 49);
startComFrame.MaxOutCurCha = ByteUtils.ToUInt16(data, 51);
startComFrame.MinOutCurCha = ByteUtils.ToUInt16(data, 53);
byte[] vehIdeNums = new byte[17];
Array.Copy(data, 55, vehIdeNums, 0, 17);
startComFrame.VehIdeNum = System.Text.ASCIIEncoding.ASCII.GetString(vehIdeNums);
startComFrame.LoaStaVehPowBat = data[72];
}
return startComFrame;
}
}
}