153 lines
3.1 KiB
C#
153 lines
3.1 KiB
C#
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();
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// user step 상황에서 자동으로 멈추게 합니다.
|
|
/// </summary>
|
|
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();
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 홈작업이 진행 가능한지 하드웨어 상태를 확인한다.
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
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;
|
|
}
|
|
|
|
|
|
}
|
|
}
|