DeviceDataPack.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Runtime.Serialization;
  5. using WCS.Entity.Protocol.BCR;
  6. using WCS.Entity.Protocol.RGV;
  7. using WCS.Entity.Protocol.Robot;
  8. using WCS.Entity.Protocol.SRM;
  9. using WCS.Entity.Protocol.Station;
  10. using WCS.Entity.Protocol.Truss;
  11. namespace WCS.Entity.Protocol.DataStructure
  12. {
  13. /// <summary>
  14. /// 设备数据包
  15. /// </summary>
  16. [DataContract]
  17. public class DeviceDataPack
  18. {
  19. [DataMember(Order = 0)]
  20. public ProtocolData<WCS_BCR80>[] BCR80 { get; set; }
  21. [DataMember(Order = 1)]
  22. public ProtocolData<WCS_BCR81>[] BCR81 { get; set; }
  23. [DataMember(Order = 2)]
  24. public ProtocolData<WCS_BCR83>[] BCR83 { get; set; }
  25. [DataMember(Order = 3)]
  26. public ProtocolData<WCS_RGV520>[] RGV520 { get; set; }
  27. [DataMember(Order = 4)]
  28. public ProtocolData<WCS_RGV521>[] RGV521 { get; set; }
  29. [DataMember(Order = 5)]
  30. public ProtocolData<WCS_Robot520>[] Robot520 { get; set; }
  31. [DataMember(Order = 6)]
  32. public ProtocolData<WCS_Robot521>[] Robot521 { get; set; }
  33. [DataMember(Order = 7)]
  34. public ProtocolData<WCS_Robot522>[] Robot522 { get; set; }
  35. [DataMember(Order = 8)]
  36. public ProtocolData<WCS_Robot530>[] Robot530 { get; set; }
  37. [DataMember(Order = 9)]
  38. public ProtocolData<WCS_Robot531>[] Robot531 { get; set; }
  39. [DataMember(Order = 10)]
  40. public ProtocolData<WCS_SRM520>[] SRM520 { get; set; }
  41. [DataMember(Order = 11)]
  42. public ProtocolData<WCS_SRM521>[] SRM521 { get; set; }
  43. [DataMember(Order = 12)]
  44. public ProtocolData<WCS_SRM523>[] SRM523 { get; set; }
  45. [DataMember(Order = 13)]
  46. public ProtocolData<WCS_Station520>[] Station520 { get; set; }
  47. [DataMember(Order = 14)]
  48. public ProtocolData<WCS_Station521>[] Station521 { get; set; }
  49. [DataMember(Order = 15)]
  50. public ProtocolData<WCS_Station523>[] Station523 { get; set; }
  51. [DataMember(Order = 16)]
  52. public ProtocolData<WCS_Station524>[] Station524 { get; set; }
  53. [DataMember(Order = 17)]
  54. public ProtocolData<WCS_Station525>[] Station525 { get; set; }
  55. [DataMember(Order = 18)]
  56. public ProtocolData<WCS_Station90>[] Station90 { get; set; }
  57. [DataMember(Order = 19)]
  58. public ProtocolData<WCS_Station91>[] Station91 { get; set; }
  59. [DataMember(Order = 20)]
  60. public ProtocolData<WCS_Truss520>[] Truss520 { get; set; }
  61. [DataMember(Order = 21)]
  62. public ProtocolData<WCS_Truss521>[] Truss521 { get; set; }
  63. [DataMember(Order = 22)]
  64. public ProtocolData<WCS_Truss523>[] Truss523 { get; set; }
  65. [DataMember(Order = 23)]
  66. public ProtocolData<WCS_Truss530>[] Truss530 { get; set; }
  67. [DataMember(Order = 24)]
  68. public ProtocolData<WCS_Truss531>[] Truss531 { get; set; }
  69. /// <summary>
  70. /// 时间
  71. /// </summary>
  72. [DataMember(Order = 25)]
  73. public DateTime Frame { get; set; }
  74. /// <summary>
  75. /// 回放最早时间
  76. /// </summary>
  77. [DataMember(Order = 26)]
  78. public int PlaybackSeconds { get; set; }
  79. [DataMember(Order = 27)]
  80. public ProtocolData<WCS_RGV523>[] RGV523 { get; set; }
  81. public Dictionary<string, ProtocolData[]> GetDeviceData()
  82. {
  83. List<Tuple<string, ProtocolData>> list = new List<Tuple<string, ProtocolData>>();
  84. foreach (var p in this.GetType().GetProperties())
  85. {
  86. if (p.PropertyType.IsArray)
  87. {
  88. var arr = p.GetValue(this) as Array;
  89. foreach (var a in arr)
  90. {
  91. var code = a.GetType().GetProperty("Code").GetValue(a).ToString();
  92. //var data = a.GetType().GetProperty("Data").GetValue(a);
  93. list.Add(new Tuple<string, ProtocolData>(code, a as ProtocolData));
  94. }
  95. }
  96. }
  97. var res = list.GroupBy(v => v.Item1).ToDictionary(v => v.Key, v => v.Select(d => d.Item2).ToArray());
  98. return res;
  99. }
  100. }
  101. [DataContract]
  102. public class ProtocolData
  103. {
  104. [DataMember(Order = 0)]
  105. public string Code { get; set; }
  106. [DataMember(Order = 1)]
  107. public DateTime Frame { get; set; }
  108. }
  109. [DataContract]
  110. public class ProtocolData<T> : ProtocolData
  111. {
  112. [DataMember(Order = 2)]
  113. public T Data { get; set; }
  114. }
  115. }