LGES-OC5-PtoP-Welder/AuroraDevices/AuroraLaser/Coherent/HyperRapid/UCCoherentHyperRapidResourceMonitoringViewModel.cs
2026-06-05 13:44:39 +09:00

80 lines
2.7 KiB
C#

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();
}
}
}