ProtocolProxy.cs 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using WCS.Core;
  2. using WCS.Entity.Protocol.BCR;
  3. using WCS.Entity.Protocol.DataStructure;
  4. using WCS.Entity.Protocol.SRM;
  5. using WCS.Entity.Protocol.Station;
  6. namespace WCS.Service
  7. {
  8. public class ProtocolProxy : ProtocolProxyBase
  9. {
  10. public static DeviceDataPack DataPack { get; set; } = new DeviceDataPack();
  11. public ProtocolProxy(Device dev, ProtocolInfo info, Type protocolType, World world) : base(dev, info, protocolType, world)
  12. {
  13. }
  14. protected override void DataChanged()
  15. {
  16. //if (Device.HasProtocol(typeof(IStation520)))
  17. //{
  18. // if (DataPack.StationDatas == null)
  19. // {
  20. // DataPack.StationDatas = new DeviceDataCollection<StationData>();
  21. // }
  22. // DataPack.StationDatas.Datas.Append(new StationData()
  23. // {
  24. // Code = Device.Code,
  25. // 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,
  26. // 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,
  27. // 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,
  28. // }); ;
  29. // DataPack.StationDatas.Frame = DateTime.Now;
  30. //}
  31. //else if (Device.HasProtocol(typeof(ISRM520)))
  32. //{
  33. // if (DataPack.SRMDatas == null)
  34. // {
  35. // DataPack.SRMDatas = new DeviceDataCollection<SRMData>();
  36. // }
  37. // DataPack.SRMDatas.Datas.Append(new SRMData()
  38. // {
  39. // Code = Device.Code,
  40. // 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,
  41. // 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,
  42. // 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,
  43. // });
  44. // DataPack.SRMDatas.Frame = DateTime.Now;
  45. //}
  46. //else if (Device.HasProtocol(typeof(IBCR81)))
  47. //{
  48. // if (DataPack.BcrDatas == null)
  49. // {
  50. // DataPack.BcrDatas = new DeviceDataCollection<BCRData>();
  51. // }
  52. // DataPack.BcrDatas.Datas.Append(new BCRData()
  53. // {
  54. // Code = Device.Code,
  55. // 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,
  56. // });
  57. // DataPack.BcrDatas.Frame = DateTime.Now;
  58. //}
  59. //DataPack.Frame = DateTime.Now;
  60. }
  61. private object Copy(object obj, Type type)
  62. {
  63. var res = Activator.CreateInstance(type);
  64. foreach (var p in type.GetProperties())
  65. {
  66. var p2 = obj.GetType().GetProperty(p.Name);
  67. if (p2 != null && p2.PropertyType == p.PropertyType)
  68. {
  69. p.SetValue(res, p2.GetValue(obj));
  70. }
  71. }
  72. return res;
  73. }
  74. }
  75. }