166 lines
6.1 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|