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;
}
}
}