using Aitex.Common.Util; using Aitex.Core.RT.DataCenter; using Aitex.Core.Util; using MECF.Framework.Common.Equipment; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Xml; namespace MECF.Framework.Common.ToolLayout { public class ToolLayoutConfigManager : Singleton { #region 内部变量 private List _installedModules= new List(); #endregion #region 属性 /// /// 已经安装好的模块集合 /// public List InstalledModules { get { return _installedModules; } } #endregion /// /// 初始化 /// public void Initialize() { string xmlPath = PathManager.GetCfgDir() + "Layout\\ToolLayoutConfiguration.xml"; XmlDocument xml = new XmlDocument(); xml.Load(xmlPath); XmlNodeList itemsNode = xml.SelectNodes("ToolLayoutXmlRoot/Items/Item"); foreach (var item in itemsNode) { XmlElement element = item as XmlElement; if (element == null) continue; string type= element.GetAttribute("i:type"); switch (type) { case "Prewet": PrewetItemManager.Instance.InitializePrewetItem(element); break; case "Rinse": RinseItemManager.Instance.InitializeRinseItem(element); break; case "Reservoir": ReservoirItemManager.Instance.InitializeReservoirItem(element); break; case "Dryer": DryerItemManager.Instance.InitializeDryerItem(element); break; case "Buffer": BufferItemManager.Instance.InitializeBufferItem(element); break; case "SRD": SrdItemManager.Instance.InitialSRDItem(element); break; case "DummyCassette": DummyCasseteItemManager.Instance.InitializeDummyCasseteItem(element); break; case "SystemFacilities": FacilitiesItemManager.Instance.Initialize(element); break; case "SystemSafety": SafetyItemManager.Instance.Initialize(element); break; case "LoadPort": LoadPortItemManager.Instance.InitializeLoadPortItem(element); break; case "Transporter": TransporterItemManager.Instance.InitializeTransporterItem(element); break; case "PUF": PufItemManager.Instance.InitializePufItem(element); break; case "EFEM": EfemItemManager.Instance.InitializeEfemItem(element);break; case "Loader": LoaderItemManager.Instance.InitializeLoaderItem(element);break; case "Linmot": LinmotItemManager.Instance.InitializeLinmotItem(element); break; case "ResistivityProbe": ResistivityProbeItemManager.Instance.InitializeItem(element); break; case "PlatingPowerSupply": PowerSupplierItemManager.Instance.InitializeItem(element);break; case "CMMPowerSupply": CmmPowerItemManager.Instance.InitializeItem(element);break; case "TempControl": TemperatureItemManager.Instance.InitializeTemperatureItem(element);break; case "BarcodeReader": BarcodeReaderItemManager.Instance.InitializeItem(element); break; } } _installedModules.AddRange(RinseItemManager.Instance.InstalledModules); _installedModules.AddRange(ReservoirItemManager.Instance.InstalledModules); _installedModules.AddRange(MetalItemManager.Instance.InstalledModules); _installedModules.AddRange(PrewetItemManager.Instance.InstalledModules); _installedModules.AddRange(DryerItemManager.Instance.InstalledModules); _installedModules.AddRange(BufferItemManager.Instance.InstalledModules); _installedModules.AddRange(SrdItemManager.Instance.InstalledModules); _installedModules.AddRange(DummyCasseteItemManager.Instance.InstalledModules); _installedModules.AddRange(FacilitiesItemManager.Instance.InstalledModules); _installedModules.AddRange(SafetyItemManager.Instance.InstalledModules); _installedModules.AddRange(LoadPortItemManager.Instance.InstalledModules); _installedModules.AddRange(TransporterItemManager.Instance.InstalledModules); _installedModules.AddRange(PufItemManager.Instance.InstalledModules); _installedModules.AddRange(EfemItemManager.Instance.InstalledModules); _installedModules.AddRange(LoaderItemManager.Instance.InstalledModules); InitializeData(); CellItemManager.Instance.InitializeLayoutCellItems(); CellItemRecipeTimeManager.Instance.Initialize(); MetalUsageManager.Instance.Initialize(); ReservoirUsageManager.Instance.Initialize(); } /// /// 初始化DATA /// private void InitializeData() { DATA.Subscribe("System.ReservoirMetals", () => ReservoirItemManager.Instance.ReservoirMetalsDictionary, SubscriptionAttribute.FLAG.IgnoreSaveDB); DATA.Subscribe("System.InstalledModules", () => _installedModules, SubscriptionAttribute.FLAG.IgnoreSaveDB); } /// /// 检验模块是否Installed /// /// /// public bool IsInstalled(ModuleName module) { return _installedModules.Contains(module.ToString()); } } }