using AR;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;

namespace Project
{
	public partial class FMain
	{
		private void _SM_MAIN_ERROR(Boolean isFirst, eSMStep Step, TimeSpan StepTime)
		{
			//모션의 위치를 저장해준다. - 재시작시 변경이 잇다면 오류로 처리한다
			for (short i = 0; i < PUB.mot.DeviceCount; i++)
				PUB.Result.PreventMotionPosition[i] = PUB.mot.GetLastCmdPos(i);

			var errorMessage = string.Empty;

			//에러메세지가 있는 경우에만 표시함
			if (PUB.Result.ResultCode != eResult.NOERROR && PUB.Result.ResultMessage != "")
				errorMessage += PUB.Result.ResultMessage;

			//에러메세지가 있는 경우에만 표시함
			if (errorMessage != "")
			{
				//사용자 값 입력창에서는 오류를 표시하지않는다
				if (Step == eSMStep.PAUSE && PUB.flag.get(eVarBool.FG_WAIT_LOADERINFO))
					PUB.log.Add("Pause message not displayed because barcode information input window is open");
				else
					PUB.popup.setMessage(errorMessage);
			}


			if (Step == eSMStep.EMERGENCY)
			{
				PUB.log.AddE("Enter Emergency Step");
			}
			else if (Step == eSMStep.PAUSE)
			{
				PUB.log.AddE("Enter Pause Step 1 : " + PUB.Result.ResultMessage);
			}
			else
			{
				//홈 검색실패로 인해 멈췄다면 모든 축을 멈춘다
				if (Step == eSMStep.ERROR && PUB.Result.ResultCode == eResult.SAFTY)
					PUB.mot.MoveStop("홈검색 실패");

				PUB.log.AddE(string.Format("Enter Error Step 1 : {0}", PUB.Result.ResultMessage));
			}

			//lbMsgR.ProgressEnable = false;

			DIO.SetBuzzer(true);
			DIO.SetPortMotor(0, eMotDir.CW, false, "ERROR");
			DIO.SetPortMotor(1, eMotDir.CW, false, "ERROR");
			DIO.SetPortMotor(2, eMotDir.CW, false, "ERROR");

            //컨베어멈춤
            DIO.SetOutput(AR.eDOName.LEFT_CONV, false);
            DIO.SetOutput(AR.eDOName.RIGHT_CONV, false);
        }
	}
}
