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

136 lines
7.0 KiB
C#

using Aurora.Api;
using System;
using System.Reactive.Linq;
namespace VisionCommon {
public class VisionEventId {
// Camera
public static string CAMERA_UPDATE_GRAB_IMAGE_BUFFER = "Camera_UpdateGrabImageBuffer";
// Pattern
public static string PATTERN_FORCE_OK_REQUEST = "Pattern_ForceOkRequest";
public static string PATTERN_EDITTING = "Pattern_Editting";
// Vision UI Update
public static string CALIBRATION_SUB_SEQ_LOG_UPDATE = "Calibration_SubSeqLogUpdate";
// Vision Setup
public static string CENTERTUNING_COMPLETE = "CenterTuning_Complete";
public static string VISION_REPEAT_SAVE_PARAMS = "VisionRepeat_SaveParams";
// Update Proc Result
public static string UPDATE_PATTERN_RESULT = "UPDATE_PATTERN_RESULT";
public static string UPDATE_PATTERN_RESULTS = "UPDATE_PATTERN_RESULTS";
public static string UPDATE_PATTERN_DISTANCE_RESULTS = "PATTERN_DISTANCE_RESULTS";
public static string UPDATE_ALIGN_RESULT = "UPDATE_ALIGN_RESULT";
public static string UPDATE_ALIGN_RESULTS = "UPDATE_ALIGN_RESULTS";
public static string UPDATE_BCR_RESULT = "UPDATE_BCR_RESULT";
public static string UPDATE_ATTACH_INSP_RESULT = "UPDATE_ATTACH_INSP_RESULT";
// Update Setup Result
public static string CLEAR_AUTO_FOCUS_LOG = "CLEAR_AUTO_FOCUS_LOG";
public static string UPDATE_AUTO_FOCUS_LOG = "UPDATE_AUTO_FOCUS_LOG";
public static string UPDATE_AUTO_FOCUS_BEST_POS = "UPDATE_AUTO_FOCUS_BEST_POS";
public static string UPDATE_VISION_REPEAT_LOG = "UPDATE_VISION_REPEAT_LOG";
// Show Fov Camera View Window
public static string SHOW_FOV_CAMERA_VIEW_WINDOW = "SHOW_FOV_CAMERA_VIEW_WINDOW";
// Save Child Image Buffer Setting
public static string SAVE_CHILD_IMAGE_SETTING = "SAVE_CHILD_IMAGE_SETTING";
// 다른 레시피/모델로 변경 및 항목 변경
public static IObservable<EventMessage> GetRecipeUpdateObservable() {
var visionSetting = VisionSettingManager.VisionSetting;
if (visionSetting.RecipeModelType == eRecipeModelType.AuroraModel) {
return Observable.Merge(
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_RECIPE_ACTIVATED),
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_MODEL_NAME_CHANGED),
//VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_MODEL_RELOADED),
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_MODEL_ITEM_CHANGED))
.Where(msg => CheckEventParam(msg));
}
else if (visionSetting.RecipeModelType == eRecipeModelType.AuroraIngredient) {
return Observable.Merge(
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_INGREDIENT_ACTIVATED),
//VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_INGREDIENT_RELOADED),
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_INGREDIENT_ITEM_CHAGNED))
.Where(msg => CheckEventParam(msg));
}
else {
return Observable.Merge(
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_RECIPE_ACTIVATED),
//VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_RECIPE_RELOADED),
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_RECIPE_ITEM_CHANGED))
.Where(msg => CheckEventParam(msg));
}
}
// 다른 레시피/모델로 변경
public static IObservable<EventMessage> GetRecipeActivatedObservable() {
var visionSetting = VisionSettingManager.VisionSetting;
if (visionSetting.RecipeModelType == eRecipeModelType.AuroraModel) {
return Observable.Merge(
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_RECIPE_ACTIVATED),
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_MODEL_NAME_CHANGED))
.Where(msg => CheckEventParam(msg));
}
else if (visionSetting.RecipeModelType == eRecipeModelType.AuroraIngredient) {
return VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_INGREDIENT_ACTIVATED)
.Where(msg => CheckEventParam(msg));
}
else {
return Observable.Merge(
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_RECIPE_ACTIVATED))
.Where(msg => CheckEventParam(msg));
}
}
// 레시피/모델 항목 변경
public static IObservable<EventMessage> GetRecipeItemChangedObservable() {
var visionSetting = VisionSettingManager.VisionSetting;
if (visionSetting.RecipeModelType == eRecipeModelType.AuroraModel) {
return Observable.Merge(
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_MODEL_RELOADED),
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_MODEL_ITEM_CHANGED))
.Where(msg => CheckEventParam(msg));
}
else if (visionSetting.RecipeModelType == eRecipeModelType.AuroraIngredient) {
return Observable.Merge(
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_INGREDIENT_RELOADED),
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_INGREDIENT_ITEM_CHAGNED))
.Where(msg => CheckEventParam(msg));
}
else {
return Observable.Merge(
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_RECIPE_RELOADED),
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_RECIPE_ITEM_CHANGED))
.Where(msg => CheckEventParam(msg));
}
}
private static bool IsActivatedParam(EventMessage msg) {
return (string)msg.Param == string.Empty;
}
private static bool CheckEventParam(EventMessage msg) {
if (msg.Param is RecipeInfo recipeInfo)
return true;
else if (msg.Param is string) {
return (string)msg.Param == string.Empty || (string)msg.Param == VisionKeys.VisionRecipeKey;
}
else if (msg.Param is ValueTuple<string, string> param) {
if (msg.From.Contains("Model")) {
// Model
return true;
}
else {
// Ingredient
return param.Item1 == VisionKeys.VisionRecipeKey;
}
}
else
return false;
}
}
}