543 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			543 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using AR;
 | |
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Linq;
 | |
| using System.Text;
 | |
| 
 | |
| 
 | |
| namespace Project
 | |
| {
 | |
| 	
 | |
| 	public class CResult
 | |
| 	{
 | |
| 		public enum eInspectResult
 | |
| 		{
 | |
| 			NG = 0,
 | |
| 			OK,
 | |
| 			ERROR,
 | |
| 			NOTSET = 9,
 | |
| 		}
 | |
| 
 | |
| 		public UInt64 OptionValue = 0;
 | |
| 		public UInt64 OptionValueData = 0;
 | |
| 
 | |
| 		public List<Class.RegexPattern> BCDPattern;
 | |
| 		public List<Class.RegexPattern> BCDIgnorePattern;
 | |
| 
 | |
| 		public DateTime ResetButtonDownTime = DateTime.Now;
 | |
| 		public Boolean ClearAllSID = false;
 | |
| 		public Class.CHistorySIDRef SIDReference;         //SIDLIST받은 내역
 | |
| 		public List<UIControl.CItem> OUTHistory;    //출고포트 처리내역
 | |
| 		public DataSet1.SIDHistoryDataTable SIDHistory; //sID별 rid 전체 목록 차수별로만 저장된다
 | |
| 
 | |
|         public DataSet1.K4EE_Component_Reel_SID_ConvertDataTable DTSidConvert;
 | |
|         public List<string> DTSidConvertEmptyList;
 | |
|         public List<string> DTSidConvertMultiList;
 | |
| 
 | |
|         public DSList dsList;
 | |
| 
 | |
| 		public ModelInfoM mModel;      //모션 모델 
 | |
| 		public ModelInfoV vModel;        //작업 모델
 | |
| 
 | |
| 		/// <summary>
 | |
| 		/// 아이템의 정보가 담겨있다 (0:왼쪽,1:비젼,2:오른쪽)
 | |
| 		/// </summary>
 | |
| 		public Class.JobData ItemDataL = new Class.JobData(0);
 | |
| 		public Class.JobData ItemDataC = new Class.JobData(1);
 | |
| 		public Class.JobData ItemDataR = new Class.JobData(2);
 | |
| 
 | |
| 		public Guid guid = new Guid();
 | |
| 
 | |
| 		public string JobType2 = string.Empty;
 | |
| 		public Boolean JobFirst
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				return VAR.I32[(int)eVarInt32.PickOnCount] == 0;
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		public Boolean DryRun
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				if (string.IsNullOrEmpty(JobType2)) return false;
 | |
| 				else return JobType2.ToUpper() == "DRY";
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		public int OverLoadCountF { get; set; }
 | |
| 		public int OverLoadCountR { get; set; }
 | |
| 
 | |
| 		public UIControl.CItem UnloaderItem = null;
 | |
| 		public DateTime LastExtInputTime = DateTime.Parse("1982-11-23");
 | |
| 		public DateTime LastOutTime = DateTime.Parse("1982-11-23");
 | |
| 
 | |
| 		public Single[] PortAlignWaitSec = new float[] { 0, 0, 0, 0 };
 | |
| 		public long[] PortAlignTime = new long[] { 0, 0, 0, 0 };
 | |
| 
 | |
| 		public byte UnloaderSeq = 0;
 | |
| 		public DateTime UnloaderSeqTime;
 | |
| 		public DateTime UnloaderSendtime = DateTime.Parse("1982-11-23");
 | |
| 
 | |
| 		/// <summary>
 | |
| 		/// 로딩에 사용하는 포트번호 (자동 판단됨)
 | |
| 		/// </summary>
 | |
| 		public int LoadPortIndex = -1;
 | |
| 
 | |
| 		/// <summary>
 | |
| 		/// 로딩시에 사용한 포트의 번호(이 값으로 수량기록 위치를 결정)
 | |
| 		/// </summary>
 | |
| 		public int LoadPickIndex = -1;
 | |
| 
 | |
| 		/// <summary>
 | |
| 		/// 최종 할당된 언로딩 포트번호(1~8)
 | |
| 		/// </summary>
 | |
| 		public int UnloadPortNo = -1;
 | |
| 		public byte LiveViewseq = 0;
 | |
| 		public string AcceptBcd = string.Empty;
 | |
| 		public DateTime AcceptBcdTime = DateTime.Now;
 | |
| 		public string AcceptSid = string.Empty;
 | |
| 
 | |
| 		//작업정보
 | |
| 		public eInspectResult Result; //작업결과가 저장됨
 | |
| 		public eResult ResultCode;
 | |
| 		public eECode ResultErrorCode;
 | |
| 		public string ResultMessage;
 | |
| 
 | |
| 		public string LastSIDFrom = string.Empty;//101 = string.Empty;
 | |
| 		public string LastSIDTo = string.Empty; // 103 = string.Empty;
 | |
| 												//public string LastSID103_2 = string.Empty;
 | |
| 		public string LastVName = string.Empty;
 | |
| 		public int LastSIDCnt = 0;
 | |
| 
 | |
| 		public Dictionary<string, string> PrintPostionList = null;
 | |
| 
 | |
| 		//작업정보(시간)
 | |
| 		public DateTime JobStartTime = DateTime.Parse("1982-11-23");
 | |
| 		public DateTime JobEndTime = DateTime.Parse("1982-11-23");
 | |
|         public TimeSpan JobRunTime()
 | |
| 		{
 | |
| 			if (JobStartTime.Year == 1982) return new TimeSpan(0);
 | |
| 			if (JobEndTime.Year == 1982) return DateTime.Now - JobStartTime;
 | |
| 			else return JobEndTime - JobStartTime;
 | |
| 		}
 | |
| 
 | |
| 		/// <summary>
 | |
| 		/// RUN -> Pause(Wait Start)모드 전환시 저장할 모터의 위치값
 | |
| 		/// 조그모드등으로 좌표를 옴길때의 기준 좌표
 | |
| 		/// 이 좌표값에서 현재 모션값에 변화가 있으면 프로그램에서는 오류로 처리하게 됨
 | |
| 		/// </summary>
 | |
| 		public double[] PreventMotionPosition = new double[8];
 | |
| 
 | |
| 		#region "SetResultMessage"
 | |
| 
 | |
| 		public void SetResultMessage(eResult code, eECode err, eNextStep systempause, params object[] args)
 | |
| 		{
 | |
| 
 | |
| 			var rltMsg = PUB.GetResultCodeMessage(code);
 | |
| 			var codeMSg = $"[E{(int)err}] ";// + Util.GetResultCodeMessage(code);
 | |
| 			if (err == eECode.MESSAGE_ERROR)
 | |
| 			{
 | |
| 				codeMSg = $"[{rltMsg} ERROR MESSAGE]\n";
 | |
| 			}
 | |
| 			else if (err == eECode.MESSAGE_INFO)
 | |
| 			{
 | |
| 				codeMSg = $"[{rltMsg} INFORMATION]\n";
 | |
| 			}
 | |
| 
 | |
| 
 | |
| 
 | |
| 			var erMsg = PUB.GetErrorMessage(err, args);
 | |
| 			var msg = codeMSg + erMsg;
 | |
| 
 | |
| 			this.ResultCode = code;
 | |
| 			this.ResultErrorCode = err;
 | |
| 			this.ResultMessage = msg;
 | |
| 
 | |
| 			if (systempause == eNextStep.PAUSENOMESAGE) this.ResultMessage = string.Empty; //210129
 | |
| 
 | |
| 			PUB.log.AddE(msg);
 | |
| 			if (systempause == eNextStep.PAUSE) PUB.sm.SetNewStep(eSMStep.PAUSE);
 | |
| 			else if (systempause == eNextStep.PAUSENOMESAGE) PUB.sm.SetNewStep(eSMStep.PAUSE);
 | |
| 			else if (systempause == eNextStep.ERROR) PUB.sm.SetNewStep(eSMStep.ERROR);
 | |
| 		}
 | |
| 
 | |
| 
 | |
| 		public void SetResultTimeOutMessage(eDOName pinName, Boolean checkState, eNextStep systemPause)
 | |
| 		{
 | |
| 			var pindef = DIO.Pin[pinName];
 | |
| 			if (checkState) SetResultMessage(eResult.SENSOR, eECode.DOON, systemPause, pindef.terminalno, pindef.name);
 | |
| 			else SetResultMessage(eResult.SENSOR, eECode.DOOFF, systemPause, pindef.terminalno, pindef.name);
 | |
| 		}
 | |
| 		public void SetResultTimeOutMessage(eDIName pinName, Boolean checkState, eNextStep systemPause)
 | |
| 		{
 | |
|             var pindef = DIO.Pin[pinName];
 | |
|             if (checkState) SetResultMessage(eResult.SENSOR, eECode.DION, systemPause, pindef.terminalno, pindef.name);
 | |
| 			else SetResultMessage(eResult.SENSOR, eECode.DIOFF, systemPause, pindef.terminalno, pindef.name);
 | |
| 		}
 | |
| 		public void SetResultTimeOutMessage(eAxis motAxis, eECode ecode, eNextStep systemPause, string source, double targetpos, string message)
 | |
| 		{
 | |
| 			SetResultMessage(eResult.TIMEOUT, ecode, systemPause, motAxis, source, targetpos, message);
 | |
| 		}
 | |
| 		public void SetResultTimeOutMessage(eECode ecode, eNextStep systemPause, params object[] args)
 | |
| 		{
 | |
| 			SetResultMessage(eResult.TIMEOUT, ecode, systemPause, args);
 | |
| 		}
 | |
| 		#endregion
 | |
| 
 | |
| 		public DateTime[] diCheckTime = new DateTime[256];
 | |
| 		public DateTime[] doCheckTime = new DateTime[256];
 | |
| 
 | |
| 		public Boolean isError { get; set; }
 | |
| 		public int retry = 0;
 | |
| 		public DateTime retryTime;
 | |
| 		public DateTime[] WaitForVar = new DateTime[255];
 | |
| 		public int ABCount = 0;
 | |
| 
 | |
| 		public CResult()
 | |
| 		{
 | |
| 			mModel = new ModelInfoM();
 | |
| 			vModel = new ModelInfoV();
 | |
| 
 | |
| 			SIDReference = new Class.CHistorySIDRef();
 | |
| 			SIDHistory = new DataSet1.SIDHistoryDataTable();
 | |
| 			BCDPattern = new List<Class.RegexPattern>();
 | |
| 			OUTHistory = new List<UIControl.CItem>();
 | |
| 
 | |
| 			this.Clear("Result ctor");
 | |
| 			dsList = new DSList();
 | |
| 			LoadListDB();
 | |
| 
 | |
|             //230509
 | |
|             if(DTSidConvert != null) DTSidConvert.Dispose();
 | |
|             DTSidConvert = new DataSet1.K4EE_Component_Reel_SID_ConvertDataTable();
 | |
|             DTSidConvertEmptyList = new List<string>();
 | |
|             DTSidConvertMultiList = new List<string>();
 | |
|         }
 | |
| 
 | |
| 		public void SaveListDB()
 | |
| 		{
 | |
| 			var finame = System.IO.Path.Combine(UTIL.CurrentPath, "Data", "SavaedList.xml");
 | |
| 			var fi = new System.IO.FileInfo(finame);
 | |
| 			if (fi.Directory.Exists == false) fi.Directory.Create();
 | |
| 			this.dsList.WriteXml(fi.FullName);
 | |
| 			PUB.log.Add("Pre-list DB saved " + fi.FullName);
 | |
| 		}
 | |
| 
 | |
| 		public void LoadListDB()
 | |
| 		{
 | |
| 			var finame = System.IO.Path.Combine(UTIL.CurrentPath, "Data", "SavaedList.xml");
 | |
| 			var fi = new System.IO.FileInfo(finame);
 | |
| 			if (fi.Directory.Exists == false) fi.Directory.Create();
 | |
| 			if (fi.Exists)
 | |
| 			{
 | |
| 				this.dsList.ReadXml(fi.FullName);
 | |
| 				PUB.log.Add("Pre-list DB loaded " + fi.FullName);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		///// <summary>
 | |
| 		///// 입력한 sid 가 원본에 존재하지 않으면 -1을 존재하면 입력된 수량을 반환합니다
 | |
| 		///// </summary>
 | |
| 		///// <param name="sid"></param>
 | |
| 		///// <returns></returns>
 | |
| 		//public int ExistSIDReferenceCheck(string sid)
 | |
| 		//{
 | |
| 		//	var dr = PUB.Result.SIDReference.Items.Where(t => t.sid.EndsWith(sid)).FirstOrDefault();
 | |
| 		//	if (dr == null) return -1;
 | |
| 		//	else return dr.kpc;
 | |
| 		//}
 | |
| 
 | |
| 
 | |
| 		//public void ClearHistory()
 | |
| 		//{
 | |
| 
 | |
| 		//	//this.JObHistory.Clear();
 | |
| 		//	this.SIDReference.Clear();
 | |
| 		//	PUB.log.AddI("Clear History");
 | |
| 		//}
 | |
| 
 | |
| 
 | |
| 		public void ClearOutPort()
 | |
| 		{
 | |
| 			OUTHistory.Clear();
 | |
| 		}
 | |
| 
 | |
| 		public void Clear(string Reason)
 | |
| 		{
 | |
| 
 | |
|             this.guid = Guid.NewGuid();
 | |
| 
 | |
| 			//프린트위치를 별도로 저장하고 있는다(나중에 추가 활용한다) 231005
 | |
| 			if (PrintPostionList == null)
 | |
| 				PrintPostionList = new Dictionary<string, string>();
 | |
| 			else
 | |
| 				PrintPostionList.Clear();
 | |
| 
 | |
|             ItemDataL.Clear(Reason);
 | |
| 			ItemDataC.Clear(Reason);
 | |
| 			ItemDataR.Clear(Reason);
 | |
| 
 | |
| 			OverLoadCountF = 0;
 | |
| 			OverLoadCountR = 0;
 | |
| 			ClearOutPort();
 | |
| 
 | |
| 			LoadPortIndex = -1;
 | |
| 
 | |
| 			if (PUB.sm != null)
 | |
| 				PUB.sm.seq.ClearTime();
 | |
| 
 | |
| 			isError = false;
 | |
| 			ABCount = 0;
 | |
| 			///기다림용 변수모듬
 | |
| 			for (int i = 0; i < WaitForVar.Length; i++)
 | |
| 				WaitForVar[i] = DateTime.Parse("1982-11-23");
 | |
| 
 | |
| 			//조그모드시 모션이동 감지용 저장 변수
 | |
| 			for (int i = 0; i < 6; i++)
 | |
| 				PreventMotionPosition[i] = 0.0;
 | |
| 
 | |
| 			//JobStartTime = DateTime.Parse("1982-11-23");
 | |
| 			//JobEndTime = DateTime.Parse("1982-11-23");
 | |
| 			//LastOutTime = DateTime.Parse("1982-11-23");
 | |
| 
 | |
| 			Result = eInspectResult.NOTSET;
 | |
| 			ResultCode = eResult.NOERROR;
 | |
| 			ResultMessage = string.Empty;
 | |
| 
 | |
| 			//시간정보값을 초기화함
 | |
| 			for (int i = 0; i < 2; i++)
 | |
| 				ClearTime(i);
 | |
| 
 | |
| 
 | |
| 
 | |
| 			PUB.log.Add("Result data initialized");
 | |
| 		}
 | |
| 
 | |
| 
 | |
| 		public void ClearTime(int shutIdx)
 | |
| 		{
 | |
| 			//JobStartTime = DateTime.Parse("1982-11-23");
 | |
| 			//JobEndTime = DateTime.Parse("1982-11-23");
 | |
| 
 | |
| 			Result = eInspectResult.NOTSET;
 | |
| 			ResultCode = eResult.NOERROR;
 | |
| 			ResultMessage = string.Empty;
 | |
| 
 | |
| 			PUB.log.Add("Result(Clear Time)");
 | |
| 		}
 | |
| 
 | |
| 		public Boolean isSetmModel
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				if (PUB.Result.mModel == null || PUB.Result.mModel.idx == -1 || PUB.Result.mModel.Title.isEmpty())
 | |
| 					return false;
 | |
| 				else return true;
 | |
| 			}
 | |
| 
 | |
| 		}
 | |
| 		public Boolean isSetvModel
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				if (PUB.Result.vModel == null || PUB.Result.vModel.idx == -1 || PUB.Result.vModel.Title.isEmpty())
 | |
| 					return false;
 | |
| 				else return true;
 | |
| 			}
 | |
| 
 | |
| 		}
 | |
