/* * Copyright (c) 2025 LG Electronics Inc. * SPDX-License-Identifier: LicenseRef-LGE-Proprietary */ using Aurora; using Aurora.Api; using Aurora.Api.Devices; using VisionCommon; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using VisionSequence.Setup; using DevExpress.Xpo.Logger; namespace VisionUI.Setup { /// /// 센터 튜닝 뷰 모델 /// class CenterTuningViewModel : INotifyPropertyChanged { private Logger Log = new Logger("CenterTuningViewModel"); private SubSysInfo _SubSysInfo; private int CurrCnt; private CsvManager _CsvManager = new CsvManager(); public event PropertyChangedEventHandler PropertyChanged; private CenterTuningSettingViewModel centerTuningSettingViewModel; /// 센터 튜닝 세팅 뷰 모델 public CenterTuningSettingViewModel CenterTuningSettingViewModel { get { return centerTuningSettingViewModel; } set { centerTuningSettingViewModel = value; NotifyPropertyChanged("CenterTuningSettingViewModel"); } } private CenterTuningLogViewModel centerTuningLogViewModel; /// 센터 튜닝 로그 뷰 모델 public CenterTuningLogViewModel CenterTuningLogViewModel { get { return centerTuningLogViewModel; } set { centerTuningLogViewModel = value; NotifyPropertyChanged("CenterTuningLogViewModel"); } } /// /// 생성자 /// /// 서브시스템 정보 public CenterTuningViewModel(SubSysInfo subSysInfo) { _SubSysInfo = subSysInfo; CenterTuningSettingViewModel = new CenterTuningSettingViewModel(_SubSysInfo); CenterTuningLogViewModel = new CenterTuningLogViewModel(_SubSysInfo); CenterTuningSettingViewModel.AlignDelta += AddAlignDelta; CenterTuningSettingViewModel.SequenceStart += SequenceStart; //CenterTuningSettingViewModel.CancelSequence += SequenceStop; } private void SequenceStart(object sender, EventArgs e) { CurrCnt = 0; CenterTuningLogViewModel.CenterTuningLogItems.Clear(); } private void AddAlignDelta(object sender, Position e) { try { var log = new CenterTuningLogItem() { CurrentCnt = ++CurrCnt, DeltaX = e.X, DeltaY = e.Y, DeltaT = e.T }; var centerTuningLog = CenterTuningLogItemManager.GetCenterTuningLogItem(_SubSysInfo, log); Application.Current.Dispatcher.Invoke(() => { CenterTuningLogViewModel.CenterTuningLogItems.Add(centerTuningLog); }); _CsvManager.SaveCsv(_SubSysInfo, centerTuningLog, eSaveDataType.CenterTuning); } catch (Exception ex) { Log.FuncE($"{ex.Message}"); } } private void OnCompleted(SequenceActionResult SeqResult) { } private void NotifyPropertyChanged(string propName) { PropertyChanged?.Invoke( this, new PropertyChangedEventArgs(propName)); } } }