using Aurora; using Aurora.Api; using AuroraDeviceCommon.Views; using System; using System.Windows.Threading; namespace AuroraLaser.Coherent { public class UCCoherentHyperRapidResourceMonitoringViewModel : BaseDeviceViewModel { public double SeederDiodeElapsedTime { get => _SeederDiodeElapsedTime; set => SetProperty(ref _SeederDiodeElapsedTime, value); } public double Diode1ElapsedTime { get => _Diode1ElapsedTime; set => SetProperty(ref _Diode1ElapsedTime, value); } public double Diode2ElapsedTime { get => _Diode2ElapsedTime; set => SetProperty(ref _Diode2ElapsedTime, value); } public double Diode3ElapsedTime { get => _Diode3ElapsedTime; set => SetProperty(ref _Diode3ElapsedTime, value); } public double ThgElapsedTime { get => _ThgElapsedTime; set => SetProperty(ref _ThgElapsedTime, value); } private double _SeederDiodeElapsedTime; private double _Diode1ElapsedTime; private double _Diode2ElapsedTime; private double _Diode3ElapsedTime; private double _ThgElapsedTime; private readonly DispatcherTimer MonitorTimer; public UCCoherentHyperRapidResourceMonitoringViewModel(IAuroraEnvironment aurora, Device laser) : base(aurora, laser) { _SeederDiodeElapsedTime = 0.0; _Diode1ElapsedTime = 0.0; _Diode2ElapsedTime = 0.0; _Diode3ElapsedTime = 0.0; _ThgElapsedTime = 0.0; UpdateElapsedTimes(); MonitorTimer = new DispatcherTimer(); MonitorTimer.Tick += OnMonitoring; MonitorTimer.Interval = TimeSpan.FromMilliseconds(1000); } private void UpdateElapsedTimes() { var laser = _Device as HyperRapidLaser; // -- 1. SEED DIODE SeederDiodeElapsedTime = laser.GetSeederDiode(); // -- 2. AMPLIFIER 1 DIODE Diode1ElapsedTime = laser.GetDiodeOperatingHours(1); // -- 3. AMPLIFIER 2 DIODE Diode2ElapsedTime = laser.GetDiodeOperatingHours(2); // -- 4. AMPLIFIER 3 DIODE Diode3ElapsedTime = laser.GetDiodeOperatingHours(3); // -- 5. THG ThgElapsedTime = laser.GetModuleOperatingHours(); } protected override void VisibleChanged(object obj) { bool visible = (bool)obj; if (visible) { MonitorTimer.Start(); } else { MonitorTimer.Stop(); } } private void OnMonitoring(object sender, EventArgs e) { if (!_Device.IsActivated) { return; } UpdateElapsedTimes(); } } }