fix: Laser Ready 버튼을 DO 되읽기 토글로 전환 (ISSUE-260826-03)
증상: 버튼을 한 번 눌러도 반응이 없고 두 번 눌러야 Laser_REMOTE 가 켜진다(현장 확인). 원인: toggleIO 가 "다음에 쓸 값"을 VM 이 기억하는 방식이라 실제 DO 와 어긋난다. SeqAutoRunPTOP 가 같은 DO 를 쓰면서 toggleIO 를 갱신하지 않기 때문 — :1220 용접시작 true / :1243 용접종료 false / :1701 정지 false 어긋나면 버튼이 같은 값을 다시 써서 아무 변화가 없다. 조치: 현재 DO 를 읽어 반전한다(바로 위 PerformCmdLaserGuideBeam :607-608 과 동일 패턴). - 버튼 1회 입력에 TRUE/FALSE 가 정확히 기록된다 - 누가 중간에 DO 를 건드려도 항상 현재 상태 기준으로 동작한다 - 표시(OnMonitoring 의 IsLaserReady = ReadDO(Laser_REMOTE))와 1:1 로 맞는다 - AC_KEY(DO 8)는 전원 투입 계층이라 건드리지 않는다 toggleIO 필드는 원복 대비로 남겨둔다(주석 블록 2개가 참조). 외부 참조·XAML 바인딩 없음. 원복: "260826 이전 원본" region 을 살리고 아래 2줄을 제거. 부수 확인: "뷰 전환 시 REMOTE 꺼짐" 은 VisibleChanged(:251-260)에 DO 쓰기가 없고 시퀀스가 끄는 정상 동작이라 별도 조치하지 않는다.
This commit is contained in:
parent
18ca9bc3f4
commit
2ef276e093
@ -174,6 +174,8 @@ namespace WeldingCommon.Views
|
|||||||
private WinSequenceDiagram _WinSequenceDiagramScoutFlyingVision;
|
private WinSequenceDiagram _WinSequenceDiagramScoutFlyingVision;
|
||||||
private WinSequenceDiagram _WinSequenceDiagramTeachingRun;
|
private WinSequenceDiagram _WinSequenceDiagramTeachingRun;
|
||||||
private WinSequenceDiagram _WinSequenceDiagramComponentTeachingRun;
|
private WinSequenceDiagram _WinSequenceDiagramComponentTeachingRun;
|
||||||
|
// 260826 현재 미사용 — PerformCmdLaserReadyCheck 가 DO 되읽기 방식으로 바뀌었다.
|
||||||
|
// 해당 메서드의 "260824/260826 이전 원본" 주석 블록이 이 필드를 참조하므로 원복 대비로 남겨둔다.
|
||||||
public bool toggleIO = true;
|
public bool toggleIO = true;
|
||||||
public UCScannerObjectTeachingControlBoxViewModel(IAuroraEnvironment aurora)
|
public UCScannerObjectTeachingControlBoxViewModel(IAuroraEnvironment aurora)
|
||||||
{
|
{
|
||||||
@ -633,18 +635,31 @@ namespace WeldingCommon.Views
|
|||||||
//}
|
//}
|
||||||
#endregion
|
#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).
|
// ※ AC_KEY(DO 8)는 전원 투입 계층이라 여기서 건드리지 않는다(반 하드와이어 여부 미확정, Q3).
|
||||||
if (toggleIO)
|
bool curRemote = _IODevice.ReadDO((int)ePrismaticDOAddress.Laser_REMOTE);
|
||||||
{
|
_IODevice._iOUnit.WriteDoBit((int)ePrismaticDOAddress.Laser_REMOTE, !curRemote);
|
||||||
_IODevice._iOUnit.WriteDoBit((int)ePrismaticDOAddress.Laser_REMOTE, true);
|
|
||||||
toggleIO = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_IODevice._iOUnit.WriteDoBit((int)ePrismaticDOAddress.Laser_REMOTE, false);
|
|
||||||
toggleIO = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PerformCmdToggleScannerCamView(object obj)
|
private void PerformCmdToggleScannerCamView(object obj)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user