Kyungshin-Welder/AuroraDevices/AuroraLaser/IPG/Views/LaserIPG_MonitoringViewModel.cs
2026-01-26 14:51:28 +09:00

104 lines
3.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Aurora;
using Aurora.Api.Manager;
using AuroraLaser.Coherent;
namespace AuroraLaser.IPG.Views
{
public class LaserIPG_MonitoringViewModel
{
//LaserIPG_YLS _laser;
private readonly IDeviceManager _deviceManger;
private readonly LaserIPG_YLS _laser;
LaserIPG_YLS laser;
public LaserIPG_MonitoringViewModel(IAuroraEnvironment aurora, string deviceId)
{
_deviceManger = aurora.DeviceManager;
_laser = _deviceManger as LaserIPG_YLS;
}
public Dictionary<string, bool> GetStatusStatesFromLaser()
{
var states = new Dictionary<string, bool>();
if (_laser == null) {
var keys = new[]
{
"Laser power supply ON",
"Internal control disabled",
"Emission enabled",
"External control",
"Analog control",
"Guide laser ON",
"Rear door closed",
"Front door closed"
};
foreach (var k in keys) states[k] = false;
return states;
}
var activeStatusList = new HashSet<string>(_laser.StatusString());
states["Laser power supply ON"] = activeStatusList.Contains("Laser power supply ON");
states["Internal control disabled"] = activeStatusList.Contains("Internal control disabled");
states["Emission enabled"] = activeStatusList.Contains("Emission enabled");
states["External control"] = activeStatusList.Contains("External control");
states["Analog control"] = activeStatusList.Contains("Analog control");
states["Guide laser ON"] = activeStatusList.Contains("Guide laser ON");
states["Rear door closed"] = activeStatusList.Contains("Rear door closed");
states["Front door closed"] = activeStatusList.Contains("Front door closed");
return states;
}
public Dictionary<string, bool> GetAlarmStatesFromLaser()
{
var alarms = new Dictionary<string, bool>();
if (_laser == null) {
// 모든 알람을 false로 초기화
var allAlarmKeys = new[]
{
"E-Stop",
"Laser overheating",
"Feeding fiber interlock",
"High back reflection",
"Laser module",
"Laser module disconnected",
"Combiner",
"Water in laser",
"Power supply",
"Unexpected pump current",
"Fiber coupler photodiode 1",
"Fiber coupler photodiode 2"
};
foreach (var key in allAlarmKeys)
alarms[key] = false;
return alarms;
}
alarms["E-Stop"] = _laser.GetEStop();
alarms["Laser overheating"] = _laser.GetLaserOverheatingAlarm();
alarms["Feeding fiber interlock"] = _laser.GetFeedingFierInterlockAlarm();
alarms["High back reflection"] = _laser.GetHighBackreflectionAlarm();
alarms["Laser module"] = _laser.GetLaserModuleAlarm();
alarms["Laser module disconnected"] = _laser.GetLaserModuleDisconnectedAlarm();
alarms["Combiner"] = _laser.GetCombinerAlarm();
alarms["Water in laser"] = _laser.GetWaterInLaserAlarm();
alarms["Power supply"] = _laser.GetPowerSupplyAlarm();
alarms["Unexpected pump current"] = _laser.GetUnexpectedPumpCurrentAlarm();
alarms["Fiber coupler photodiode 1"] = _laser.GetFiberCouplerPhotodiode1Alarm();
alarms["Fiber coupler photodiode 2"] = _laser.GetFiberCouplerPhotodiode2Alarm();
return alarms;
}
}
}