using WCS.Core; using WCS.Entity.Protocol.BCR; using WCS.Entity.Protocol.DataStructure; using WCS.Entity.Protocol.SRM; using WCS.Entity.Protocol.Station; namespace WCS.Service { public class ProtocolProxy : ProtocolProxyBase { public static DeviceDataPack DataPack { get; set; } = new DeviceDataPack(); public ProtocolProxy(Device dev, ProtocolInfo info, Type protocolType, World world) : base(dev, info, protocolType, world) { } protected override void DataChanged() { //if (Device.HasProtocol(typeof(IStation520))) //{ // if (DataPack.StationDatas == null) // { // DataPack.StationDatas = new DeviceDataCollection(); // } // DataPack.StationDatas.Datas.Append(new StationData() // { // Code = Device.Code, // D520 = Copy(this, typeof(IStation520).Assembly.GetTypes().Where(v => v.IsClass).Where(v => v.GetInterface(typeof(IStation520).Name) != null && v != this.GetType()).First()) as WCS_Station520, // D521 = Copy(this, typeof(IStation521).Assembly.GetTypes().Where(v => v.IsClass).Where(v => v.GetInterface(typeof(IStation521).Name) != null && v != this.GetType()).First()) as WCS_Station521, // D523 = Copy(this, typeof(IStation523).Assembly.GetTypes().Where(v => v.IsClass).Where(v => v.GetInterface(typeof(IStation523).Name) != null && v != this.GetType()).First()) as WCS_Station523, // }); ; // DataPack.StationDatas.Frame = DateTime.Now; //} //else if (Device.HasProtocol(typeof(ISRM520))) //{ // if (DataPack.SRMDatas == null) // { // DataPack.SRMDatas = new DeviceDataCollection(); // } // DataPack.SRMDatas.Datas.Append(new SRMData() // { // Code = Device.Code, // D520 = Copy(this, typeof(ISRM520).Assembly.GetTypes().Where(v => v.IsClass).Where(v => v.GetInterface(typeof(ISRM520).Name) != null && v != this.GetType()).First()) as WCS_SRM520, // D521 = Copy(this, typeof(ISRM521).Assembly.GetTypes().Where(v => v.IsClass).Where(v => v.GetInterface(typeof(ISRM521).Name) != null && v != this.GetType()).First()) as WCS_SRM521, // D537 = Copy(this, typeof(ISRM537).Assembly.GetTypes().Where(v => v.IsClass).Where(v => v.GetInterface(typeof(ISRM537).Name) != null && v != this.GetType()).First()) as WCS_SRM537, // }); // DataPack.SRMDatas.Frame = DateTime.Now; //} //else if (Device.HasProtocol(typeof(IBCR81))) //{ // if (DataPack.BcrDatas == null) // { // DataPack.BcrDatas = new DeviceDataCollection(); // } // DataPack.BcrDatas.Datas.Append(new BCRData() // { // Code = Device.Code, // Bcr81 = Copy(this, typeof(IBCR81).Assembly.GetTypes().Where(v => v.IsClass).Where(v => v.GetInterface(typeof(IBCR81).Name) != null && v != this.GetType()).First()) as WCS_BCR81, // }); // DataPack.BcrDatas.Frame = DateTime.Now; //} //DataPack.Frame = DateTime.Now; } private object Copy(object obj, Type type) { var res = Activator.CreateInstance(type); foreach (var p in type.GetProperties()) { var p2 = obj.GetType().GetProperty(p.Name); if (p2 != null && p2.PropertyType == p.PropertyType) { p.SetValue(res, p2.GetValue(obj)); } } return res; } } }