123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- using System.Collections.Generic;
- using System.Linq;
- using Dfs.WayneChina.HengshanTerminalWrapper.MessageEntity.Base;
- using Edge.Core.Parser.BinaryParser.Attributes;
- using Edge.Core.Parser.BinaryParser.Util;
- namespace Dfs.WayneChina.HengshanTerminalWrapper.MessageEntity.Outgoing
- {
- public class GetNozzleStatusResponse : NonCardDispenserMessageTemplateBase
- {
- public GetNozzleStatusResponse()
- {
- CMD = 0xA0;
- this.Account = 0x00;
- this.Status = 0x00;
- pumpStatuses = new List<PumpStatus>();
- }
- private List<PumpStatus> pumpStatuses;
- public List<PumpStatus> GetPumpStatuses()
- {
- return this.pumpStatuses;
- }
- public enum PumpStatus
- {
- 不允许加油,//D7 = 0
- 允许加油,//D7 = 1
- 加油过程,//D6 = 0
- 加油结束,//D6 = 1
- 油枪打开,//D5 = 1
- 油枪关,//D5 = 0
- 电机打开,//D4 = 1
- 电机关,//D4 = 0
- 帐号加油,//D3=1
- 邮票加油,//D2=1
- 公斤加油,//D1=1,D0=0, 公斤加油(升加油);升版 (公斤)
- 金额加油,//D1 = 0, D0 = 1, 金额加油(升加油); 升版 (公斤)
- 公升加油,//D1=0,D0=0, 加升油(公斤加油);升版 (公斤)
- D30,//D3=0
- D20//D2=0
- }
- /// <summary>
- /// status = D7D6D5D4D3D2D1D0
- /// </summary>
- /// <param name="s"></param>
- public void AddPumpStatus(PumpStatus s)
- {
- this.pumpStatuses.Add(s);
- switch (s)
- {
- case PumpStatus.允许加油:
- Status = Status.SetBit(7, 7, 1);
- break;
- case PumpStatus.不允许加油:
- Status = Status.SetBit(7, 7, 0);
- break;
- case PumpStatus.加油结束:
- Status = Status.SetBit(6, 6, 1);
- break;
- case PumpStatus.加油过程:
- Status = Status.SetBit(6, 6, 0);
- break;
- case PumpStatus.油枪打开:
- Status = Status.SetBit(5, 5, 1);
- break;
- case PumpStatus.油枪关:
- Status = Status.SetBit(5, 5, 0);
- break;
- case PumpStatus.电机打开:
- Status = Status.SetBit(4, 4, 1);
- break;
- case PumpStatus.电机关:
- Status = Status.SetBit(4, 4, 0);
- break;
- case PumpStatus.帐号加油:
- Status = Status.SetBit(3, 3, 1);
- break;
- case PumpStatus.邮票加油:
- Status = Status.SetBit(2, 2, 1);
- break;
- case PumpStatus.公斤加油:
- Status = Status.SetBit(1, 1, 1);
- Status = Status.SetBit(0, 0, 0);
- break;
- case PumpStatus.金额加油:
- Status = Status.SetBit(1, 1, 0);
- Status = Status.SetBit(0, 0, 1);
- break;
- case PumpStatus.公升加油:
- Status = Status.SetBit(1, 1, 0);
- Status = Status.SetBit(0, 0, 0);
- break;
- }
- }
- public IEnumerable<PumpStatus> GetPumpStatus(byte state)
- {
- var result = new List<PumpStatus>();
- result.Add(state.GetBit(7)== 0?PumpStatus.不允许加油 : PumpStatus.允许加油);
- var bit6 = state & 64;
- result.Add(state.GetBit(6)==0?PumpStatus.加油过程 : PumpStatus.加油结束);
- var bit5 = state & 32;
- result.Add(state.GetBit(5) == 1 ? PumpStatus.油枪打开 : PumpStatus.油枪关);
- var bit4 = state & 16;
- result.Add(state.GetBit(4) ==0 ? PumpStatus.电机关 : PumpStatus.电机打开);
- var bit3 = state & 8;
- result.Add(state.GetBit(3) == 1 ? PumpStatus.帐号加油 : PumpStatus.D30);
- var bit2 = state & 4;
- result.Add(state.GetBit(2) == 1 ? PumpStatus.邮票加油 : PumpStatus.D20);
- var bit01 = state & 3;
- switch (bit01)
- {
- case 0:
- result.Add(PumpStatus.公斤加油);
- break;
- case 1:
- result.Add(PumpStatus.金额加油);
- break;
- case 2:
- result.Add(PumpStatus.公升加油);
- break;
- }
- return result.ToArray();
- }
- public override string ToLogString()
- {
- var logString = base.ToLogString();
- if (pumpStatuses.Count > 0)
- logString += GetPumpStatus(this.Status).Select(s => s.ToString()).Aggregate((acc, n) => acc + "--" + n);
- return logString;
- }
- [Format(2, EncodingType.BIN, 3)]
- public int 流水号 { get; set; }
- [Format(3, EncodingType.BCD, 5)]
- public int 加油量 { get; set; }
- [Format(3, EncodingType.BCD, 8)]
- public int 加油金额 { get; set; }
- [Format(2, EncodingType.BCD, 11)]
- public int 单价 { get; set; }
- /// <summary>
- /// 8bits
- /// D7D6D5D4D3D2D1D0
- /// </summary>
- [Format(1, EncodingType.BIN, 13)]
- public byte Status { get; set; }
- /// <summary>
- /// 预设值
- /// </summary>
- [Format(3, EncodingType.BCD, 14)]
- public int 定量 { get; set; }
- /// <summary>
- /// 暂时不用
- /// </summary>
- [Format(2, EncodingType.BIN, 17)]
- public int Account { get; set; }
- }
- }
|