136 lines
7.0 KiB
C#
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;
|
|
}
|
|
}
|
|
} |