2026-01-26 18:56:53 +09:00

166 lines
6.1 KiB
C#

/*
* Copyright (c) 2025 LG Electronics Inc.
* SPDX-License-Identifier: LicenseRef-LGE-Proprietary
*/
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<string> GetSubDirNames(SubSysInfo subSysInfo, DateTime dateTime) {
try {
var subDirNames = new List<string>();
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<string> GetSubDirNames(SubSysInfo subSysInfo, eSaveDataType saveDataType) {
try {
var subDirNames = new List<string>();
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<string> 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<string> GetMaterialInfoDirNames(MaterialInfo materialInfo) {
var subDirNames = new List<string>();
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<string> 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;
}
}
}