ToolLayoutConfigManager.cs 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. using Aitex.Common.Util;
  2. using Aitex.Core.RT.DataCenter;
  3. using Aitex.Core.Util;
  4. using MECF.Framework.Common.Equipment;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Runtime.InteropServices;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using System.Xml;
  12. namespace MECF.Framework.Common.ToolLayout
  13. {
  14. public class ToolLayoutConfigManager : Singleton<ToolLayoutConfigManager>
  15. {
  16. #region 内部变量
  17. private List<string> _installedModules= new List<string>();
  18. #endregion
  19. #region 属性
  20. /// <summary>
  21. /// 已经安装好的模块集合
  22. /// </summary>
  23. public List<string> InstalledModules { get { return _installedModules; } }
  24. #endregion
  25. /// <summary>
  26. /// 初始化
  27. /// </summary>
  28. public void Initialize()
  29. {
  30. string xmlPath = PathManager.GetCfgDir() + "Layout\\ToolLayoutConfiguration.xml";
  31. XmlDocument xml = new XmlDocument();
  32. xml.Load(xmlPath);
  33. XmlNodeList itemsNode = xml.SelectNodes("ToolLayoutXmlRoot/Items/Item");
  34. foreach (var item in itemsNode)
  35. {
  36. XmlElement element = item as XmlElement;
  37. if (element == null)
  38. continue;
  39. string type= element.GetAttribute("i:type");
  40. switch (type)
  41. {
  42. case "Prewet":
  43. PrewetItemManager.Instance.InitializePrewetItem(element); break;
  44. case "Rinse":
  45. RinseItemManager.Instance.InitializeRinseItem(element); break;
  46. case "Reservoir":
  47. ReservoirItemManager.Instance.InitializeReservoirItem(element); break;
  48. case "Dryer":
  49. DryerItemManager.Instance.InitializeDryerItem(element); break;
  50. case "Buffer":
  51. BufferItemManager.Instance.InitializeBufferItem(element); break;
  52. case "SRD":
  53. SrdItemManager.Instance.InitialSRDItem(element); break;
  54. case "DummyCassette":
  55. DummyCasseteItemManager.Instance.InitializeDummyCasseteItem(element); break;
  56. case "SystemFacilities":
  57. FacilitiesItemManager.Instance.Initialize(element); break;
  58. case "SystemSafety":
  59. SafetyItemManager.Instance.Initialize(element); break;
  60. case "LoadPort":
  61. LoadPortItemManager.Instance.InitializeLoadPortItem(element); break;
  62. case "Transporter":
  63. TransporterItemManager.Instance.InitializeTransporterItem(element); break;
  64. case "PUF":
  65. PufItemManager.Instance.InitializePufItem(element); break;
  66. case "EFEM":
  67. EfemItemManager.Instance.InitializeEfemItem(element);break;
  68. case "Loader":
  69. LoaderItemManager.Instance.InitializeLoaderItem(element);break;
  70. case "Linmot":
  71. LinmotItemManager.Instance.InitializeLinmotItem(element); break;
  72. case "ResistivityProbe":
  73. ResistivityProbeItemManager.Instance.InitializeItem(element); break;
  74. case "PlatingPowerSupply":
  75. PowerSupplierItemManager.Instance.InitializeItem(element);break;
  76. case "CMMPowerSupply":
  77. CmmPowerItemManager.Instance.InitializeItem(element);break;
  78. case "TempControl":
  79. TemperatureItemManager.Instance.InitializeTemperatureItem(element);break;
  80. case "BarcodeReader":
  81. BarcodeReaderItemManager.Instance.InitializeItem(element); break;
  82. }
  83. }
  84. _installedModules.AddRange(RinseItemManager.Instance.InstalledModules);
  85. _installedModules.AddRange(ReservoirItemManager.Instance.InstalledModules);
  86. _installedModules.AddRange(MetalItemManager.Instance.InstalledModules);
  87. _installedModules.AddRange(PrewetItemManager.Instance.InstalledModules);
  88. _installedModules.AddRange(DryerItemManager.Instance.InstalledModules);
  89. _installedModules.AddRange(BufferItemManager.Instance.InstalledModules);
  90. _installedModules.AddRange(SrdItemManager.Instance.InstalledModules);
  91. _installedModules.AddRange(DummyCasseteItemManager.Instance.InstalledModules);
  92. _installedModules.AddRange(FacilitiesItemManager.Instance.InstalledModules);
  93. _installedModules.AddRange(SafetyItemManager.Instance.InstalledModules);
  94. _installedModules.AddRange(LoadPortItemManager.Instance.InstalledModules);
  95. _installedModules.AddRange(TransporterItemManager.Instance.InstalledModules);
  96. _installedModules.AddRange(PufItemManager.Instance.InstalledModules);
  97. _installedModules.AddRange(EfemItemManager.Instance.InstalledModules);
  98. _installedModules.AddRange(LoaderItemManager.Instance.InstalledModules);
  99. InitializeData();
  100. CellItemManager.Instance.InitializeLayoutCellItems();
  101. CellItemRecipeTimeManager.Instance.Initialize();
  102. MetalUsageManager.Instance.Initialize();
  103. ReservoirUsageManager.Instance.Initialize();
  104. }
  105. /// <summary>
  106. /// 初始化DATA
  107. /// </summary>
  108. private void InitializeData()
  109. {
  110. DATA.Subscribe("System.ReservoirMetals", () => ReservoirItemManager.Instance.ReservoirMetalsDictionary, SubscriptionAttribute.FLAG.IgnoreSaveDB);
  111. DATA.Subscribe("System.InstalledModules", () => _installedModules, SubscriptionAttribute.FLAG.IgnoreSaveDB);
  112. }
  113. /// <summary>
  114. /// 检验模块是否Installed
  115. /// </summary>
  116. /// <param name="module"></param>
  117. /// <returns></returns>
  118. public bool IsInstalled(ModuleName module)
  119. {
  120. return _installedModules.Contains(module.ToString());
  121. }
  122. }
  123. }