GetNozzleStatusResponse.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. 
  2. using Edge.Core.Parser.BinaryParser.Attributes;
  3. using Edge.Core.Parser.BinaryParser.Util;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. namespace HengShan_Pump_NonIC.MessageEntity
  8. {
  9. public class GetNozzleStatusResponse : NonICMessageTemplateBase
  10. {
  11. public GetNozzleStatusResponse()
  12. {
  13. //CMD = 0xA0;
  14. //this.Account = 0x00;
  15. //this.Status = 0x00;
  16. //pumpStatuses = new List<PumpStatus>();
  17. }
  18. //private List<PumpStatus> pumpStatuses;
  19. //public List<PumpStatus> GetPumpStatuses()
  20. //{
  21. // return this.pumpStatuses;
  22. //}
  23. public enum PumpStatus
  24. {
  25. 不允许加油,//D7 = 0
  26. 允许加油,//D7 = 1
  27. 加油过程,//D6 = 0
  28. 加油结束,//D6 = 1
  29. 油枪打开,//D5 = 1
  30. 油枪关,//D5 = 0
  31. 电机打开,//D4 = 1
  32. 电机关,//D4 = 0
  33. 帐号加油,//D3=1
  34. 邮票加油,//D2=1
  35. 公斤加油,//D1=1,D0=0, 公斤加油(升加油);升版 (公斤)
  36. 金额加油,//D1 = 0, D0 = 1, 金额加油(升加油); 升版 (公斤)
  37. 公升加油,//D1=0,D0=0, 加升油(公斤加油);升版 (公斤)
  38. D30,//D3=0
  39. D20//D2=0
  40. }
  41. /// <summary>
  42. /// status = D7D6D5D4D3D2D1D0
  43. /// </summary>
  44. /// <param name="s"></param>
  45. public void AddPumpStatus(PumpStatus s)
  46. {
  47. //this.pumpStatuses.Add(s);
  48. switch (s)
  49. {
  50. case PumpStatus.允许加油:
  51. Status = Status.SetBit(7, 7, 1);
  52. break;
  53. case PumpStatus.不允许加油:
  54. Status = Status.SetBit(7, 7, 0);
  55. break;
  56. case PumpStatus.加油结束:
  57. Status = Status.SetBit(6, 6, 1);
  58. break;
  59. case PumpStatus.加油过程:
  60. Status = Status.SetBit(6, 6, 0);
  61. break;
  62. case PumpStatus.油枪打开:
  63. Status = Status.SetBit(5, 5, 1);
  64. break;
  65. case PumpStatus.油枪关:
  66. Status = Status.SetBit(5, 5, 0);
  67. break;
  68. case PumpStatus.电机打开:
  69. Status = Status.SetBit(4, 4, 1);
  70. break;
  71. case PumpStatus.电机关:
  72. Status = Status.SetBit(4, 4, 0);
  73. break;
  74. case PumpStatus.帐号加油:
  75. Status = Status.SetBit(3, 3, 1);
  76. break;
  77. case PumpStatus.邮票加油:
  78. Status = Status.SetBit(2, 2, 1);
  79. break;
  80. case PumpStatus.公斤加油:
  81. Status = Status.SetBit(1, 1, 1);
  82. Status = Status.SetBit(0, 0, 0);
  83. break;
  84. case PumpStatus.金额加油:
  85. Status = Status.SetBit(1, 1, 0);
  86. Status = Status.SetBit(0, 0, 1);
  87. break;
  88. case PumpStatus.公升加油:
  89. Status = Status.SetBit(1, 1, 0);
  90. Status = Status.SetBit(0, 0, 0);
  91. break;
  92. }
  93. }
  94. public IEnumerable<PumpStatus> GetPumpStatus()
  95. {
  96. var result = new List<PumpStatus>();
  97. result.Add(this.Status.GetBit(7) == 0 ? PumpStatus.不允许加油 : PumpStatus.允许加油);
  98. result.Add(this.Status.GetBit(6) == 0 ? PumpStatus.加油过程 : PumpStatus.加油结束);
  99. result.Add(this.Status.GetBit(5) == 1 ? PumpStatus.油枪打开 : PumpStatus.油枪关);
  100. result.Add(this.Status.GetBit(4) == 0 ? PumpStatus.电机关 : PumpStatus.电机打开);
  101. result.Add(this.Status.GetBit(3) == 1 ? PumpStatus.帐号加油 : PumpStatus.D30);
  102. result.Add(this.Status.GetBit(2) == 1 ? PumpStatus.邮票加油 : PumpStatus.D20);
  103. var bit01 = this.Status & 3;
  104. switch (bit01)
  105. {
  106. case 0:
  107. result.Add(PumpStatus.公斤加油);
  108. break;
  109. case 1:
  110. result.Add(PumpStatus.金额加油);
  111. break;
  112. case 2:
  113. result.Add(PumpStatus.公升加油);
  114. break;
  115. }
  116. return result.ToArray();
  117. }
  118. public override string ToLogString()
  119. {
  120. var logString = base.ToLogString();
  121. if (this.GetPumpStatus().Any())
  122. logString += this.GetPumpStatus().Select(s => s.ToString()).Aggregate((acc, n) => acc + "--" + n);
  123. return logString;
  124. }
  125. [Format(2, EncodingType.BCD, 3)]
  126. public int 流水号 { get; set; }
  127. [Format(3, EncodingType.BCD, 5)]
  128. public int 加油量 { get; set; }
  129. [Format(3, EncodingType.BCD, 8)]
  130. public int 加油金额 { get; set; }
  131. [Format(2, EncodingType.BCD, 11)]
  132. public int 单价 { get; set; }
  133. /// <summary>
  134. /// 8bits
  135. /// D7D6D5D4D3D2D1D0
  136. /// </summary>
  137. [Format(1, EncodingType.BIN, 13)]
  138. public byte Status { get; set; }
  139. /// <summary>
  140. /// 预设值
  141. /// </summary>
  142. [Format(3, EncodingType.BCD, 14)]
  143. public int 定量 { get; set; }
  144. /// <summary>
  145. /// 暂时不用
  146. /// </summary>
  147. [Format(2, EncodingType.BIN, 17)]
  148. public int Account { get; set; }
  149. }
  150. }