using System; using System.Collections.ObjectModel; using System.Reactive.Linq; using Aurora; using Aurora.Api; namespace VisionCommon { public class VisionSettingManager { public static VisionSetting VisionSetting { get; set; } private static bool _IsInitialized = false; public static void Initialize() { if (!_IsInitialized) { VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_SETTING_CHANGED) .Where(msg => (string)msg.Param == VisionKeys.VisionSettingKey).Subscribe(x => UpdateVisionSetting()); UpdateVisionSetting(); _IsInitialized = true; } } private static void UpdateVisionSetting() { VisionSetting = VisionEnv.AuroraEnv.SettingEntry[VisionKeys.VisionSettingKey] as VisionSetting; CheckCamPatternSetting(); } private static void CheckCamPatternSetting() { if (_IsInitialized) { if (!VisionSetting.UseCamPattern) { foreach (var fovInfo in VisionRecipeManager.GetFovInfos()) { var fovRecipe = VisionRecipeManager.GetFovRecipe(fovInfo); foreach (var procPattern in fovRecipe.PatternRecipe.ProcPatternInfos) { if (!procPattern.IsFovPattern) { procPattern.IsFovPattern = true; procPattern.PatternId = -1; } } if (!fovRecipe.CalFovRecipe.IsFovPattern) { fovRecipe.CalFovRecipe.IsFovPattern = true; fovRecipe.CalFovRecipe.PatternId = -1; } if (fovRecipe.FovSetupRecipe.VisionRepeatRecipe != null) { if (!fovRecipe.FovSetupRecipe.VisionRepeatRecipe.IsFovPattern) { fovRecipe.FovSetupRecipe.VisionRepeatRecipe.IsFovPattern = true; fovRecipe.FovSetupRecipe.VisionRepeatRecipe.PatternId = -1; } } } RecipeFileManager.SaveVisionRecipe(); } } } } }