using System; using System.IO; using System.Collections.Generic; using Aurora.Api; namespace VisionCommon { public class ImagePathManager { private static Logger _Logger = new Logger("ImagePathManager"); private static readonly object _Lock = new object(); public static ImagePathManager _Instance; public static ImagePathManager Instance { get { lock (_Lock) { if (_Instance == null) { _Instance = new ImagePathManager(); } return _Instance; } } } private ImagePathManager() { } public static string GetRootDirPath() { try { var rootDirPath = Path.Combine(VisionSettingManager.VisionSetting.RootDirPath, "Image"); if (!Directory.Exists(rootDirPath)) { Directory.CreateDirectory(rootDirPath); } return rootDirPath; } catch (Exception e) { _Logger.FuncE(e.Message); } return string.Empty; } public List GetSubDirNames(SubSysInfo subSysInfo, DateTime dateTime) { try { var subDirNames = new List(); subDirNames.Add(VisionRecipeManager.GetUnitName(subSysInfo.UnitId)); subDirNames.Add(subSysInfo.SubSysName); subDirNames.Add(dateTime.ToString("yyMMdd")); return subDirNames; } catch (Exception e) { _Logger.FuncE(e.Message); } return null; } public List GetSubDirNames(SubSysInfo subSysInfo, eSaveDataType saveDataType) { try { var subDirNames = new List(); subDirNames.Add(VisionRecipeManager.GetUnitName(subSysInfo.UnitId)); subDirNames.Add(subSysInfo.SubSysName); subDirNames.Add(DateTime.Now.ToString("yyMMdd")); subDirNames.Add(saveDataType.ToString()); return subDirNames; } catch (Exception e) { _Logger.FuncE(e.Message); } return null; } public List GetSubDirNames(FovInfo fovInfo, MaterialInfo materialInfo) { try { var subDirNames = GetMaterialInfoDirNames(materialInfo); subDirNames.Add(VisionRecipeManager.GetUnitName(fovInfo.UnitId)); subDirNames.Add(fovInfo.SubSysName); subDirNames.Add(DateTime.Now.ToString("yyMMdd")); return subDirNames; } catch (Exception e) { _Logger.FuncE(e.Message); } return null; } private List GetMaterialInfoDirNames(MaterialInfo materialInfo) { var subDirNames = new List(); if (materialInfo != null) { if (VisionSettingManager.VisionSetting.UseLotId) { if (materialInfo.LotId != null && materialInfo.LotId != string.Empty) { subDirNames.Add("LID_" + materialInfo.LotId); } else { subDirNames.Add("LID_EMPTY"); } } if (VisionSettingManager.VisionSetting.UseCarrierId) { if (materialInfo.CarrierId != null && materialInfo.CarrierId != string.Empty) { subDirNames.Add("CID_" + materialInfo.CarrierId); } else { subDirNames.Add("CID_EMPTY"); } } } return subDirNames; } public string GetDirPath(List subDirNames) { try { string dirPath = GetRootDirPath(); foreach (string subDirName in subDirNames) { dirPath = Path.Combine(dirPath, subDirName); } return dirPath; } catch (Exception e) { _Logger.FuncE(e.Message); } return string.Empty; } public string GetFileNameWithDataTime(string fileName, eImageFormat imgFormat = eImageFormat.PNG, string timeStamp = null) { try { string date = DateTime.Now.ToString("yyMMdd"); string time = (timeStamp != null)? ConvertTimeStampFormat(timeStamp) : DateTime.Now.ToString("HHmmss.ff"); return date + "_" + time + "_" + fileName + "." + imgFormat.ToString().ToLower(); } catch (Exception e) { _Logger.FuncE(e.Message); } return string.Empty; } public string ConvertTimeStampFormat(string timeStamp) { var convertedTimeStamp = (string)timeStamp.Clone(); // 원본 포맷 >> "17:21:35:64" convertedTimeStamp = convertedTimeStamp.Replace(":", ""); // ":" 제거 >> "17213564" convertedTimeStamp = convertedTimeStamp.Insert(convertedTimeStamp.Length - 2, "."); // 마지막 두자리수 앞에 "." 삽입 >> "172135.64" return convertedTimeStamp; } public string GetFileNameWithMaterialInfo(string subSysName, string fovName, string status, MaterialInfo materialInfo) { string fileName = subSysName + "_" + fovName + "_" + status; if (materialInfo != null) { if (VisionSettingManager.VisionSetting.UseMaterialId) { if (materialInfo.MaterialId != null && materialInfo.MaterialId != string.Empty) { fileName = "MID_" + materialInfo.MaterialId + "_" + subSysName + "_" + fovName + "_" + status; } else { fileName = "MID_EMPTY" + "_" + subSysName + "_" + fovName + "_" + status; } } } return fileName; } } }