| 		//public string getErrorMessage(eResult rlt, eECode err, params object[] args)
 | |
| 		//{
 | |
| 		//	switch (err)
 | |
| 		//	{
 | |
| 		//		case eECode.RIDDUPL:
 | |
| 		//			return string.Format(
 | |
| 		//				"좌측 언로더에 사용되었던 REEL ID 입니다\n" +
 | |
| 		//				"바코드 오류 가능성이 있습니다\n" +
 | |
| 		//				"좌측 릴의 바코드를 확인하시기 바랍니다\n" +
 | |
| 		//				"작업을 계속할 수 없습니다. 취소 후 다시 시도하세요\n{0}", args);
 | |
| 
 | |
| 		//		case eECode.RIDDUPR:
 | |
| 		//			return string.Format(
 | |
| 		//				"우측 언로더에 사용되었던 REEL ID 입니다\n" +
 | |
| 		//				"바코드 오류 가능성이 있습니다\n" +
 | |
| 		//				"우측 릴의 바코드를 확인하시기 바랍니다\n" +
 | |
| 		//				"작업을 계속할 수 없습니다. 취소 후 다시 시도하세요\n{0}", args);
 | |
| 
 | |
| 		//		case eECode.BARCODEVALIDERR:
 | |
| 		//			return string.Format("바코드 데이터 검증 실패\n" +
 | |
