| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456 | 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.Log;using MECF.Framework.Common.ToolLayout;namespace MECF.Framework.Common.Equipment{    /// <summary>    /// 在框架中,Module指具备放置Wafer的单元    /// </summary>    [DataContract]    [Serializable]    public enum ModuleName    {        [EnumMember]        Unknown=9999,        [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,        [EnumMember]        Robot,         [EnumMember]        PMA,        [EnumMember]        PMB,         [EnumMember]        PMC,        [EnumMember]        PMD,        [EnumMember]        PME,        [EnumMember]        PMF,        [EnumMember]        VPA,        [EnumMember]        SRD1,        [EnumMember]        SRD2,        [EnumMember]        PUF1,        [EnumMember]        PUF2,        [EnumMember]        Dummy1,        [EnumMember]        Dummy2,        [EnumMember]        Loader1,        [EnumMember]        Dryer1,        [EnumMember]        Dryer2,        [EnumMember]        Dryer3,        [EnumMember]        Prewet1,        [EnumMember]        Rinse1,        [EnumMember]        Rinse2,        [EnumMember]        Rinse3,        [EnumMember]        Rinse4,        [EnumMember]        Rinse5,        [EnumMember]        Rinse6,        [EnumMember]        Metal1,        [EnumMember]        Metal2,        [EnumMember]        Metal3,        [EnumMember]        Metal4,        [EnumMember]        Metal5,        [EnumMember]        Metal6,        [EnumMember]        Metal7,        [EnumMember]        Metal8,        [EnumMember]        Metal9,        [EnumMember]        Metal10,        [EnumMember]        Metal11,        [EnumMember]        Metal12,        [EnumMember]        Metal13,        [EnumMember]        Metal14,        [EnumMember]        Metal15,        [EnumMember]        Metal16,        [EnumMember]        Linmot,        [EnumMember]        Transporter1,        [EnumMember]        Transporter2,        [EnumMember]        Buffer1,        [EnumMember]        Buffer2,        [EnumMember]        Buffer3,        [EnumMember]        Buffer4,        [EnumMember]        Buffer5,        [EnumMember]        Buffer6,        [EnumMember]        Buffer7,        [EnumMember]        Buffer8,        [EnumMember]        Buffer9,        [EnumMember]        Buffer10,        [EnumMember]        Buffer11,        [EnumMember]        Buffer12,        [EnumMember]        Buffer13,        [EnumMember]        Buffer14,        [EnumMember]        Buffer15,        [EnumMember]        Buffer16,        [EnumMember]        Buffer17,        [EnumMember]        Buffer18,        [EnumMember]        Buffer19,        [EnumMember]        Buffer20,        [EnumMember]        Reservoir1,        [EnumMember]        Reservoir2,        [EnumMember]        Reservoir3,        [EnumMember]        Reservoir4,        [EnumMember]        Reservoir5,        [EnumMember]        VPWMain1,        [EnumMember]        VPW1,        [EnumMember]        VPW2,        [EnumMember]        VPW3,        [EnumMember]        VPW4,        [EnumMember]        VPW5,        [EnumMember]        VPW6,        [EnumMember]        VPW7,        [EnumMember]        VPW8,        [EnumMember]        VPW9,        [EnumMember]        VPW10,        [EnumMember]        PlatingCell1,        [EnumMember]        PlatingCell2,        [EnumMember]        PlatingCell3,        [EnumMember]        PlatingCell4,    }    /// <summary>    /// 模块类型    /// </summary>    public enum ModuleType    {        None,        LoadPort,        EfemRobot,        Aligner,        SRD,        PUF,        Loader,        Buffer,        Dryer,        Rinse,        Prewet,        Metal,        Dummy,        Transporter,        Reservoir,        VpwMain,        VPW,        PlatingCell    }    public static class ModuleHelper    {        public static bool IsPrewet(ModuleName unit)        {            return unit == ModuleName.Prewet1;        }        public static bool IsSRD(ModuleName unit)        {            return unit == ModuleName.SRD1 || unit == ModuleName.SRD2;        }        public static bool IsPUF(ModuleName unit)        {            return unit == ModuleName.PUF1 || unit == ModuleName.PUF2;        }        public static bool IsMetal(ModuleName unit)        {            return (int)unit >= (int)ModuleName.Metal1 && (int)unit <= (int)ModuleName.Metal16;        }        public static bool IsDry(ModuleName unit)        {            return (int)unit >= (int)ModuleName.Dryer1 && (int)unit <= (int)ModuleName.Dryer3;        }        public static bool IsReservoir(ModuleName unit)        {            return (int)unit >= (int)ModuleName.Reservoir1 && (int)unit <= (int)ModuleName.Reservoir5;        }        public static bool IsRinse(ModuleName unit)        {            return (int)unit >= (int)ModuleName.Rinse1 && (int)unit <= (int)ModuleName.Rinse6;        }        public static bool IsBuffer(ModuleName unit)        {            return (int)unit>=(int)ModuleName.Buffer1&&(int)(unit)<=(int)ModuleName.Buffer19;        }        public static bool IsVPWCell(ModuleName unit)        {            return (int)unit >= (int)ModuleName.VPW1 && (int)(unit) <= (int)ModuleName.VPW10;        }        public static bool IsPlatingCell(ModuleName unit)        {            return (int)unit >= (int)ModuleName.PlatingCell1 && (int)(unit) <= (int)ModuleName.PlatingCell4;        }        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 IsDummy(ModuleName unit)        {            return unit == ModuleName.Dummy1 || unit == ModuleName.Dummy2;        }        public static bool IsAligner(ModuleName unit)        {            return unit == ModuleName.Aligner || unit == ModuleName.Aligner1 || unit == ModuleName.Aligner2  ;        }        public static bool IsEFEMRobot(ModuleName unit)        {            return unit == ModuleName.EfemRobot;        }        public static bool IsVPA(ModuleName unit)        {            return unit == ModuleName.VPA;        }        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);            return ToolLayoutConfigManager.Instance.IsInstalled(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)                {                    LOG.WriteExeption("Loading intalled module error, please check the config item: System.InstalledModules", e);                }            }        }    }    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);        }    }}
 |