///*
// * Created by SharpDevelop.
// * User: amkor
// * Date: 5/16/2018
// * Time: 3:08 PM
// *
// * To change this template use Tools | Options | Coding | Edit Standard Headers.
// */
//using System;
//namespace Project
//{
// public static class Util_DO
// {
// ///
// /// ADLink I/O Board input status
// ///
// ///
// ///
// public static Boolean GetIOInput(eDIName pin)
// {
// var curValue = Pub.dio.INPUT(GetDINum(pin) - 1);
// if (pin == eDIName.EMERGENCY ||
// pin == eDIName.PCB_PUSHER_END ||
// pin == eDIName.PCB_PUSHER_HOME ||
// pin == eDIName.PCB_IN_MGZ ||
// pin == eDIName.PCB_OVERLOAD ||
// pin == eDIName.PCB_PUSHER_OVR)
// {
// return !curValue;
// }
// else return curValue;
// }
// ///
// /// ADLink I/O Board Output Status
// ///
// ///
// ///
// public static Boolean GetIOOutput(eDOName pin)
// {
// return Pub.dio.OUTPUT(GetDONum(pin) - 1);
// }
// ///
// /// A/D Link Digital input Pin number
// ///
// ///
// ///
// public static int GetDINum(eDIName pin)
// {
// return (int)pin + 1;
// //return Pub.setting.DI[(byte)pin];
// }
// ///
// /// adlink digital output in number
// ///
// ///
// ///
// public static int GetDONum(eDOName pin)
// {
// return (int)pin + 1;
// //return Pub.setting.DO[(byte)pin];
// }
// ///
// /// 도어각 닫혀있는 경우 TRUE,
// ///
// ///
// public static Boolean CheckDoorSafty()
// {
// var door1 = CheckDoorSafty_Front();
// var door2 = CheckDoorSafty_Rear();
// var door3 = CheckDoorSafty_Left();
// var door4 = CheckDoorSafty_Right();
// if (door1 && door2 && door3 && door4) return true;
// else return false;
// }
// public static Boolean CheckDoorSafty_Front()
// {
// var door = GetIOInput(eDIName.DOOR_FRONT) || Pub.setting.DisableDoorFront;
// return door;
// }
// public static Boolean CheckDoorSafty_Rear()
// {
// var door = GetIOInput(eDIName.DOOR_REAR) || Pub.setting.DisableDoorRear;
// return door;
// }
// public static Boolean CheckDoorSafty_Left()
// {
// var door = GetIOInput(eDIName.DOOR_LEFT) || Pub.setting.DisableDoorLeft;
// return door;
// }
// public static Boolean CheckDoorSafty_Right()
// {
// var door = GetIOInput(eDIName.DOOR_RIGHT) || Pub.setting.DisableDoorRight;
// return door;
// }
// public static Boolean checkMGZReady()
// {
// var ready1 = GetIOInput(eDIName.MGZ_CLAMP_RDY1);
// var ready2 = GetIOInput(eDIName.MGZ_CLAMP_RDY2);
// return ready1 && ready2;
// }
// public static Boolean SetAIR(Boolean ON)
// {
// if (Pub.dio == null || !Pub.dio.IsInit) return false;
// return Pub.dio.SetOutput(GetDONum(eDOName.MAIN_AIR) - 1, ON);
// }
// //public static Boolean SetEMGLamp(Boolean ON)
// //{
// // if (Pub.dio == null || !Pub.dio.initOK) return false;
// // return Pub.dio.SetOutput(GetDONum(eDOName.em) - 1, ON);
// //}
// public static Boolean SetPusher(eMotDir Direction)
// {
// if (Pub.dio == null || !Pub.dio.IsInit) return false;
// if (Direction == eMotDir.CW)
// {
// if(Util_DO.GetIOInput( eDIName.MGZ_CLAMP_RDY1)==false &&
// Util_DO.GetIOInput(eDIName.MGZ_CLAMP_RDY2)==false)
// {
// Pub.log.AddE("매거진이 없어서 푸셔 작동이 불가 합니다");
// return false;
// }
// Pub.dio.SetOutput(GetDONum(eDOName.PCB_PUSHER_DIR) - 1, true);
// return Pub.dio.SetOutput(GetDONum(eDOName.PCB_PUSHER_RUN) - 1, true);
// }
// else if (Direction == eMotDir.CCW)
// {
// Pub.dio.SetOutput(GetDONum(eDOName.PCB_PUSHER_DIR) - 1, false);
// return Pub.dio.SetOutput(GetDONum(eDOName.PCB_PUSHER_RUN) - 1, true);
// }
// else
// {
// return Pub.dio.SetOutput(GetDONum(eDOName.PCB_PUSHER_RUN) - 1, false);
// }
// }
// public static Boolean SetMGZMotor(Boolean run)
// {
// if (Pub.dio == null || !Pub.dio.IsInit) return false;
// if (run)
// {
// Pub.MGZRunTime = DateTime.Now;
// Pub.log.Add("MGZ In Run : " + Pub.MGZRunTime.ToString());
// return Pub.dio.SetOutput((int)eDOName.MGZ_IN, true);
// }
// else
// {
// return Pub.dio.SetOutput((int)eDOName.MGZ_IN, false);
// }
// }
// #region "Tower Lamp"
// ///
// /// 타워램프버튼 작업
// ///
// ///
// ///
// ///
// public static void SetTWLamp(Boolean r, Boolean g, Boolean y)
// {
// if (Pub.dio == null || !Pub.dio.IsInit) return;
// if (Util_DO.GetIOOutput(eDOName.TWR_GRN) != g) Pub.dio.SetOutput(GetDONum(eDOName.TWR_GRN) - 1, g);
// if (Util_DO.GetIOOutput(eDOName.TWR_RED) != r) Pub.dio.SetOutput(GetDONum(eDOName.TWR_RED) - 1, r);
// if (Util_DO.GetIOOutput(eDOName.TWR_YEL) != y) Pub.dio.SetOutput(GetDONum(eDOName.TWR_YEL) - 1, y);
// if (Util_DO.GetIOOutput(eDOName.LED_START) != g) Pub.dio.SetOutput(GetDONum(eDOName.LED_START) - 1, g);
// if (Util_DO.GetIOOutput(eDOName.LED_STOP) != r) Pub.dio.SetOutput(GetDONum(eDOName.LED_STOP) - 1, r);
// if (Util_DO.GetIOOutput(eDOName.LED_RESET) != y) Pub.dio.SetOutput(GetDONum(eDOName.LED_RESET) - 1, y);
// }
// public static Boolean SetTwRed(Boolean ON)
// {
// if (Pub.dio == null || !Pub.dio.IsInit) return false;
// Pub.dio.SetOutput(GetDONum(eDOName.LED_STOP) - 1, ON);
// return Pub.dio.SetOutput(GetDONum(eDOName.TWR_RED) - 1, ON);
// }
// public static Boolean SetTwYel(Boolean ON)
// {
// if (Pub.dio == null || !Pub.dio.IsInit) return false;
// Pub.dio.SetOutput(GetDONum(eDOName.LED_RESET) - 1, ON);
// return Pub.dio.SetOutput(GetDONum(eDOName.TWR_YEL) - 1, ON);
// }
// public static Boolean SetTwGrn(Boolean ON)
// {
// if (Pub.dio == null || !Pub.dio.IsInit) return false;
// Pub.dio.SetOutput(GetDONum(eDOName.LED_START) - 1, ON);
// return Pub.dio.SetOutput(GetDONum(eDOName.TWR_GRN) - 1, ON);
// }
// #endregion
// public static void ToggleRoomLight()
// {
// var current = Util_DO.GetIOOutput(eDOName.ROOM_LIGHT);
// Pub.dio.SetOutput((int)eDOName.ROOM_LIGHT, !current);
// }
// public static Boolean SetBrake(Boolean ON)
// {
// if (Pub.dio == null || !Pub.dio.IsInit) return false;
// return Pub.dio.SetOutput(GetDONum(eDOName.BRAKE_OFF) - 1, !ON);
// }
// public static Boolean SetBuzzer(Boolean ON)
// {
// if (Pub.dio == null || !Pub.dio.IsInit) return false;
// if (ON)
// {
// Pub.BuzzerTime = DateTime.Now;
// if (Pub.setting.EnableBuzzer == false) return true; //부저기능OFF시 사용 안함
// }
// if (ON && Pub.setting.EnableBuzzer==false)
// {
// Pub.log.AddAT("buzzer Disabled");
// ON = false;
// }
// return Pub.dio.SetOutput(GetDONum(eDOName.BUZZER) - 1, ON);
// }
// public static Boolean getBrakeOn()
// {
// if (Pub.dio == null || !Pub.dio.IsInit) return false;
// return !GetIOOutput(eDOName.BRAKE_OFF);
// }
// public static Boolean setGripper(Boolean close)
// {
// if (Pub.dio == null || !Pub.dio.IsInit) return false;
// var rlt = Pub.dio.SetOutput(GetDONum(eDOName.PCB_GRIPPER_CLOSE) - 1, close);
// if (!rlt) Pub.log.AddE("Grip Set Error vlaue=" + close.ToString());
// else
// {
// System.Threading.Thread.Sleep(Pub.setting.GripperOnOffDelay);
// //Pub.log.Add("DELAY:GRIP:" + Pub.setting.GripperOnOffDelay);
// }
// return rlt;
// }
// public static Boolean setMGZClamp(Boolean close)
// {
// if (Pub.dio == null || !Pub.dio.IsInit) return false;
// bool rlt1, rlt2;
// if (close)
// {
// rlt1 = Pub.dio.SetOutput((int)eDOName.MGZ_CLAMP_OPEN, false);
// rlt2 = Pub.dio.SetOutput((int)eDOName.MGZ_CLAMP_CLOSE, true);
// }
// else
// {
// rlt2 = Pub.dio.SetOutput((int)eDOName.MGZ_CLAMP_CLOSE, false);
// rlt1 = Pub.dio.SetOutput((int)eDOName.MGZ_CLAMP_OPEN, true);
// }
// Pub.log.AddAT("gripper set close = " + close.ToString());
// if (rlt1 == false || rlt2 == false) Pub.log.AddE("Grip Set Error vlaue=" + close.ToString());
// else
// {
// System.Threading.Thread.Sleep(Pub.setting.GripperOnOffDelay);
// // Pub.log.Add("DELAY:GRIP:" + Pub.setting.GripperOnOffDelay);
// }
// return rlt1 && rlt2;
// }
// }
//}