| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 | 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<ToolLayoutConfigManager>    {        #region 内部变量        private List<string> _installedModules= new List<string>();        #endregion        #region 属性        /// <summary>        /// 已经安装好的模块集合        /// </summary>        public List<string> InstalledModules { get { return _installedModules; } }        #endregion        /// <summary>        /// 初始化        /// </summary>        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();        }        /// <summary>        /// 初始化DATA        /// </summary>        private void InitializeData()        {            DATA.Subscribe("System.ReservoirMetals", () => ReservoirItemManager.Instance.ReservoirMetalsDictionary, SubscriptionAttribute.FLAG.IgnoreSaveDB);            DATA.Subscribe("System.InstalledModules", () => _installedModules, SubscriptionAttribute.FLAG.IgnoreSaveDB);        }        /// <summary>        /// 检验模块是否Installed        /// </summary>        /// <param name="module"></param>        /// <returns></returns>        public bool IsInstalled(ModuleName module)        {            return _installedModules.Contains(module.ToString());        }    }}
 |