177 lines
6.3 KiB
C#
177 lines
6.3 KiB
C#
using Aurora.Api.Devices;
|
|
using DataHub;
|
|
using Hermes.Functional;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace VisionCommon.DB.Align {
|
|
public class VisionAlignDB: IMongoItemEntity {
|
|
#region key properties
|
|
// Key
|
|
[Browsable(false)]
|
|
public string _id { get; set; }
|
|
public DateTime? TimeStamp { get; set; }
|
|
public AlignInfo AlignInfo { get; set; }
|
|
public string RecipeModelType { get; set; }
|
|
public string RecipeModelName { get; set; }
|
|
public MaterialInfo MaterialInfo { get; set; }
|
|
public FlyingInfo FlyingInfo { get; set; }
|
|
#endregion
|
|
#region data properties
|
|
public string SeqStartDate { get; set; }
|
|
public int SeqId { get; set; }
|
|
public bool IsDryRunMode { get; set; } = false;
|
|
public string SeqMode { get; set; }
|
|
|
|
|
|
/// Result
|
|
public SeqTime SeqTime { get; set; }
|
|
public Position Delta { get; set; }
|
|
public string AlignAlgorithm { get; set; } = eAlignAlgorithm.AVG.ToString();
|
|
public int AlignCntIndex { get; set; } = 0;
|
|
/// <summary>
|
|
/// eAlignStatus
|
|
/// </summary>
|
|
public string AlignStatus { get; set; }
|
|
|
|
// Key : FovId
|
|
public List<PatternResultDB> PatternResults { get; set; }
|
|
public AlignRecipe AlignRecipe { get; set; }
|
|
#endregion
|
|
#region constructor
|
|
/// <summary>
|
|
/// 사용 X, Deserialize를 위한 constructor
|
|
/// </summary>
|
|
public VisionAlignDB() { }
|
|
|
|
public VisionAlignDB(AlignInfo alignInfo, eSeqMode alignSeqMode, int seqId = 0) {
|
|
var visionSetting = VisionSettingManager.VisionSetting;
|
|
AlignInfo = alignInfo;
|
|
RecipeModelType = visionSetting.RecipeModelType.ToString();
|
|
RecipeModelName = visionSetting.RecipeModelType == eRecipeModelType.AuroraRecipe ? VisionEnv.AuroraEnv.RecipeManager.ActivatedRecipe().Name :
|
|
VisionEnv.AuroraEnv.RecipeManager.ActivatedModelName();
|
|
AlignRecipe = VisionRecipeManager.GetAlignRecipe(alignInfo).Clone();
|
|
SeqMode = alignSeqMode.ToString();
|
|
|
|
// Create Instance Data
|
|
SeqTime = new SeqTime() { AlignSeqStart = DateTime.Now };
|
|
MaterialInfo = new MaterialInfo();
|
|
FlyingInfo = new FlyingInfo();
|
|
SeqStartDate = DateTime.Now.ToShortDateString();
|
|
PatternResults = new List<PatternResultDB>();
|
|
SeqId = seqId;
|
|
}
|
|
#endregion
|
|
#region alloc methods
|
|
|
|
public void AllocAlignResult(AlignResult alignResult) {
|
|
Delta = alignResult.Delta.ToPosition();
|
|
AlignAlgorithm = alignResult.AlignAlgorithm.ToString();
|
|
AlignCntIndex = alignResult.AlignCnt;
|
|
AlignStatus = alignResult.Status.ToString();
|
|
AllocPatternResults(alignResult.PatternResults);
|
|
}
|
|
|
|
public void AllocPatternResults(Dictionary<FovInfo, PatternResult> patternResults) {
|
|
var keys = patternResults.Keys;
|
|
keys.ForEach(x => PatternResults.Add(new PatternResultDB(patternResults[x])));
|
|
}
|
|
#endregion
|
|
#region set methods
|
|
public void SetMaterialInfo(MaterialInfo materialInfo) {
|
|
MaterialInfo = materialInfo;
|
|
}
|
|
|
|
public void SetFlyingInfo(FlyingInfo flyingInfo) {
|
|
FlyingInfo = flyingInfo;
|
|
}
|
|
|
|
public void SetSeqEnd() {
|
|
SeqTime.AlignSeqEnd = DateTime.Now;
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
#region VisionAlignDB Components ( for deserialize )
|
|
/// <summary>
|
|
/// Sequence Time
|
|
/// </summary>
|
|
public class SeqTime {
|
|
public DateTime AlignSeqStart { get; set; }
|
|
public DateTime AlignSeqEnd { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Flying Info
|
|
/// </summary>
|
|
public class FlyingInfo {
|
|
public bool UseFlying { get; set; } = false;
|
|
public int FlyingSeqId { get; set; }
|
|
public FlyingInfo() {
|
|
UseFlying = false;
|
|
FlyingSeqId = 0;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Patter Result를 DB 화 시킨 Class
|
|
/// </summary>
|
|
public class PatternResultDB {
|
|
private PatternResult patternResult;
|
|
public PatternResultDB(PatternResult patternResult) {
|
|
this.patternResult = patternResult;
|
|
|
|
GrabTime = new Random().Next(1, 30);
|
|
PatternInfo = new PatternInfoDB(
|
|
patternResult?.PatternIndex ?? new PatternIndex(eUnitId.Unit1, eSubSysId.SubSys1, eFovId.Fov1, -1),
|
|
"Description", patternResult?.PatternType.ToString() ?? "", patternResult?.PatternName ?? "");
|
|
FoundStatus = patternResult?.Status.ToString() ?? "";
|
|
TactTime = patternResult?.TactTimeInMilliSec ?? -1;
|
|
ImagePath = @":c\test";
|
|
OverlayImagePath = @":c\test";
|
|
Results = patternResult?.Results.ToList() ?? null;
|
|
FovId = patternResult?.FovId.ToString() ?? "";
|
|
}
|
|
|
|
public PatternResultDB() {
|
|
PatternInfo = new PatternInfoDB();
|
|
Results = new List<BaseResult>();
|
|
}
|
|
|
|
public double GrabTime { get; set; }
|
|
public string FovId { get; set; }
|
|
public PatternInfoDB PatternInfo { get; set; }
|
|
public string FoundStatus { get; set; }
|
|
public double TactTime { get; set; }
|
|
public string ImagePath { get; set; }
|
|
public string OverlayImagePath { get; set; }
|
|
public List<BaseResult> Results { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Pattern Info를 DB 화 시킨 Class
|
|
/// </summary>
|
|
public class PatternInfoDB {
|
|
public int PatternId { get; set; } = 0;
|
|
public int PatternSubId { get; set; } = 0;
|
|
public string Description { get; set; } = "";
|
|
public string PatternType { get; set; } = "";
|
|
public string PatternName { get; set; } = "";
|
|
|
|
public PatternInfoDB(PatternIndex patternIndex, string description, string patternType, string patternName) {
|
|
PatternId = patternIndex.PatternId;
|
|
PatternSubId = patternIndex.PatternSubId;
|
|
Description = description;
|
|
PatternType = patternType;
|
|
PatternName = patternName;
|
|
}
|
|
public PatternInfoDB() {
|
|
}
|
|
}
|
|
#endregion
|
|
}
|