| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340 | using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using System.Text;using System.Threading.Tasks;using Aitex.Core.RT.SCCore;using Aitex.Core.RT.Event;namespace MECF.Framework.Common.Equipment{    /// <summary>    /// 在框架中,Module指具备放置Wafer的单元    /// </summary>    [DataContract]    [Serializable]    public enum ModuleName    {        [EnumMember]        System = 0,        [EnumMember]        LP1,        [EnumMember]        LP2,        [EnumMember]        LP3,        [EnumMember]        LP4,        [EnumMember]        LP5,        [EnumMember]        LP6,        [EnumMember]        LP7,        [EnumMember]        LP8,        [EnumMember]        LP9,        [EnumMember]        LP10,        //robot modules        //[EnumMember]        //Robot,        [EnumMember]        VaccumRobot,        [EnumMember]        LoadRobot,        [EnumMember]        EfemRobot,        //[EnumMember]        //TMRobot,        //upenders        [EnumMember]        Upender,        //efem        [EnumMember]        EFEM,        //aligners        [EnumMember]        Aligner,        [EnumMember]        Aligner1,        [EnumMember]        Aligner2,        //load locks        [EnumMember]        LL1,        [EnumMember]        LL2,        [EnumMember]        LL3,        [EnumMember]        LL4,        //load locks        [EnumMember]        LLA,        [EnumMember]        LLB,        [EnumMember]        LLC,        [EnumMember]        LLD,        [EnumMember]        VCE1,        [EnumMember]        VCE2,        //transfer modules        [EnumMember]        TM,        //buffers        [EnumMember]        Buffer,        [EnumMember]        Cooling1,        [EnumMember]        Cooling2,        //[EnumMember]        //Buffer1,        //[EnumMember]        //Buffer2,        [EnumMember]        Buffer3,        //PMs        [EnumMember]        PM1,        [EnumMember]        PM2,        [EnumMember]        PM3,        [EnumMember]        PM4,        [EnumMember]        PM5,        [EnumMember]        PM6,        [EnumMember]        PM7,        [EnumMember]        PM8,         [EnumMember]        Robot,         [EnumMember]        PMA,        [EnumMember]        PMB,        [EnumMember]        Flipper,    }    public static class ModuleHelper    {        public static bool IsBuffer(ModuleName unit)        {            return unit == ModuleName.Buffer                   || unit == ModuleName.Buffer3;        }        public static bool IsLoadPort(ModuleName unit)        {            return unit == ModuleName.LP1                   || unit == ModuleName.LP2                   || unit == ModuleName.LP3                   || unit == ModuleName.LP4                   || unit == ModuleName.LP5                   || unit == ModuleName.LP6                   || unit == ModuleName.LP7                   || unit == ModuleName.LP8                   || unit == ModuleName.LP9                   || unit == ModuleName.LP10;        }         public static bool IsPm(string unit)        {            return IsPm(ModuleHelper.Converter(unit));        }        public static bool IsPm(ModuleName unit)        {            return unit == ModuleName.PM1                   || unit == ModuleName.PM2                   || unit == ModuleName.PM3                   || unit == ModuleName.PM4                   || unit == ModuleName.PM5                   || unit == ModuleName.PM6                   || unit == ModuleName.PM7                   || unit == ModuleName.PM8                   || unit == ModuleName.PMA                   || unit == ModuleName.PMB;        }         public static bool IsLoadLock(string unit)        {            return IsLoadLock(ModuleHelper.Converter(unit));        }        public static bool IsAligner(ModuleName unit)        {            return unit == ModuleName.Aligner || unit == ModuleName.Aligner1 || unit == ModuleName.Aligner2  ;        }        public static bool IsCooling(ModuleName unit)        {            return  unit == ModuleName.Cooling1 || unit == ModuleName.Cooling2;        }        public static bool IsFlipper(ModuleName unit)        {            return unit == ModuleName.Flipper;        }        public static bool IsEfemRobot(ModuleName unit)        {            return unit == ModuleName.EfemRobot;        }        public static bool IsLoadLock(ModuleName unit)        {            return unit == ModuleName.LLA                   || unit == ModuleName.LLB                   || unit == ModuleName.LL1                   || unit == ModuleName.LL2                   || unit == ModuleName.LL3                   || unit == ModuleName.LL4                   || unit == ModuleName.LLC                   || unit == ModuleName.LLD;        }        public static string GetAbbr(ModuleName module)        {            switch (module)            {                case ModuleName.Aligner: return "PA";                case ModuleName.Robot: return "RB";                default: return module.ToString();            }        }        public static ModuleName Converter(string module)        {            return (ModuleName) Enum.Parse(typeof(ModuleName), module);        }        /// <summary>        ///         /// </summary>        /// <param name="index">0 based</param>        /// <returns></returns>        public static ModuleName GetLoadPort(int index)        {            ModuleName[] lps = new ModuleName[]            {                ModuleName.LP1, ModuleName.LP2, ModuleName.LP3, ModuleName.LP4, ModuleName.LP5,                ModuleName.LP6, ModuleName.LP7, ModuleName.LP8, ModuleName.LP9, ModuleName.LP10,            };            return lps[index];        }        private static List<ModuleName> _lstModules = new List<ModuleName>();        private static readonly object _lock = new object();        public static bool IsInstalled(ModuleName module)        {            if (_lstModules.Count == 0)            {                LoadModules();            }            return _lstModules.Contains(module);        }        public static void LoadModules()        {            lock(_lock)            {                try                {                    string moduleString = SC.GetStringValue("System.InstalledModules");                    var modules = moduleString.Split(',');                    foreach (var mod in modules)                    {                        var module = Converter(mod.Trim());                        _lstModules.Add(module);                    }                }                catch(Exception e)                {                    EV.PostAlarmLog("System", $"Loading intalled module error, please check the config item: System.InstalledModules, {e.Message}");                }                            }        }    }    public class ModuleNameString    {        public const string System = "System";        public const string LDULD = "LDULD";        public const string BufferOut = "BufferOut";        public const string BufferIn = "BufferIn";        public const string Dryer = "Dryer";        public const string QDR = "QDR";        public const string Robot = "Robot";        public const string Handler = "Handler";        public static ModuleName ToEnum(string value)        {            return (ModuleName)Enum.Parse(typeof(ModuleName), value, true);        }    }}
 |