From 8db304375a3fd7ade499f3ddf97df429721a0f1b Mon Sep 17 00:00:00 2001 From: choieigun Date: Tue, 17 Mar 2026 23:45:03 +0900 Subject: [PATCH] =?UTF-8?q?AutoRun=20/=20Permission=20State=20Change=20-?= =?UTF-8?q?=20Recipe=20Lock=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Machines/ILSOS_CCW_H52A/EquipmentSetup.cs | 57 +++++++++-------------- 1 file changed, 21 insertions(+), 36 deletions(-) diff --git a/Machines/ILSOS_CCW_H52A/EquipmentSetup.cs b/Machines/ILSOS_CCW_H52A/EquipmentSetup.cs index 8c548b3..000ed72 100644 --- a/Machines/ILSOS_CCW_H52A/EquipmentSetup.cs +++ b/Machines/ILSOS_CCW_H52A/EquipmentSetup.cs @@ -91,59 +91,44 @@ namespace ILSOS_CCW_H52A { seq.RunStateChanged += AutoRunSeq_RunStateChanged; } - private const ushort LogOut = 65535; // CMY - 급해서 해두긴 했는데 더 좋은 방향으로 바꾸어야함 private void AutoRunSeq_RunStateChanged(object sender, (string sequenceId, SequenceRunState state) e) { - - //AutoRun 상황에서 Recipe Save Lock - bool RecipeLockEnable = e.state != SequenceRunState.Idle; - if (ApplicationExt.PermissionLevel == LogOut) { - AuroraEnv.RecipeManager.SaveLock(CommonRecipeIds.ScannerObjectTeaching, true); - RecipeLockEnable = true; // CMY - LogOut 되어 있으면 무조건 락 - } else - AuroraEnv.RecipeManager.SaveLock(CommonRecipeIds.ScannerObjectTeaching, RecipeLockEnable); - - bool AutoRunState = e.state == SequenceRunState.Running; - Application.Current.Dispatcher.Invoke(() => { - if (AutoRunState) + //Idle 상태에서는 Permission에 따라서 Recipe Lock이 결정된다. + if (e.state == SequenceRunState.Idle) { + OnPermissionChanged(null); + } + //Running 상태에서는 무조건 Recipe Lock + else if (e.state == SequenceRunState.Running) { + Application.Current.Dispatcher.Invoke(() => { WeldingRecipeManager.OnActiveReloaded(); - else - WeldingRecipeManager.ReloadWeldingRecipe(WeldingRecipeManager.SelectedRecipe.name); + _UCRecipe.IsEnabled = false; + AuroraEnv.RecipeManager.SaveLock(CommonRecipeIds.ScannerObjectTeaching, true); + }); + } + //다른 경우는? 중복호출이 될 것 같긴한데? 사실상 Idle과 동일하게 처리하는게 나을지? + else { - if (RecipeLockEnable == false || e.state == SequenceRunState.Running) { - _UCRecipe.IsEnabled = e.state != SequenceRunState.Running; // CMY - Recipe Lock을 풀 조건이 아니면 Enable은 건드리지 않는다. - } + } - if (RecipeLockEnable) - Log.E($"AutoRun Start. Recipe Lock Enable True"); - else - Log.E("AutoRun End. Recipe Lock Enable False"); - }); + Log.E($"AutoRun State Changed[{Enum.GetName(typeof(SequenceRunState), e.state)}]."); } private void OnPermissionChanged(EventMessage message) { - bool permissionOn = ApplicationExt.PermissionLevel <= (ushort)PermissionLevel.LEVEL3; - AuroraEnv.RecipeManager.SaveLock(CommonRecipeIds.ScannerObjectTeaching, !permissionOn); + bool IsAdmin = ApplicationExt.PermissionLevel <= (ushort)eEditablePermissionLevel.Engineer; // Login 권한이 없어지면 Active된 레시피로 변경하도록 함 Application.Current.Dispatcher.Invoke(() => { - if (!permissionOn) + if (!IsAdmin) WeldingRecipeManager.OnActiveReloaded(); else WeldingRecipeManager.ReloadWeldingRecipe(WeldingRecipeManager.SelectedRecipe.name); + + AuroraEnv.RecipeManager.SaveLock(CommonRecipeIds.ScannerObjectTeaching, !IsAdmin); + _UCRecipe.IsEnabled = IsAdmin; }); - //LogOut 상황에서 Recipe Save Lock - //LogOut 상황에서 Reicpe 화면 수정할 수 없도록 함 - Application.Current.Dispatcher.Invoke(() => { _UCRecipe.IsEnabled = permissionOn; }); - Application.Current.Dispatcher.Invoke(() => { - if (!permissionOn) - Log.E($"User LogOut. Recipe Lock Enable True"); - else - Log.E("User Login. Recipe Lock Enable False"); - }); - + Log.E($"OnPermissionChanged >> Permission[{Enum.GetName(typeof(eEditablePermissionLevel), ApplicationExt.PermissionLevel)}] / RecipeLock[{!IsAdmin}]"); } // For Selection LaserDevice