| 		//				"인쇄전 데이터와 인쇄후 데이터가 일치하지 않습니다\n" +
 | |
| 		//				"ID(O) : {1}\n" +
 | |
| 		//				"ID(N) : {2}\n" +
 | |
| 		//				"SID : {5}->{6}\n" +
 | |
| 		//				"QTY : {3}->{4}\n" +
 | |
| 		//				"DATE : {7}->{8}\n" +
 | |
| 		//				"Index : {0}", args);
 | |
| 
 | |
| 		//		case eECode.MOTX_SAFETY:
 | |
| 		//			return string.Format("PICKER-X 축이 안전위치에 없습니다\n1. 조그를 이용하여 중앙으로 이동 합니다\n2.홈 작업을 다시 실행합니다", args);
 | |
| 		//		case eECode.NOERROR:
 | |
| 		//			return string.Format("오류가 없습니다", args);
 | |
| 
 | |
| 		//		case eECode.PORTOVERLOAD:
 | |
| 		//			return string.Format("PORT OVERLOAD\n위치 : {0}\n" +
 | |
| 		//			"너무 많은 양이 적재 되었습니다\n" + "상단 LIMIT 센서에 걸리지 않게 적재하세요", args);
 | |
| 		//		case eECode.EMERGENCY:
 | |
