using CommunityToolkit.Mvvm.ComponentModel; using HMIToolkit; using System.ComponentModel.DataAnnotations; using Heisig.HMI.AdsManager; using CommunityToolkit.Mvvm.Input; using TwinCAT.TypeSystem; using System.Collections.ObjectModel; using UniperHMI.Model; namespace UniperHMI { public sealed partial class AlignmentStationPageVM : ObservableValidator, IDisposable { private int _setpoint; [Range(-40000, 40000)] public int Setpoint { get => this._setpoint; set => SetProperty(ref this._setpoint, value, true); } [ObservableProperty] private int processValue; [ObservableProperty] private HMIControlButtonVM? startButton; [ObservableProperty] private HMIControlButtonVM? stopButton; [ObservableProperty] private E_BMS_CONTROL_MODE bmsControlMode; [ObservableProperty] private ObservableCollection reqBMSControlModes = [ new BMSControlModeEntry(E_BMS_CONTROL_MODE.AUTO_REMOTE, "Auto Remote"), new BMSControlModeEntry(E_BMS_CONTROL_MODE.AUTO_LOCAL, "Auto Local"), new BMSControlModeEntry(E_BMS_CONTROL_MODE.SAFETY_CHECK, "Safety Check"), new BMSControlModeEntry(E_BMS_CONTROL_MODE.CAPACITY_TEST, "Capacity Test"), new BMSControlModeEntry(E_BMS_CONTROL_MODE.MANUAL, "Manual") ]; [ObservableProperty] private BMSControlModeEntry selectedControlMode; [ObservableProperty] private bool canChangeControlMode; private readonly string? _variableName; private readonly IAdsManager? _adsManager; public AlignmentStationPageVM() { StartButton = new HMIControlButtonVM(); StopButton = new HMIControlButtonVM(); SelectedControlMode = ReqBMSControlModes[1]; canChangeControlMode = true; } public AlignmentStationPageVM(IAdsManager adsManager, string variableName) { _adsManager = adsManager; _variableName = variableName; //StartButton = new HMIControlButtonVM(_adsManager, _variableName + ".stStartAutoButton"); //StopButton = new HMIControlButtonVM(_adsManager, _variableName + ".stStopAutoButton"); SelectedControlMode = ReqBMSControlModes[1]; _adsManager.Register("GVL_SCADA.xCanChangeControlMode", CCCMChanged); _adsManager.Register(_variableName + ".diSetpointAutomatic", SetpointChanged); } private void SetpointChanged(object? sender, ValueChangedEventArgs e) { Setpoint = (int)e.Value; } private void CCCMChanged(object? sender, ValueChangedEventArgs e) { CanChangeControlMode = (bool)e.Value; } public void Dispose() { } } }