using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace MECF.Framework.Common.Equipment
{
///
/// 在框架中,Module指具备放置Wafer的单元
///
[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,
//load locks
[EnumMember]
LL1,
[EnumMember]
LL2,
[EnumMember]
LL3,
[EnumMember]
LL4,
//load locks
//[EnumMember]
//LLA,
//[EnumMember]
//LLB,
//[EnumMember]
//LLC,
//[EnumMember]
//LLD,
//[EnumMember]
//LLE,
//[EnumMember]
//LLF,
//[EnumMember]
//LLG,
//[EnumMember]
//LLH,
//[EnumMember]
//VCE1,
//[EnumMember]
//VCE2,
//[EnumMember]
//VCEA,
//transfer modules
[EnumMember]
TM,
[EnumMember]
Cooling1,
[EnumMember]
Cooling2,
//buffers
[EnumMember]
Buffer,
[EnumMember]
Buffer1,
[EnumMember]
Buffer2,
[EnumMember]
Buffer3,
[EnumMember]
Buffer4,
[EnumMember]
Buffer5,
[EnumMember]
Buffer6,
//PMs
[EnumMember]
PM,
[EnumMember]
PM1,
[EnumMember]
PM2,
[EnumMember]
PM3,
[EnumMember]
PM4,
[EnumMember]
PM5,
[EnumMember]
PM6,
[EnumMember]
PM7,
[EnumMember]
PM8,
[EnumMember]
PMA,
[EnumMember]
PMB,
[EnumMember]
PMC,
[EnumMember]
PMD,
[EnumMember]
Robot,
[EnumMember]
Handler,
[EnumMember]
WIDReader1,
[EnumMember]
WIDReader2,
[EnumMember]
TurnOverStation,
[EnumMember]
Host,
[EnumMember]
Cooling,
[EnumMember]
Cassette,
[EnumMember]
CassetteA,
[EnumMember]
CassetteB,
[EnumMember]
LoadLock,
[EnumMember]
SMIFLeft,
[EnumMember]
SMIFRight,
[EnumMember]
SMIFA,
[EnumMember]
SMIFB,
[EnumMember]
CassetteRobot,
[EnumMember]
SignalTower,
[EnumMember]
TurnStation,
[EnumMember]
Stocker1,
[EnumMember]
Stocker2,
[EnumMember]
Stocker3,
[EnumMember]
Stocker4,
[EnumMember]
Stocker5,
[EnumMember]
Stocker6,
[EnumMember]
Stocker7,
[EnumMember]
Stocker8,
[EnumMember]
Stocker9,
[EnumMember]
Stocker10,
[EnumMember]
Stocker11,
[EnumMember]
Stocker12,
[EnumMember]
Stocker13,
[EnumMember]
Stocker14,
[EnumMember]
Stocker15,
[EnumMember]
Stocker16,
[EnumMember]
Stocker17,
[EnumMember]
Stocker18,
[EnumMember]
Stocker19,
[EnumMember]
Stocker20,
[EnumMember]
Stocker21,
[EnumMember]
StageA,
[EnumMember]
StageB,
[EnumMember]
WaferRobot,
[EnumMember]
Boat,
[EnumMember]
CMB,
[EnumMember]
Cassette1,
[EnumMember]
Cassette2,
[EnumMember]
Cassette3,
[EnumMember]
Cassette4,
[EnumMember]
Cassette5,
[EnumMember]
CarrierRobot,
[EnumMember]
FIMS1,
[EnumMember]
FIMS2,
[EnumMember]
Minics = 0,
}
public static class ModuleHelper
{
public static bool IsTurnOverStation(ModuleName unit)
{
return unit == ModuleName.TurnOverStation;
}
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 IsCassette(ModuleName unit)
{
return unit == ModuleName.Cassette1
|| unit == ModuleName.Cassette2
|| unit == ModuleName.Cassette3
|| unit == ModuleName.Cassette4
|| unit == ModuleName.Cassette5
|| unit == ModuleName.Cassette;
}
public static bool IsCOT(string unit)
{
return unit.ToString().Contains( "2_1")
|| unit.ToString().Contains("2_2");
}
public static bool IsBuffer(ModuleName unit)
{
return unit == ModuleName.Buffer
|| unit == ModuleName.Buffer1
|| unit == ModuleName.Buffer2
|| unit == ModuleName.Buffer3
|| unit == ModuleName.Buffer4
|| unit == ModuleName.Buffer5
|| unit == ModuleName.Buffer6;
}
public static bool IsBufferStocker(ModuleName unit)
{
return unit == ModuleName.Stocker1
|| unit == ModuleName.Stocker2
|| unit == ModuleName.Stocker3
|| unit == ModuleName.Stocker4
|| unit == ModuleName.Stocker5
|| unit == ModuleName.Stocker6
|| unit == ModuleName.Stocker7
|| unit == ModuleName.Stocker8
|| unit == ModuleName.Stocker9
|| unit == ModuleName.Stocker10
|| unit == ModuleName.Stocker11
|| unit == ModuleName.Stocker12
|| unit == ModuleName.Stocker13
|| unit == ModuleName.Stocker14
|| unit == ModuleName.Stocker15
|| unit == ModuleName.Stocker16;
}
public static bool IsFIMS(ModuleName unit)
{
return unit == ModuleName.FIMS1 || unit == ModuleName.FIMS2;
}
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.PM
|| unit == ModuleName.PMA
|| unit == ModuleName.PMB
|| unit == ModuleName.PMC
|| unit == ModuleName.PMD
;
}
public static bool IsLoadLock(string unit)
{
return IsLoadLock(ModuleHelper.Converter(unit));
}
public static bool IsLoadLock(ModuleName unit)
{
return unit == ModuleName.LoadLock;
}
public static bool IsStocker(ModuleName unit)
{
return unit == ModuleName.Stocker1
|| unit == ModuleName.Stocker2
|| unit == ModuleName.Stocker3
|| unit == ModuleName.Stocker4
|| unit == ModuleName.Stocker5
|| unit == ModuleName.Stocker6
|| unit == ModuleName.Stocker7
|| unit == ModuleName.Stocker8
|| unit == ModuleName.Stocker9
|| unit == ModuleName.Stocker10
|| unit == ModuleName.Stocker11
|| unit == ModuleName.Stocker12
|| unit == ModuleName.Stocker13
|| unit == ModuleName.Stocker14
|| unit == ModuleName.Stocker15
|| unit == ModuleName.Stocker16
|| unit == ModuleName.Stocker17
|| unit == ModuleName.Stocker18
|| unit == ModuleName.Stocker19
|| unit == ModuleName.Stocker20
|| unit == ModuleName.Stocker21;
}
public static bool IsCooling(string unit)
{
return IsCooling(ModuleHelper.Converter(unit));
}
public static bool IsCooling(ModuleName unit)
{
return unit == ModuleName.Cooling;
}
public static bool IsAligner(string unit)
{
return IsAligner(ModuleHelper.Converter(unit));
}
public static bool IsAligner(ModuleName unit)
{
return unit == ModuleName.Aligner;
}
public static bool IsRobot(string unit)
{
return IsRobot(ModuleHelper.Converter(unit));
}
public static bool IsRobot(ModuleName unit)
{
return unit.ToString().Contains("Robot");
}
public static bool IsEfemRobot(string unit)
{
return IsEfemRobot(ModuleHelper.Converter(unit));
}
public static bool IsEfemRobot(ModuleName unit)
{
return unit == ModuleName.EfemRobot;
}
public static bool IsTMRobot(string unit)
{
return IsTMRobot(ModuleHelper.Converter(unit));
}
public static bool IsTMRobot(ModuleName unit)
{
return unit == ModuleName.TMRobot;
}
public static bool IsTurnStation(ModuleName unit)
{
return unit == ModuleName.TurnStation;
}
public static string GetAbbr(ModuleName module)
{
switch (module)
{
case ModuleName.Aligner: return "PA";
case ModuleName.Robot: return "RB";
default: return module.ToString();
}
}
public static string GetE84LpName(string device)
{
string e84 = string.Empty;
switch(device)
{
case "P1":
case "LP1":
e84 = "Loadport1E84";
break;
case "P2":
case "LP2":
e84 = "Loadport2E84";
break;
case "P3":
case "LP3":
e84 = "Loadport3E84";
break;
case "P4":
case "LP4":
e84 = "Loadport4E84";
break;
case "P5":
case "LP5":
e84 = "Loadport5E84";
break;
case "P6":
case "LP6":
e84 = "Loadport6E84";
break;
case "P7":
case "LP7":
e84 = "Loadport7E84";
break;
case "P8":
case "LP8":
e84 = "Loadport8E84";
break;
case "P9":
case "LP9":
e84 = "Loadport9E84";
break;
case "P10":
case "LP10":
e84 = "Loadport10E84";
break;
}
return e84;
}
public static ModuleName Converter(string module)
{
module = module.Replace("-", "_");
if (module.ToLower().Contains("1_1"))
return ModuleName.Cassette1;
if (module.ToLower().Contains("1_2"))
return ModuleName.Cassette2;
if (module.ToLower().Contains("1_3"))
return ModuleName.Cassette3;
if (module.ToLower().Contains("1_4"))
return ModuleName.Cassette4;
if (module.ToLower().Contains("1_5"))
return ModuleName.Cassette5;
return (ModuleName) Enum.Parse(typeof(ModuleName), module);
}
///
///
///
/// 0 based
///
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];
}
}
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";
}
}