| 		//			return string.Format("비상정지 버튼을 확인하세요\n" +
 | |
| 		//				"버튼 : F{0}\n" +
 | |
| 		//				"메인전원이 OFF 된 경우에도 이 메세지가 표시 됩니다\n" +
 | |
| 		//				"메인전원은 모니터 하단 AIR버튼 좌측에 있습니다"
 | |
| 		//				, DIO.GetIOInput(eDIName.BUT_EMGF));
 | |
| 		//		case eECode.NOMODELM:
 | |
| 		//			return "모션모델이 선택되지 않았습니다\n" +
 | |
| 		//			 "상단 메뉴 [모션모델]에서 사용할 모델을 선택하세요";
 | |
| 		//		case eECode.NOMODELV:
 | |
| 		//			return "작업모델이 선택되지 않았습니다\n" +
 | |
| 		//			 "상단 메뉴 [작업모델]에서 사용할 모델을 선택하세요";
 | |
| 
 | |
| 		//		case eECode.CARTERROR:
 | |
| 		//			return string.Format("언로더 카트가 없거나 크기 정보가 일치하지 않습니다\n좌측:{0}, 로더:{1}, 우측:{2}", args);
 | |
| 		//		case eECode.CARTL:
 | |
| 		//			return string.Format("왼쪽(UNLOAD) 포트에 카트가 감지되지 않습니다\n카트를 장착하세요\n카트크기 : {0}, 릴크기:{1}", args);
 | |
