79 lines
3.2 KiB
C#
79 lines
3.2 KiB
C#
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<string, DateTime> Stopwatches = new Dictionary<string, DateTime>();
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
} |