AgvStatusResponseMd.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace DWZB_Agv_Agreement.Agv_Agreement
  7. {
  8. /// <summary>
  9. /// 状态反馈(AGV发给上位机)指令实体类
  10. /// </summary>
  11. public class AgvStatusResponseMd : DataHeadMd
  12. {
  13. private const int btyArrLen = 63;
  14. /// <summary>
  15. /// AGV工作状态
  16. /// </summary>
  17. public byte AgvWorkMode { get; set; }
  18. /// <summary>
  19. /// AGV运行状态
  20. /// </summary>
  21. public byte AgvRunStatus { get; set; }
  22. /// <summary>
  23. /// AGV抱夹状态
  24. /// </summary>
  25. public byte AgvClipStatus { get; set; }
  26. /// <summary>
  27. /// AGV运动状态
  28. /// </summary>
  29. public byte AgvMotionStatus { get; set; }
  30. /// <summary>
  31. /// 当前任务阶段
  32. /// </summary>
  33. public byte CurrentTaskStage { get; set; }
  34. /// <summary>
  35. /// 支撑状态
  36. /// </summary>
  37. public byte PropUpStatus { get; set; }
  38. /// <summary>
  39. /// 光柱个数
  40. /// </summary>
  41. public byte BeamQty { get; set; }
  42. /// <summary>
  43. /// 车头超声波信号
  44. /// </summary>
  45. public byte AgvHeadUltrasonicSignal{ get; set; }
  46. /// <summary>
  47. /// 车尾超声波信号
  48. /// </summary>
  49. public byte AgvTailUltrasonicSignal { get; set; }
  50. /// <summary>
  51. /// 防撞条屏蔽
  52. /// </summary>
  53. public byte PreventBumpDeviceScreenSignal { get; set; }
  54. /// <summary>
  55. /// AGV当前位置X坐标
  56. /// </summary>
  57. public int AgvCurrent_X { get; set; }
  58. /// <summary>
  59. /// AGV当前位置Y坐标
  60. /// </summary>
  61. public int AgvCurrent_Y { get; set; }
  62. /// <summary>
  63. /// AGV当前位置R角度
  64. /// </summary>
  65. public int AgvCurrent_Angle { get; set; }
  66. /// <summary>
  67. /// 电池的电量
  68. /// </summary>
  69. public int Electricity { get; set; }
  70. /// <summary>
  71. /// 电池的电压
  72. /// </summary>
  73. public int ElectricTension { get; set; }
  74. /// <summary>
  75. /// 电池的电流
  76. /// </summary>
  77. public int ElectricCurrent { get; set; }
  78. /// <summary>
  79. /// AGV当前指令编号
  80. /// </summary>
  81. public int AgvCurrentCmdNo { get; set; }
  82. /// <summary>
  83. /// 报警编号1
  84. /// </summary>
  85. public int AlarmSignal1 { get; set; }
  86. /// <summary>
  87. /// 报警编号2
  88. /// </summary>
  89. public int AlarmSignal2 { get; set; }
  90. /// <summary>
  91. /// 报警编号3
  92. /// </summary>
  93. public int AlarmSignal3 { get; set; }
  94. /// <summary>
  95. /// 报警编号4
  96. /// </summary>
  97. public int AlarmSignal4 { get; set; }
  98. /// <summary>
  99. /// 心跳信号,环形计数
  100. /// </summary>
  101. public int AgvHeartbeatSignal { get; set; }
  102. /// <summary>
  103. /// 序列化为byte数组。
  104. /// </summary>
  105. public byte[] SerializeBytArr()
  106. {
  107. List<byte> retBtArr = new(btyArrLen);
  108. retBtArr.Add(FunctionCode);
  109. retBtArr.AddRange(BitConverter.GetBytes(AgvNo));
  110. retBtArr.Add(AgvWorkMode);
  111. retBtArr.Add(AgvRunStatus);
  112. retBtArr.Add(AgvClipStatus);
  113. retBtArr.Add(AgvMotionStatus);
  114. retBtArr.Add(CurrentTaskStage);
  115. retBtArr.Add(PropUpStatus);
  116. retBtArr.Add(BeamQty);
  117. retBtArr.Add(AgvHeadUltrasonicSignal);
  118. retBtArr.Add(AgvTailUltrasonicSignal);
  119. retBtArr.Add(PreventBumpDeviceScreenSignal);
  120. retBtArr.AddRange(BitConverter.GetBytes(AgvCurrent_X));
  121. retBtArr.AddRange(BitConverter.GetBytes(AgvCurrent_Y));
  122. retBtArr.AddRange(BitConverter.GetBytes(AgvCurrent_Angle));
  123. retBtArr.AddRange(BitConverter.GetBytes(Electricity));
  124. retBtArr.AddRange(BitConverter.GetBytes(ElectricTension));
  125. retBtArr.AddRange(BitConverter.GetBytes(ElectricCurrent));
  126. retBtArr.AddRange(BitConverter.GetBytes(AgvCurrentCmdNo));
  127. retBtArr.AddRange(BitConverter.GetBytes(AlarmSignal1));
  128. retBtArr.AddRange(BitConverter.GetBytes(AlarmSignal2));
  129. retBtArr.AddRange(BitConverter.GetBytes(AlarmSignal3));
  130. retBtArr.AddRange(BitConverter.GetBytes(AlarmSignal4));
  131. retBtArr.AddRange(BitConverter.GetBytes(AgvHeartbeatSignal));
  132. return retBtArr.ToArray();
  133. }
  134. }
  135. }