| 		//		case eECode.CARTC:
 | |
| 		//			return string.Format("중앙(LOAD) 포트에 카트가 감지되지 않습니다\n카트를 장착하세요\n카트크기 : {0}, 릴크기:{1}", args);
 | |
| 		//		case eECode.CARTR:
 | |
| 		//			return string.Format("오른쪽(UNLOAD) 포트에 카트가 감지되지 않습니다\n카트를 장착하세요\n카트크기 : {0}, 릴크기:{1}", args);
 | |
| 
 | |
| 		//		case eECode.CARTLMATCH:
 | |
| 		//			return string.Format("왼쪽(UNLOAD) 카트와 피커의 릴 크기가 일치하지 않습니다\n카트크기를 확인 하세요\n카트크기 : {0}, 릴크기:{1}", args);
 | |
| 		//		case eECode.CARTCMATCH:
 | |
| 		//			return string.Format("중앙(LOAD) 카트와 피커의 릴 크기가 일치하지 않습니다\n카트크기를 확인 하세요\n카트크기 : {0}, 릴크기:{1}", args);
 | |
| 		//		case eECode.CARTRMATCH:
 | |
| 		//			return string.Format("오른쪽(UNLOAD) 카트와 피커의 릴 크기가 일치하지 않습니다\n카트크기를 확인 하세요\n카트크기 : {0}, 릴크기:{1}", args);
 | |
