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;
}
}
}