using SourceGen; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using WCS.Protocol.SX.BCR; using WCS.Protocol.SX.Protocol.DataStructure; using WCS.Protocol.SX.Robot; using WCS.Protocol.SX.SRM; using WCS.Protocol.SX.Station; namespace WCS.Protocol.SX.DataStructure { /// /// 设备数据包 /// [DataContract] public class DeviceDataPack { /// /// 堆垛机数据集 /// [DataMember(Order = 0)] public DeviceDataCollection SRMDatas { get; set; } /// /// 穿梭车数据集 /// [DataMember(Order = 1)] public DeviceDataCollection RGVDatas { get; set; } /// /// 站台数据集 /// [DataMember(Order = 2)] public DeviceDataCollection StationDatas { get; set; } ///// ///// 扫码器数据 ///// //[DataMember(Order = 3)] //public DeviceDataCollection BcrDatas { get; set; } /// /// 机器人数据集 /// [DataMember(Order = 3)] public DeviceDataCollection RobotData { get; set; } /// /// 机器人数据集 /// [DataMember(Order = 4)] public DeviceDataCollection TrussData { get; set; } ///// ///// 产线数据集 ///// //[DataMember(Order = 5)] //public DeviceDataCollection ProdLineData { get; set; } /// /// 时间 /// [DataMember(Order = 5)] public DateTime Frame { get; set; } /// /// 回放最早时间 /// [DataMember(Order = 6)] public int PlaybackSeconds { get; set; } } [DataContract] public class DataPack { [DataMember(Order = 0)] public DateTime Frame { get; set; } [DataMember(Order = 1)] public ProtocolData[] Station520 { get; set; } [DataMember(Order = 2)] public ProtocolData[] Station521 { get; set; } [DataMember(Order = 3)] public ProtocolData[] Station23 { get; set; } [DataMember(Order = 4)] public ProtocolData[] Station523 { get; set; } [DataMember(Order = 5)] public ProtocolData[] BCR81 { get; set; } [DataMember(Order = 6)] public ProtocolData[] SRM520 { get; set; } [DataMember(Order = 7)] public ProtocolData[] SRM521 { get; set; } [DataMember(Order = 8)] public ProtocolData[] SRM537 { get; set; } [DataMember(Order = 9)] public ProtocolData[] Robot520 { get; set; } [DataMember(Order = 10)] public ProtocolData[] Robot521 { get; set; } [DataMember(Order = 11)] public ProtocolData[] Robot522 { get; set; } [DataMember(Order = 12)] public ProtocolData[] Robot530 { get; set; } [DataMember(Order = 13)] public ProtocolData[] Robot531 { get; set; } [DataMember(Order = 14)] public ProtocolData[] QT51 { get; set; } [DataMember(Order = 15)] public ProtocolData[] LogContent { get; set; } [DataMember(Order = 16)] public ProtocolData[] SRM542 { get; set; } public Dictionary GetDeviceData() { List> list = new List>(); foreach (var p in this.GetType().GetProperties()) { if (p.PropertyType.IsArray) { var arr = p.GetValue(this) as Array; foreach (var a in arr) { var code = a.GetType().GetProperty("Code").GetValue(a).ToString(); //var data = a.GetType().GetProperty("Data").GetValue(a); list.Add(new Tuple(code, a as ProtocolData)); } } } var res = list.GroupBy(v => v.Item1).ToDictionary(v => v.Key, v => v.Select(d => d.Item2).ToArray()); return res; } } }