diff --git a/WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBoxViewModel.cs b/WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBoxViewModel.cs index 7167131..4303bbe 100644 --- a/WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBoxViewModel.cs +++ b/WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBoxViewModel.cs @@ -174,6 +174,8 @@ namespace WeldingCommon.Views private WinSequenceDiagram _WinSequenceDiagramScoutFlyingVision; private WinSequenceDiagram _WinSequenceDiagramTeachingRun; private WinSequenceDiagram _WinSequenceDiagramComponentTeachingRun; + // 260826 현재 미사용 — PerformCmdLaserReadyCheck 가 DO 되읽기 방식으로 바뀌었다. + // 해당 메서드의 "260824/260826 이전 원본" 주석 블록이 이 필드를 참조하므로 원복 대비로 남겨둔다. public bool toggleIO = true; public UCScannerObjectTeachingControlBoxViewModel(IAuroraEnvironment aurora) { @@ -633,18 +635,31 @@ namespace WeldingCommon.Views //} #endregion - // 260824 본 레이저 단일 발진기 — 제어권(REMOTE) 1발 토글 + #region 260826 이전 원본 (toggleIO 필드 토글 — 원복 시 이 블록을 살리고 아래 2줄을 제거) + //// 260824 본 레이저 단일 발진기 — 제어권(REMOTE) 1발 토글 + //// ※ AC_KEY(DO 8)는 전원 투입 계층이라 여기서 건드리지 않는다(반 하드와이어 여부 미확정, Q3). + //if (toggleIO) + //{ + // _IODevice._iOUnit.WriteDoBit((int)ePrismaticDOAddress.Laser_REMOTE, true); + // toggleIO = false; + //} + //else + //{ + // _IODevice._iOUnit.WriteDoBit((int)ePrismaticDOAddress.Laser_REMOTE, false); + // toggleIO = true; + //} + #endregion + + // 260826 현재 DO 를 읽어 반전하는 방식으로 전환 (바로 위 PerformCmdLaserGuideBeam :607-608 과 동일 패턴). + // 기존 toggleIO 는 "다음에 쓸 값"을 VM 이 기억하는 방식이라 실제 DO 와 어긋났다. + // SeqAutoRunPTOP 가 같은 DO 를 쓰면서 toggleIO 를 갱신하지 않기 때문 — + // :1220 용접시작 true / :1243 용접종료 false / :1701 정지 false + // 어긋나면 버튼을 눌러도 같은 값을 다시 써서 아무 변화가 없다(= 두 번 눌러야 반응. 현장 확인 260826). + // 현재 DO 를 읽어 반전하면 누가 중간에 건드려도 1회 입력에 TRUE/FALSE 가 정확히 기록되고, + // 표시(OnMonitoring 의 IsLaserReady = ReadDO(Laser_REMOTE))와도 1:1 로 맞는다. // ※ AC_KEY(DO 8)는 전원 투입 계층이라 여기서 건드리지 않는다(반 하드와이어 여부 미확정, Q3). - if (toggleIO) - { - _IODevice._iOUnit.WriteDoBit((int)ePrismaticDOAddress.Laser_REMOTE, true); - toggleIO = false; - } - else - { - _IODevice._iOUnit.WriteDoBit((int)ePrismaticDOAddress.Laser_REMOTE, false); - toggleIO = true; - } + bool curRemote = _IODevice.ReadDO((int)ePrismaticDOAddress.Laser_REMOTE); + _IODevice._iOUnit.WriteDoBit((int)ePrismaticDOAddress.Laser_REMOTE, !curRemote); } private void PerformCmdToggleScannerCamView(object obj)