Sic05/FrameworkLocal/UIClient/CenterViews/Controls/E84Info.xaml.cs

472 lines
12 KiB
C#

using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using Aitex.Core.UI.MVVM;
using Aitex.Core.Util;
using Aitex.Core.Utilities;
using MECF.Framework.Common.DataCenter;
using MECF.Framework.Common.OperationCenter;
using MECF.Framework.UI.Client.ClientBase;
using MECF.Framework.UI.Core.View.Common;
namespace MECF.Framework.UI.Client.CenterViews.Controls
{
public partial class E84Info : UserControl
{
public static readonly DependencyProperty LoadPortNameProperty = DependencyProperty.Register(
"LoadPortName", typeof(string), typeof(E84Info), new
PropertyMetadata(""));
public static readonly DependencyProperty E84DataProperty = DependencyProperty.Register(
"E84Data", typeof(E84InfoData), typeof(E84Info), new PropertyMetadata(null));
private readonly E84InfoViewModel _e84InfoViewModel;
public E84Info()
{
InitializeComponent();
root.DataContext = this;
_e84InfoViewModel = new E84InfoViewModel();
ConfigBorder.DataContext = _e84InfoViewModel;
ConfigBorder1.DataContext = _e84InfoViewModel;
Inputs.DataContext = this;
Outputs.DataContext = this;
//BindingErrorTraceListener.SetTrace();
E84Command = new DelegateCommand<string>(DoLoadPortCmd);
IsVisibleChanged += E84Info_IsVisibleChanged;
}
public ICommand E84Command { get; set; }
public string LoadPortName
{
get => (string) GetValue(LoadPortNameProperty);
set => SetValue(LoadPortNameProperty, value);
}
public E84InfoData E84Data
{
get => (E84InfoData) GetValue(E84DataProperty);
set => SetValue(E84DataProperty, value);
}
private void DoLoadPortCmd(string cmd)
{
var deviceName = LoadPortName;
var param = new object[] {deviceName};
InvokeClient.Instance.Service.DoOperation($"{param[0]}.{cmd}");
}
private void E84Info_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
(DataContext as E84InfoViewModel)?.EnableTimer(IsVisible);
}
}
internal class E84InfoViewModel : UiViewModelBase
{
public E84InfoViewModel()
{
SetConfigCommand = new DelegateCommand<object>(SetConfig);
ConfigFeedback = new E84SCs();
ConfigSetPoint = new E84SCs();
ConfigFeedback.UpdateKeys(typeof(E84SCs).GetProperties());
ConfigSetPoint.UpdateKeys(typeof(E84SCs).GetProperties());
UpdateConfig();
}
[IgnorePropertyChange] public ICommand SetConfigCommand { get; }
[IgnorePropertyChange] public E84SCs ConfigFeedback { get; set; }
[IgnorePropertyChange] public E84SCs ConfigSetPoint { get; set; }
public bool AutomaticMode { get; set; }
public bool KeepClampedAfterRun { get; set; }
public bool KeepDockAfterRun { get; set; }
public bool CloseDoorAfterMap { get; set; }
[Subscription("E84State")] public string E84Status { get; set; }
private void SetConfig(object param)
{
var sc = (object[]) param;
InvokeClient.Instance.Service.DoOperation("System.SetConfig", sc[0].ToString(), sc[1].ToString());
UpdateConfig();
}
public void UpdateConfig()
{
ConfigFeedback.Update(QueryDataClient.Instance.Service.PollConfig(ConfigFeedback.GetKeys()));
ConfigSetPoint.Update(QueryDataClient.Instance.Service.PollConfig(ConfigSetPoint.GetKeys()));
Refresh();
}
protected override void Poll()
{
Refresh();
base.Poll();
}
}
public class E84SCs : PageSCValue
{
public int Fa_E84_TP1 { get; set; }
public int Fa_E84_TP2 { get; set; }
public int Fa_E84_TP3 { get; set; }
public int Fa_E84_TP4 { get; set; }
public int Fa_E84_TP5 { get; set; }
public int Fa_E84_TP6 { get; set; }
public bool LoadPort_CarrierIDReaderInUse { get; set; }
public int LoadPort_DataReadSize { get; set; }
public int LoadPort_StartPage { get; set; }
public int LoadPort_DefaultPage { get; set; }
}
public class E84InfoData : INotifyPropertyChanged
{
private bool _busy;
private string _carrierId;
private bool _continuousTransfer;
private bool _cs0;
private bool _cs1;
private string _e84State;
private bool _emergencyOk;
private bool _errorOnPlacementTimeout;
private bool _handoffAvailable;
private string _loadPortState;
private string _AccessMode;
//Factory Outputs
private bool _loadRequest;
private bool _podDocked;
private bool _podLatched;
private bool _podOpen;
private bool _podPlaced;
private bool _podReserved;
private string _portState;
private bool _potPresent;
private bool _readyToTransfer;
private string _slotMap;
private bool _transferComplete;
private bool _transferRequest;
private bool _unloadRequest;
//Factory Inputs
private bool _valid;
private bool _virtualMode;
private string _carrierIDStatus;
public string CarrierIDStatus
{
get => _carrierIDStatus;
set
{
_carrierIDStatus = value;
OnPropertyChanged("CarrierIDStatus");
}
}
private string _slotmapStatus;
public string SlotMapStatus
{
get => _slotmapStatus;
set
{
_slotmapStatus = value;
OnPropertyChanged("SlotMapStatus");
}
}
private string _accessStatus;
public string AccessStatus
{
get => _accessStatus;
set
{
_accessStatus = value;
OnPropertyChanged("AccessStatus");
}
}
public bool PodPresent
{
get => _potPresent;
set
{
_potPresent = value;
OnPropertyChanged("PodPresent");
}
}
public bool PodPlaced
{
get => _podPlaced;
set
{
_podPlaced = value;
OnPropertyChanged("PodPlaced");
}
}
public bool PodLatched
{
get => _podLatched;
set
{
_podLatched = value;
OnPropertyChanged("PodLatched");
}
}
public bool PodDocked
{
get => _podDocked;
set
{
_podDocked = value;
OnPropertyChanged("PodDocked");
}
}
public bool PodOpen
{
get => _podOpen;
set
{
_podOpen = value;
OnPropertyChanged("PodOpen");
}
}
public string LoadPortState
{
get => $"_{_loadPortState}";
set
{
_loadPortState = value;
OnPropertyChanged("LoadPortState");
}
}
public string AccessMode
{
get => $"_{_AccessMode}";
set
{
_AccessMode = value;
OnPropertyChanged("AccessMode");
}
}
public bool VirtualMode
{
get => _virtualMode;
set
{
_virtualMode = value;
OnPropertyChanged("VirtualMode");
}
}
public bool PodReserved
{
get => _podReserved;
set
{
_podReserved = value;
OnPropertyChanged("PodReserved");
}
}
public string PortState
{
get =>$"_{_portState}";
set
{
_portState = value;
OnPropertyChanged("PortState");
}
}
public string CarrierID
{
get => _carrierId;
set
{
_carrierId = value;
OnPropertyChanged("CarrierID");
}
}
public string SlotMap
{
get => _slotMap;
set
{
_slotMap = value;
OnPropertyChanged("SlotMap");
}
}
public bool Valid
{
get => _valid;
set
{
_valid = value;
OnPropertyChanged("Valid");
}
}
public bool TransferRequest
{
get => _transferRequest;
set
{
_transferRequest = value;
OnPropertyChanged("TransferRequest");
}
}
public bool Busy
{
get => _busy;
set
{
_busy = value;
OnPropertyChanged("Busy");
}
}
public bool TransferComplete
{
get => _transferComplete;
set
{
_transferComplete = value;
OnPropertyChanged("TransferComplete");
}
}
public bool CS0
{
get => _cs0;
set
{
_cs0 = value;
OnPropertyChanged("CS0");
}
}
public bool CS1
{
get => _cs1;
set
{
_cs1 = value;
OnPropertyChanged("CS1");
}
}
public bool ContinuousTransfer
{
get => _continuousTransfer;
set
{
_continuousTransfer = value;
OnPropertyChanged("ContinuousTransfer");
}
}
public bool LoadRequest
{
get => _loadRequest;
set
{
_loadRequest = value;
OnPropertyChanged("LoadRequest");
}
}
public bool UnloadRequest
{
get => _unloadRequest;
set
{
_unloadRequest = value;
OnPropertyChanged("UnloadRequest");
}
}
public bool ReadyToTransfer
{
get => _readyToTransfer;
set
{
_readyToTransfer = value;
OnPropertyChanged("ReadyToTransfer");
}
}
public bool HandoffAvailable
{
get => _handoffAvailable;
set
{
_handoffAvailable = value;
OnPropertyChanged("HandoffAvailable");
}
}
public bool EmergencyOk
{
get => _emergencyOk;
set
{
_emergencyOk = value;
OnPropertyChanged("EmergencyOk");
}
}
public bool ErrorOnPlacementTimeout
{
get => _errorOnPlacementTimeout;
set
{
_errorOnPlacementTimeout = value;
OnPropertyChanged("ErrorOnPlacementTimeout");
}
}
public string E84State
{
get => _e84State;
set
{
_e84State = value;
OnPropertyChanged("E84State");
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
}