61 lines
1.5 KiB
C#
61 lines
1.5 KiB
C#
using CommunityToolkit.Mvvm.ComponentModel;
|
|
using Heisig.HMI.AdsManager;
|
|
using TwinCAT.TypeSystem;
|
|
|
|
namespace UniperHMI;
|
|
|
|
public enum E_COMPONENT_STATUS : short
|
|
{
|
|
OFF = 0,
|
|
ON = 1,
|
|
CHARGING = 2,
|
|
DISCHARGING = 3,
|
|
ERROR = 4
|
|
}
|
|
|
|
public partial class SMUBaseVM : ObservableObject, IDisposable
|
|
{
|
|
[ObservableProperty]
|
|
protected float voltage;
|
|
|
|
[ObservableProperty]
|
|
protected E_COMPONENT_STATUS status;
|
|
|
|
protected readonly string _variableName;
|
|
|
|
protected readonly IAdsManager? _adsManager;
|
|
|
|
public SMUBaseVM()
|
|
{
|
|
_variableName = string.Empty;
|
|
_adsManager = null;
|
|
voltage = 0.0f;
|
|
status = E_COMPONENT_STATUS.OFF;
|
|
}
|
|
|
|
public SMUBaseVM(IAdsManager adsManager, string variableName)
|
|
{
|
|
Status = E_COMPONENT_STATUS.OFF;
|
|
_adsManager = adsManager;
|
|
_variableName = variableName;
|
|
|
|
_adsManager!.Register(_variableName + ".rVoltage", VoltageChanged);
|
|
_adsManager.Register(_variableName + ".eStatus", StatusChanged);
|
|
}
|
|
protected void VoltageChanged(object? sender, ValueChangedEventArgs e)
|
|
{
|
|
Voltage = (float)e.Value;
|
|
}
|
|
|
|
protected void StatusChanged(object? sender, ValueChangedEventArgs e)
|
|
{
|
|
Status = (E_COMPONENT_STATUS)((short)e.Value);
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
_adsManager?.Deregister(_variableName + ".rVoltage", VoltageChanged);
|
|
_adsManager?.Deregister(_variableName + ".eStatus", StatusChanged);
|
|
}
|
|
}
|