Initial Push
This commit is contained in:
60
uniper_hmi/UniperHMI/OwnControls/ViewModels/SMUBaseVM.cs
Normal file
60
uniper_hmi/UniperHMI/OwnControls/ViewModels/SMUBaseVM.cs
Normal file
@@ -0,0 +1,60 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user