GetNozzleStatusResponse.cs 5.6 KB

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