using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using AR; namespace Project { public partial class FMain { Dialog.fFinishJob fsum = null; void HideSummary() { if (this.InvokeRequired) { this.BeginInvoke(new MethodInvoker(HideSummary), null); } else { if (fsum != null) { if (fsum.IsDisposed == false && fsum.Disposing == false) { fsum.Close(); fsum.Dispose(); } fsum = null; } } } void ShowSummary() { if (fsum == null || fsum.IsDisposed || fsum.Disposing == true) { fsum = new Dialog.fFinishJob(); fsum.FormClosed += (s1, e1) => { //해당 폼이 닫힐때 처리한다. if (PUB.sm.Step == eSMStep.FINISH) { //완료상때일때 닫으면 Run_MotionPositionReset(); } }; fsum.Show(); } else { fsum.Show(); fsum.Activate(); } } void UserStepWait(eWorkPort target) { if (PUB.flag.get(eVarBool.FG_USERSTEP)) { if (target == eWorkPort.Left) { if (LockUserL.WaitOne(1)) LockUserL.Reset(); } else { if (LockUserR.WaitOne(1)) LockUserR.Reset(); } } } /// /// user step 상황에서 자동으로 멈추게 합니다. /// void UserStepRun(eWorkPort target) { if (PUB.flag.get(eVarBool.FG_USERSTEP)) { if (target == eWorkPort.Right) { if (LockUserL.WaitOne(1) == false) LockUserL.Set(); } else { if (LockUserR.WaitOne(1) == false) LockUserR.Set(); } } } /// /// 홈작업이 진행 가능한지 하드웨어 상태를 확인한다. /// /// bool CheckHomeProcess_HW_Available(Boolean needHomeSet) { //모션이 초기화되지 않았다면 오류로 한다 if (PUB.mot.IsInit == false) { PUB.Result.SetResultMessage(eResult.MOTION, eECode.AZJINIT, eNextStep.NOTHING); return false; } //모든 홈이 되어야 가능하다 if (needHomeSet) { if (PUB.mot.IsInit && PUB.mot.HasHomeSetOff == true) { PUB.Result.SetResultMessage(eResult.MOTION, eECode.MOT_HSET, eNextStep.ERROR); return false; } } //안전센서가 작동했다면 중지한다. if (DIO.isSaftyDoorF(true) == false || DIO.isSaftyDoorR() == false) { PUB.Result.SetResultMessage(eResult.SAFTY, eECode.DOORSAFTY, eNextStep.ERROR); return false; } //모션모델이 반드시 설정되어있어야 한다 if (PUB.Result.isSetmModel == false) { PUB.Result.SetResultMessage(eResult.MOTION, eECode.NOMODELM, eNextStep.ERROR); return false; } //AIR확인 if (DIO.GetIOOutput(eDOName.SOL_AIR) == false) { PUB.Result.SetResultMessage(eResult.SENSOR, eECode.AIRNOOUT, eNextStep.ERROR); return false; } // 비상정지 확인 if (DIO.IsEmergencyOn() == true) { PUB.Result.SetResultMessage(eResult.SAFTY, eECode.EMERGENCY, eNextStep.ERROR); return false; } return true; } } }