using Edge.Core.Parser.BinaryParser.MessageEntity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace HengshanPaymentTerminal.MessageEntity.Incoming
{
///
/// 油机发送油枪信息数据对象
///
public class NozzleInfo : CommonMessage
{
///
/// 油枪数
///
public int GunNum { get; set; }
///
/// 各油枪信息
///
public List nozzles { get; set; }
public class Nozzle
{
///
/// 加油点
///
public int fpoint { get; set; }
///
/// 内部枪号
///
public int internalNum { get; set; }
///
/// 外部枪号
///
public int externalNum { get; set; }
///
/// 单价
///
public decimal price { get; set; }
///
/// 油品代码
///
public string oilCode { get; set; }
}
public override byte[] ToCommonByteArray()
{
byte[] content = new byte[] { 0x55, this.Handle, 0x00, ((byte)RESULT.OVER) };
return content2data(content);
}
public override CommonMessage ToObject(byte[] datas)
{
getBaseData(datas);
this.GunNum = datas[7];
int index = 8;
List nozzles = new List();
while (index + 7 <= datas.Length)
{
Nozzle nozzle = new Nozzle();
nozzle.fpoint = datas[index];
nozzle.internalNum = datas[index + 1];
nozzle.externalNum = datas[index + 2];
Span priceSpan = datas.AsSpan(index + 3, 2);
if (BitConverter.IsLittleEndian)
{
priceSpan.Reverse();
}
ushort priceShort = MemoryMarshal.Read(priceSpan);
nozzle.price = priceShort / 100;
nozzle.oilCode = Bcd2Int(datas[index + 5], datas[index+6]).ToString();
nozzles.Add(nozzle);
index += 7;
}
this.nozzles = nozzles;
return this;
}
}
}