using Aurora.Api; using System; using System.Collections.Generic; namespace VisionCommon { public enum TactTimeType { ProcSeq, // 공정 시퀀스 (AlignProcSeq_DpBaseTransferAlign / ..) UpdateUI, // UI 업데이트 Grab, // 이미지 취득 CopyImage, // 이미지 복사 FlipImage, // 이미지 반전 RotateImage, // 이미지 회전 BinarizeImage, // 이미지 이진화 SaveImage, // 이미지 저장 ConvertImage // 이미지 컨버팅 } public class TactTimeChecker { private Logger _Logger; private Dictionary Stopwatches = new Dictionary(); private string _Subject; public TactTimeChecker(string subject) { _Subject = subject; _Logger = new Logger(string.Format("TactTimeChecker[{0}]", _Subject)); } // 택 타임 측정 시작시 사용 public void Start(TactTimeType tactTimeType, string funcName = "") { try { // key : IMG_GRAB_GrabSync_CAM1 (ex) var key = tactTimeType.ToString() + "_" + funcName + "_" + _Subject; Stopwatches[key] = DateTime.Now; PrintLog(tactTimeType, funcName, "START"); } catch (Exception e) { _Logger.FuncE(e.Message); } } // 택 타임 측정 종료시 사용 public void Stop(TactTimeType tactTimeType, string funcName = "") { try { // key : ALIGN_SEQ_GRAB_Dp1_CellAlign (ex) var key = tactTimeType.ToString() + "_" + funcName + "_" + _Subject; if (Stopwatches.ContainsKey(key)) { PrintLog(tactTimeType, funcName, "END", (int)(DateTime.Now - Stopwatches[key]).TotalMilliseconds); } } catch (Exception e) { _Logger.FuncE(e.Message); } } private void PrintLog(TactTimeType tactTimeType, string funcName, string logType, int time = 0) { switch (logType) { case "START": if (funcName != "") _Logger.D(string.Format("[{0}][{1}] ----- {2} -----", tactTimeType, funcName, logType)); else _Logger.D(string.Format("[{0}] ----- {1} -----", tactTimeType, logType)); break; case "END": if (funcName != "") _Logger.D(string.Format("[{0}][{1}] ------ {2} ------ [{3} ms]", tactTimeType, funcName, logType, time)); else _Logger.D(string.Format("[{0}] ------ {1} ------ [{2} ms]", tactTimeType, logType, time)); break; case "TIMEOUT": if (funcName != "") _Logger.D(string.Format("[{0}][{1}] ----- {2} ----- [{3} ms]", tactTimeType, funcName, logType, time)); else _Logger.D(string.Format("[{0}] ----- {1} ----- [{2} ms]", tactTimeType, logType, time)); break; } } } }