| 
 | |
| 
 | |
| 		//		case eECode.NOREELSIZE:
 | |
| 		//			return string.Format("왼쪽포트에 놓을 릴의 크기정보가 없습니다\n프로그램 오류입니다\n개발자에게 해당 메세지를 전달하세요\n" +
 | |
| 		//				"장치 초기화를 진행 한 후 다시 시도하세요");
 | |
| 
 | |
| 		//		case eECode.VISION_NOCONN:
 | |
| 		//			return string.Format("카메라({0}) 연결 안됨", args);
 | |
| 
 | |
| 		//		case eECode.INCOMPLETE_LOADERDATA:
 | |
| 		//			return string.Format("로더 바코드 필수값을 읽지 못했습니다", args);
 | |
| 		//		case eECode.CAM_NOBARCODEU:
 | |
| 		//			return string.Format("언로더({0}) 바코드를 읽지 못했습니다", args);
 | |
| 		//		case eECode.HOME_TIMEOUT:
 | |
| 		//			return string.Format("홈 진행이 완료되지 않고 있습니다\n" +
 | |
| 		//				"오류가 발생했다면 '홈' 작업을 다시 진행하세요\n" +
 | |
| 		//				"대기시간 : {0}초", args);
 | |
| 
 | |
| 
 | |
