| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- using Edge.Core.Parser.BinaryParser.Attributes;
- using Edge.Core.Parser.BinaryParser.Util;
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace Censtar_31064V105OrV106_Pump.MessageEntity.Incoming
- {
- /// <summary>
- /// 读单机实时数据 - 关机时
- /// 1.当加油机处于默认状态时,按一次数字键即表示定量开始,根据定量方式填金额/升或公斤。
- /// 2.对于一主板多枪的情况,有的状态是属于整个主板的,如上锁;有的状态是属于油枪的,如加
- /// 油和预置,如果当一枪加油时而其它枪另有预置,则正在加油的枪的状态优先。
- /// </summary>
- public class ReadRealTimeFuelingAmountDataInPumpNonFuelingStateAnswer : MessageBase
- {
- public enum ReadRealTimeFuelDataStateEnum
- {
- 关机_解锁,
- 关机_上锁,
- 加油_非总台预置加油,
- 加油_总台预置加油,
- 正在升定量,
- 正在金额定量,
- 正在公斤定量,
- 未定量,
- 无总台预置,
- 有总台预置,
- 无交易可读,
- 有交易可读
- }
- [Format(3, EncodingType.BCD, 1)]
- public int 金额 { get; set; }
- [Format(1, EncodingType.BIN, 2)]
- public byte State_Raw { get; set; }
- public IEnumerable<ReadRealTimeFuelDataStateEnum> States
- {
- get
- {
- return ParseStates(this.State_Raw);
- }
- }
- public static IEnumerable<ReadRealTimeFuelDataStateEnum> ParseStates(byte state_raw)
- {
- var result = new List<ReadRealTimeFuelDataStateEnum>();
- var bit0_and_bit1 = state_raw & 0x03;
- if (bit0_and_bit1 == 0)
- result.Add(ReadRealTimeFuelDataStateEnum.关机_解锁);
- else if (bit0_and_bit1 == 2)
- result.Add(ReadRealTimeFuelDataStateEnum.关机_上锁);
- else if (bit0_and_bit1 == 1)
- result.Add(ReadRealTimeFuelDataStateEnum.加油_非总台预置加油);
- else if (bit0_and_bit1 == 3)
- result.Add(ReadRealTimeFuelDataStateEnum.加油_总台预置加油);
- var bit2_and_bit3 = state_raw & 0x0C;
- if (bit2_and_bit3 == 0)
- result.Add(ReadRealTimeFuelDataStateEnum.正在升定量);
- else if (bit2_and_bit3 == 2)
- result.Add(ReadRealTimeFuelDataStateEnum.正在公斤定量);
- else if (bit2_and_bit3 == 1)
- result.Add(ReadRealTimeFuelDataStateEnum.正在金额定量);
- else if (bit2_and_bit3 == 3)
- result.Add(ReadRealTimeFuelDataStateEnum.未定量);
- var bit4 = state_raw.GetBit(3);
- if (bit4 == 0)
- result.Add(ReadRealTimeFuelDataStateEnum.无总台预置);
- else
- result.Add(ReadRealTimeFuelDataStateEnum.有总台预置);
- var bit5 = state_raw.GetBit(4);
- if (bit5 == 0)
- result.Add(ReadRealTimeFuelDataStateEnum.无交易可读);
- else
- result.Add(ReadRealTimeFuelDataStateEnum.有交易可读);
- return result;
- }
- }
- }
|