2026-06-05 13:44:39 +09:00

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;
}
}
}
}