| 		//		case eECode.DOORSAFTY:
 | |
| 		//			return string.Format("포트 안전센서가 감지 되었습니다\n" +
 | |
| 		//				"안전센서를 확인한 후 다시 시도하세요\n", args);
 | |
| 
 | |
| 		//		case eECode.AIRNOOUT:
 | |
| 		//			return "AIR 공급이 차단 되어 있습니다.\n" +
 | |
| 		//				"전면의 AIR 버튼을 누르세요\n" +
 | |
| 		//				"공급이 되지 않으면 메인 전원 을 확인하세요\n" +
 | |
| 		//				"메인 전원은 AIR 버튼 좌측에 있습니다" +
 | |
| 		//				"메인 전원 공급 실패시 장비 후면의 차단기를 확인하세요";
 | |
| 
 | |
| 
 | |
| 		//		case eECode.DOOFF:
 | |
| 		//			var pinoOf = (eDOName)args[0];
 | |
| 		//			return string.Format("출력이 OFF 되지 않았습니다.\n" +
 | |
| 		//			   "포트설명 : {0}\n" +
 | |
| 		//			   "포트번호 : {1} ({2})", DIO.getPinDescription(pinoOf), (int)pinoOf, Enum.GetName(typeof(eDOPin), pinoOf));
 | |
| 		//		case eECode.DOON:
 | |
| 		//			var pinoOn = (eDOName)args[0];
 | |
| 		//			return string.Format("출력이 ON 되지 않았습니다.\n" +
 | |
| 		//			   "포트설명 : {0}\n" +
 | |
| 		//			   "포트번호 : {1} ({2})", DIO.getPinDescription(pinoOn), (int)pinoOn, Enum.GetName(typeof(eDOPin), pinoOn));
 | |
| 		//		case eECode.DIOFF:
 | |
| 		//			var piniOf = (eDIName)args[0];
 | |
| 		//			return string.Format("입력이 OFF 되지 않았습니다.\n" +
 | |
| 		//			   "포트설명 : {0}\n" +
 | |
| 		//			   "포트번호 : {1} ({2})", DIO.getPinDescription(piniOf), (int)piniOf, Enum.GetName(typeof(eDIPin), piniOf));
 | |
| 		//		case eECode.DION:
 | |
| 		//			var piniOn = (eDIName)args[0];
 | |
| 		//			return string.Format("입력이 ON 되지 않았습니다.\n" +
 | |
| 		//				"포트설명 : {0}\n" +
 | |
| 		//				"포트번호 : {1} ({2})", DIO.getPinDescription(piniOn), (int)piniOn, Enum.GetName(typeof(eDIPin), piniOn));
 | |
| 
 | |
| 		//		case eECode.AZJINIT:
 | |
| 		//			return string.Format("DIO 혹은 모션카드가 초기화 되지 않았습니다.\n" +
 | |
| 		//		 "DIO    : {0}\n" +
 | |
| 		//		 "MOTION : {1}\n" +
 | |
| 		//		 "해당 카드는 본체 내부 PCI 슬롯에 장착 된 장비 입니다\n" +
 | |
| 		//		 "EzConfig AXT 프로그램으로 카드 상태를 확인하세요",
 | |
| 		//		 PUB.dio.IsInit, PUB.mot.IsInit);
 | |
| 
 | |
| 		//		case eECode.MOT_HSET:
 | |
| 		//			var msg = "모션의 HOME 검색이 완료되지 않았습니다";
 | |
| 		//			for (int i = 0; i < 6; i++)
 | |
| 		//			{
 | |
