List <T> InoutCoretypeList <T>(string name, List <T> v, fn <T> Conv) { int size = GetNrElements(name); nodeStack.Push(currentNode); currentNode = GetNode(name); v.Clear(); for (int i = 0; i < size; i++) { XmlNode node = GetCurrentElement(i); T res; if (Conv(node.InnerText.Trim(), out res)) { v.Add(res); } else { throw new System.FormatException("Invalid value encountered in Xml-list. Name: '" + name + "', Value: " + node.InnerText.Trim()); } } currentNode = nodeStack.Pop(); return(v); }
public void b() { GC.SuppressFinalize(this); this.a(); this.az.Clear(); this.n = null; this.ag = null; this.au = null; this.at = null; this.@as = null; this.ar = null; this.aq = null; this.ap = null; this.ao = null; this.an = null; this.am = null; this.al = null; this.ak = null; this.aj = null; this.ai = null; this.ah = null; this.af = null; this.ae = null; this.ad = null; this.ac = null; this.ab = null; this.aa = null; this.z = null; this.y = null; this.x = null; this.w = null; this.v = null; this.u = null; this.t = null; this.s = null; this.r = null; this.q = null; this.p = null; this.c = null; this.av = null; this.o = null; this.m = null; this.l = null; this.k = null; this.j = null; this.i = null; this.h = null; this.g = null; this.f = null; this.e = null; this.d = null; this.b = null; this.a = null; this.aw = null; this.ax = null; this.ay = null; }
Newton(fn f, fn df, double x0, byte precision) { double tol = GetPrecisionTolerance(precision); double x1 = x0; do { x0 = x1; x1 = x0 - f(x0) / df(x0); }while(tol <= Math.Abs(x1 - x0)); return(Math.Round(x1, precision)); }
public fn Loadlock_Venting() { if (!isAcceptRun()) { return(fn.busy); } nPreSeqNo = nSeqNo; fn fRet = fn.busy; switch (nSeqNo) { case 0: break; case 10: break; case 20: fRet = GlobalSeq.autoRun.procLoadlock.Loadlock_Venting(); if (fRet == fn.success) { break; } else { if (fRet == fn.err) { //에러 일경우 Output 출력을 Off하자 return(fn.err); } } return(fn.busy); case 30: nSeqNo = 0; return(fn.success); } //wrong seq check if (nSeqNo > 10000) { //error occur return(fn.err); } nSeqNo++; return(fn.busy); }
// Update is called once per frame void Update() { switch (state) { case AIState.Idle: chasing = false; break; case AIState.Wander: Behavior = Wander; SelectTarget = WanderSelect; break; case AIState.Chase: chasing = true; break; } Behavior(); }
Secant(fn f, double x0, double x1, byte precision) { if (x0 == x1) { throw new DivideByZeroException(); } double tol = GetPrecisionTolerance(precision); while (tol <= Math.Abs(x1 - x0)) { double f0 = f(x0), f1 = f(x1); double x2 = x1 - f1 * (x1 - x0) / (f1 - f0); x0 = x1; x1 = x2; } return(Math.Round(x1, precision)); }
public static b FoldLeft <a, b> (a x, b acc, fn <a, b, b> f) { return(f.apply(x, acc)); }
/// <summary> /// Constructor. /// </summary> /// <param name="function">The delegate to assign.</param> public ImportFunction_Lam(fn function) { this.function = function; }
public ev(CoreManager A_0, PluginHost A_1, PluginCore A_2) { this.aw = A_0; this.ax = A_1; this.ay = A_2; this.a = new b2(this.ay); this.az.Add(this.a); this.b = new j(); this.az.Add(this.b); this.d = new aj(); this.az.Add(this.d); this.e = new cd((FileService)this.aw.get_FileService(), this); this.az.Add(this.e); this.f = new d6(); this.az.Add(this.f); this.g = new dv(this); this.az.Add(this.g); this.z = new s(this.aw); this.az.Add(this.z); this.h = new cs(this); this.az.Add(this.h); this.i = new dg(this); this.az.Add(this.i); this.j = new dl(this); this.az.Add(this.j); this.k = new eo(this); this.az.Add(this.k); this.l = new bh(); this.az.Add(this.l); this.m = new fq(); this.az.Add(this.m); this.o = new bw(); this.az.Add(this.o); this.c = new cLogic(this.g, this.ay, this.z); this.az.Add(this.c); this.p = new cj(new cj.a(ad.a), A_1.get_Actions()); this.az.Add(this.p); this.q = new b5(this.aw, this.ay); this.az.Add(this.q); this.r = new cz(this.ay, this.aw, this.ax, this.p); this.az.Add(this.r); this.s = new ag(); this.az.Add(this.s); this.t = new fc(this.aw, this.ay); this.az.Add(this.t); this.u = new b0(this.aw, this.ay, this.p); this.az.Add(this.u); this.v = new el(this.aw); this.az.Add(this.v); this.w = new bd(); this.az.Add(this.w); this.x = new bv(this.aw); this.az.Add(this.x); this.y = new a7(this.aw); this.az.Add(this.y); this.n = new fn(this.aw, this.p); this.az.Add(this.n); this.aa = new d0(this.aw); this.az.Add(this.aa); this.ab = new da(this.p, this.ay); this.az.Add(this.ab); this.ac = new bj(); this.az.Add(this.ac); this.ad = new fs(); this.az.Add(this.ad); this.ae = new b9(); this.az.Add(this.ae); this.af = new en(); this.az.Add(this.af); this.ah = new e0(); this.az.Add(this.ah); this.ai = new ar(); this.az.Add(this.ai); this.aj = new y(this.ai); this.az.Add(this.aj); this.ak = new cRechargeManager(); this.az.Add(this.ak); this.al = new q(); this.az.Add(this.al); this.am = new fr(); this.az.Add(this.am); this.an = new ei(this.g, this.p); this.az.Add(this.an); this.ao = new ca(this.x, this.an); this.az.Add(this.ao); this.ap = new cr(this.ay); this.az.Add(this.ap); this.aq = new bp(); this.az.Add(this.aq); this.ar = new ay(this.p); this.az.Add(this.ar); this.@as = new h(); this.az.Add(this.@as); this.at = new du(); this.az.Add(this.at); this.au = new ac(); this.az.Add(this.au); this.ag = new cc(); this.az.Add(this.ag); }
void Start() { mov = GetComponent <AIMovement>(); SelectTarget = WanderSelect; Behavior = Wander; }
public void Run() { if (!isAcceptRun()) { return; } if (nSeqNo != nPreSeqNo) { resetCmd(); } nPreSeqNo = nSeqNo; CaseVTM seqCase = (CaseVTM)nSeqNo; alwaysCheck(); RUN_MODE RunMode = RecipeMgr.Inst.TempRcp.eRunMode; //현재 레시피 if (RunMode == RUN_MODE.ONLY_LAMI) { //현재 진행 모드가 라미 모드일 경우 진행하지 않기 위함 return; } switch (seqCase) { case CaseVTM.Initialze: break; case CaseVTM.Check_Interlock: break; case CaseVTM.Check_Status: //웨이퍼 로딩 상태 확인 ReqStatus = CheckStatusReqeust(); if (ReqStatus == ReqStatus_VTM.LOADLOCK_LOAD) { //Pickup Loadlock Working_Arm = ARM.UPPER; nextSeq(CaseVTM.Check_LL_Pickup); } else if (ReqStatus == ReqStatus_VTM.LOAD_PMC) { //Load PMC Seq Working_Arm = ARM.UPPER; nextSeq(CaseVTM.Start_VTM_Load_PMC); } else if (ReqStatus == ReqStatus_VTM.UNLOAD_PMC) { //Unload Seq Working_Arm = ARM.LOWER; nextSeq(CaseVTM.Start_VTM_Unload_PMC); } else if (ReqStatus == ReqStatus_VTM.UNLOAD_BONDED) { Working_Arm = ARM.LOWER; nextSeq(CaseVTM.Check_LL_Place); } else { //요청이 없을 경우 대기하자 } return; ///////////////////////////////// //VTM Pickup LL -> Load PMC ///////////////////////////////// case CaseVTM.Check_WaferStatus: break; case CaseVTM.Check_LL_Pickup: //Loadlock이 동작 중인지 확인 if (GlobalVariable.interlock.bLLMoving) { return; } GlobalVariable.interlock.bLLMoving = true; break; case CaseVTM.Move_LL_Move_Pickup: //Pickup LL //GlobalSeq.autoRun.procLoadlock.Move(MotionPos.Pos3); GlobalSeq.autoRun.procLoadlock.MoveExit((int)MotionPos.Pos3); strLog = string.Format("Loadlock VTM Pickup Move Start -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString()); AddMessage(strLog); break; case CaseVTM.Compl_LL_Move_Pickup: if (GlobalSeq.autoRun.procLoadlock.CheckMoveDone((int)MotionPos.Pos3) == false) { return; } strLog = string.Format("Loadlock VTM Pickup Move End -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString()); AddMessage(strLog); break; case CaseVTM.Start_VTM_Pickup_LL: break; case CaseVTM.Set_Pumping_Pickup_LL: GlobalSeq.autoRun.prcVTM.Pmc.GetStatus(CTC_STATUS.CTCRunMode, ref status); if (status == (short)CTC_RunMode.ModeAtm) { break; } //Loadlock Pumping 상태로 만든다. fRet = GlobalSeq.autoRun.procLoadlock.Loadlock_Pumping(); if (fRet == fn.success) { break; } else if (fRet == fn.busy) { return; } else { //Error return; } case CaseVTM.Door_Open_Pickup_LL: //VTM Door Open GlobalVariable.io.VTM_Door_Open(); break; case CaseVTM.Check_Open_Pickup_LL: //VTM Door Open Check if (GlobalVariable.io.Check_VTM_Door_Open() == false) { //타임아웃 체크 return; } break; case CaseVTM.Move_VTM_Pickup_LL: Working_Stage = VtmStage.LL; Working_Arm = ARM.UPPER; //VTM Pickup/Place 시 부분동작으로 변경 함 if (GlobalSeq.autoRun.procLoadlock.SetBlock() == false) { return; } MoveRobot(Working_Stage, Working_Arm, true); //Arm Fold 이동 //MoveRobot(Working_Stage, Working_Arm, false); //Arm Fold 이동 strLog = string.Format("VTM Robot Pickup Move Start -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString()); AddMessage(strLog); break; case CaseVTM.Move_VTM_Pickup_LL_Check: if (CheckComplete() != fn.success) { return; } break; case CaseVTM.Move_VTM_Pickup_LL_Stretch: //if (CheckComplete() != fn.success) return; MoveRobot_Stretch(Working_Stage, Working_Arm, UPDOWN_POS.DOWN); break; case CaseVTM.Move_VTM_Pickup_LL_Stretch_Check: if (CheckComplete() != fn.success) { return; } break; case CaseVTM.Move_VTM_Pickup_LL_HandUp: MoveRobot_HandUp(Working_Stage, Working_Arm); break; case CaseVTM.Move_VTM_Pickup_LL_HandUp_Check: if (CheckComplete() != fn.success) { return; } break; case CaseVTM.Move_VTM_Pickup_LL_Fold: MoveRobot_Fold(Working_Stage, Working_Arm, UPDOWN_POS.UP); break; case CaseVTM.Move_VTM_Pickup_LL_Fold_Check: if (CheckComplete() != fn.success) { return; } GlobalSeq.autoRun.procLoadlock.UnBlock(); break; case CaseVTM.Compl_VTM_Pickup_LL: strLog = string.Format("VTM Robot Pickup Move End -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString()); AddMessage(strLog); break; case CaseVTM.Door_Close_Pickup_LL: //VTM Door Close GlobalVariable.io.VTM_Door_Close(); break; case CaseVTM.Check_Close_Pickup_LL: //VTM Door Close Check if (GlobalVariable.io.Check_VTM_Door_Close() == false) { //타임아웃 체크 return; } break; case CaseVTM.End_VTM_Pickup_LL: GlobalVariable.seqShared.LoadingLoadLockToVtm(WaferType.CARRIER, (HAND)Working_Arm); //GlobalVariable.seqShared.LoadingLoadLockToVtm(WaferType.DEVICE, (HAND)Working_Arm); GlobalVariable.interlock.bLLMoving = false; GlobalVariable.interlock.bLLUsed_VTM = false; //Loadlock 사용 해제 Flag //Loadlock 픽업 후 리턴 nextSeq(CaseVTM.Check_Interlock); break; ///////////////////////////////// //VTM Load PMC ///////////////////////////////// case CaseVTM.Start_VTM_Load_PMC: strLog = string.Format("VTM PMC Load Move Start -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString()); AddMessage(strLog); break; case CaseVTM.Set_Pumping_Load_PMC: GlobalSeq.autoRun.prcVTM.Pmc.GetStatus(CTC_STATUS.CTCRunMode, ref status); if (status == (short)CTC_RunMode.ModeAtm) { break; } //PMC에 Vacuum 상태를 확인한다. fRet = GlobalSeq.autoRun.procLoadlock.VTM_Pumping(); if (fRet == fn.success) { break; } else if (fRet == fn.busy) { return; } else { //Error return; } ////Convectron Sensor On Check //if (GlobalVariable.io.ReadInput(GlobalVariable.io.I_VacuumTm_ConvectronRy_1) == true // && GlobalVariable.io.ReadInput(GlobalVariable.io.I_VacuumTm_ConvectronRy_2) == true) //{ // //조건이 맞으면 다음 케이스로 넘긴다 // break; //} //else //{ // //Error // return; //} case CaseVTM.Door_Open_Load_PMC: //PMC Door Open GlobalVariable.io.BD_Door_Open(); break; case CaseVTM.Check_Open_Load_PMC: //PMC Door Open Check if (GlobalVariable.io.Check_BD_Door_Open() == false) { //타임아웃 체크 return; } break; case CaseVTM.Move_VTM_Load_PMC: if (Load_PMC(Working_Arm) != fn.success) { return; } break; case CaseVTM.Compl_VTM_Load_PMC: break; case CaseVTM.Door_Close_Load_PMC: //PMC Door Close GlobalVariable.io.BD_Door_Close(); break; case CaseVTM.Check_Close_Load_PMC: //PMC Door Close Check if (GlobalVariable.io.Check_BD_Door_Close() == false) { //타임아웃 체크 return; } break; case CaseVTM.End_VTM_Load_PMC: GlobalVariable.seqShared.LoadingVtmToBonder((HAND)Working_Arm); strLog = string.Format("VTM PMC Load Move End -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString()); AddMessage(strLog); break; case CaseVTM.Set_Recipe: break; case CaseVTM.Start_Process: //Set Process Start GlobalVariable.interlock.bBondingProcess = true; strLog = string.Format("Pmc Process On -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString()); AddMessage(strLog); nextSeq(CaseVTM.Check_Interlock); return; ///////////////////////////////// //VTM Unload PMC ///////////////////////////////// case CaseVTM.Start_VTM_Unload_PMC: strLog = string.Format("VTM PMC Unload Move Start -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString()); AddMessage(strLog); break; case CaseVTM.Set_Pumping_Unload_PMC: GlobalSeq.autoRun.prcVTM.Pmc.GetStatus(CTC_STATUS.CTCRunMode, ref status); if (status == (short)CTC_RunMode.ModeAtm) { break; } //PMC에 Vacuum 상태를 확인한다. fRet = GlobalSeq.autoRun.procLoadlock.VTM_Pumping(); if (fRet == fn.success) { break; } else if (fRet == fn.busy) { return; } else { //Error return; } case CaseVTM.Door_Open_Unload_PMC: //PMC Door Open GlobalVariable.io.BD_Door_Open(); break; case CaseVTM.Check_Open_Unload_PMC: //PMC Door Open Check if (GlobalVariable.io.Check_BD_Door_Open() == false) { //타임아웃 체크 return; } break; case CaseVTM.Move_VTM_Unload_PMC: Working_Arm = ARM.LOWER; //언로드 시 Lower Hand if (Unload_PMC(Working_Arm) != fn.success) { return; } strLog = string.Format("VTM PMC Unload Move End -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString()); AddMessage(strLog); break; case CaseVTM.Compl_VTM_Unload_PMC: break; case CaseVTM.Door_Close_Unload_PMC: //Door Close GlobalVariable.io.BD_Door_Close(); break; case CaseVTM.Check_Close_Unload_PMC: //Door Close Check if (GlobalVariable.io.Check_BD_Door_Close() == false) { //타임아웃 체크 return; } break; case CaseVTM.End_VTM_Unload_PMC: //데이터 이동 GlobalVariable.seqShared.LoadingBonderToVtm((HAND)Working_Arm); nextSeq(CaseVTM.Check_Interlock); return; case CaseVTM.Check_LL_Place: //Loadlock이 동작 중인지 확인 if (GlobalVariable.interlock.bLLMoving) { return; } GlobalVariable.interlock.bLLMoving = true; GlobalVariable.interlock.bLLUsed_VTM = true; //Loadlock 사용 Flag break; case CaseVTM.Move_LL_Move_Place: //BD Place -> Unload //GlobalSeq.autoRun.procLoadlock.Move(MotionPos.Pos1); GlobalSeq.autoRun.procLoadlock.MoveExit((int)MotionPos.Pos1); strLog = string.Format("Loadlock VTM Place Move Start -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString()); AddMessage(strLog); break; case CaseVTM.Compl_LL_Move_Place: // if (GlobalSeq.autoRun.procLoadlock.CheckComplete() != fn.success) return; if (GlobalSeq.autoRun.procLoadlock.CheckMoveDone((int)MotionPos.Pos1) == false) { return; } strLog = string.Format("Loadlock VTM Place Move End -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString()); AddMessage(strLog); break; case CaseVTM.Start_VTM_Place_LL: if (Working_Arm != ARM.LOWER) { //Hand Fail return; } break; case CaseVTM.Set_Pumping_Place_LL: GlobalSeq.autoRun.prcVTM.Pmc.GetStatus(CTC_STATUS.CTCRunMode, ref status); if (status == (short)CTC_RunMode.ModeAtm) { break; } //Loadlock Pumping 상태로 만든다. fRet = GlobalSeq.autoRun.procLoadlock.Loadlock_Pumping(); if (fRet == fn.success) { break; } else if (fRet == fn.busy) { return; } else { //Error return; } case CaseVTM.Door_Open_Place_LL: //VTM Door Open GlobalVariable.io.VTM_Door_Open(); break; case CaseVTM.Check_Open_Place_LL: //VTM Door Open Check if (GlobalVariable.io.Check_VTM_Door_Open() == false) { //타임아웃 체크 return; } break; case CaseVTM.Move_VTM_Place_LL: Working_Stage = VtmStage.Bonded; if (GlobalSeq.autoRun.procLoadlock.SetBlock() == false) { return; } //MoveRobot(Working_Stage, Working_Arm, false); MoveRobot(Working_Stage, Working_Arm, true); //Hand Fold 이동 strLog = string.Format("VTM Robot Place Move Start -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString()); AddMessage(strLog); break; case CaseVTM.Move_VTM_Place_LL_Check: if (CheckComplete() != fn.success) { return; } break; case CaseVTM.Move_VTM_Place_LL_Stretch: MoveRobot_Stretch(Working_Stage, Working_Arm, UPDOWN_POS.UP); break; case CaseVTM.Move_VTM_Place_LL_Stretch_Check: if (CheckComplete() != fn.success) { return; } break; case CaseVTM.Move_VTM_Place_LL_HandDown: MoveRobot_HandDown(Working_Stage, Working_Arm); break; case CaseVTM.Move_VTM_Place_LL_HandDown_Check: if (CheckComplete() != fn.success) { return; } break; case CaseVTM.Move_VTM_Place_LL_Fold: MoveRobot_Fold(Working_Stage, Working_Arm, UPDOWN_POS.DOWN); break; case CaseVTM.Move_VTM_Place_LL_Fold_Check: if (CheckComplete() != fn.success) { return; } GlobalSeq.autoRun.procLoadlock.UnBlock(); break; case CaseVTM.Compl_VTM_Place_LL: strLog = string.Format("VTM Robot Place Move End -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString()); AddMessage(strLog); break; case CaseVTM.Door_Close_Place_LL: //VTM Door Close GlobalVariable.io.VTM_Door_Close(); break; case CaseVTM.Check_Close_Place_LL: //VTM Door Close Check if (GlobalVariable.io.Check_VTM_Door_Close() == false) { //타임아웃 체크 return; } break; case CaseVTM.End_VTM_Place_LL: //데이터 이동 GlobalVariable.seqShared.LoadingVtmToLoadlock(WaferType.BONDED, (HAND)Working_Arm); GlobalVariable.interlock.bLLMoving = false; //본딩 완료 된 웨이퍼 LL에 언로딩 하고 //LL에 투입된 웨이퍼 있는지 확인 //있으면 Pickup 하자, Exchange if (GlobalVariable.seqShared.IsInLoadLock((int)WaferType.DEVICE) == true && GlobalVariable.seqShared.IsInLoadLock((int)WaferType.CARRIER) == true && GlobalVariable.seqShared.IsInVTM(HAND.UPPER) == false) { //Pickup Loadlock Working_Arm = ARM.UPPER; nextSeq(CaseVTM.Check_LL_Pickup); return; } else { //Loadlock 사용 해제 GlobalVariable.interlock.bLLUsed_VTM = false; nextSeq(CaseVTM.Check_Interlock); return; } return; } nSeqNo++; }
static void test(fn f) { Console.WriteLine("{0}", f()); }
public void AddPath(string path, fn function) { call.Add(path, function); }
ref libcall call = ref heap(new libcall(fn: fn, n: nargs, args: uintptr(unsafe.Pointer(&a1)), ), out ptr <libcall> _addr_call);