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
- {
- 不允许加油,
- 允许加油,
- 加油过程,
- 加油结束,
- 油枪打开,
- 油枪关,
- 电机打开,
- 电机关,
- 帐号加油,
- 邮票加油,
- 公斤加油,
- 金额加油,
- 公升加油,
- D30,
- D20
- }
-
-
-
-
- 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; }
-
-
-
-
- [Format(1, EncodingType.BIN, 13)]
- public byte Status { get; set; }
-
-
-
- [Format(3, EncodingType.BCD, 14)]
- public int 定量 { get; set; }
-
-
-
- [Format(2, EncodingType.BIN, 17)]
- public int Account { get; set; }
- }
- }
|