| 		//				if (PUB.mot.IsUse(i) == false) continue;
 | |
| 		//				var axis = (eAxis)i;
 | |
| 		//				var stat = PUB.mot.IsHomeSet(i);
 | |
| 		//				if (stat == false) msg += string.Format("\n[{0}] {1} : {2}", i, axis, stat);
 | |
| 		//			}
 | |
| 		//			msg += "\n장치 초기화를 실행하세요";
 | |
| 		//			return msg;
 | |
| 		//		case eECode.MOT_SVOFF:
 | |
| 		//			var msgsv = "모션 중 SERVO-OFF 된 축이 있습니다";
 | |
| 		//			for (int i = 0; i < 6; i++)
 | |
| 		//			{
 | |
| 		//				if (PUB.mot.IsUse(i) == false) continue;
 | |
| 		//				var axis = (eAxis)i;
 | |
| 		//				var stat = PUB.mot.IsServOn(i);
 | |
| 		//				if (stat == false) msgsv += string.Format("\n[{0}] {1} : {2}", i, axis, stat);
 | |
| 		//			}
 | |
| 		//			msgsv += "\nRESET을 누른 후 '모션설정' 화면에서 확인합니다";
 | |
| 		//			return msgsv;
 | |
| 		//		case eECode.MOT_HSEARCH:
 | |
| 		//			return string.Format("모션의 홈 검색이 실패되었습니다\n" +
 | |
| 		//								 "축 : {0}\n" +
 | |
| 		//								 "메세지 : {1}", args);
 | |
| 
 | |
| 		//		case eECode.MOT_CMD:
 | |
| 		//			var axisNo = (int)((eAxis)args[0]);
 | |
| 		//			var axisSrc = args[1].ToString();
 | |
| 		//			return string.Format("모션축 명령이 실패 되었습니다\n축 : {0}\n" +
 | |
| 		//				"현재위치 : {2}\n" +
 | |
| 		//				"명령위치 : {3}\n" +
 | |
| 		//				"소스 : {1}", axisNo, axisSrc, PUB.mot.GetActPos(axisNo), PUB.mot.GetActPos(axisNo));
 | |
| 
 | |
| 
 | |
| 
 | |
| 		//		//case eECode.timeout_step:
 | |
| 		//		//    return string.Format("스텝당 최대 실행 시간이 초과 되었습니다.\n" +
 | |
| 		//		//             "스텝 : {0}\n" +
 | |
| 		//		//             "최대동작시간 : " + COMM.SETTING.Data.Timeout_StepMaxTime.ToString(), args);
 | |
| 
 | |
| 
 | |
| 		//		case eECode.USER_STOP:
 | |
| 		//			return "'일시정지' 버튼 눌림\n" +
 | |
| 		//		  "사용자에 의해 작동이 중지 되었습니다\n" +
 | |
| 		//		  "'RESET' -> 'START'로 작업을 계속할 수 있습니다";
 | |
| 
 | |
| 		//		case eECode.CAM_RIGHT:
 | |
| 		//			return "우측카메라가 사용가능한 상태가 아닙니다.\n" +
 | |
| 		//				"신규 실행시에는 초기화 완료까지 기다려 주세요";
 | |
| 		//		case eECode.CAM_LEFT:
 | |
| 		//			return "좌측카메라가 사용가능한 상태가 아닙니다.\n" +
 | |
| 		//				"신규 실행시에는 초기화 완료까지 기다려 주세요";
 | |
| 		//		default:
 | |
| 		//			return err.ToString();
 | |
| 		//	}
 | |
| 
 | |
| 		//}
 | |
| 		//public string getResultCodeMessage(eResult rltCode)
 | |
| 		//{
 | |
| 		//	//별도 메세지처리없이 그대로 노출한다
 | |
| 		//	return rltCode.ToString().ToUpper();
 | |
| 		//}
 | |
| 
 | |
| 	}
 | |
| 
 | |
| }
 | 
