using Aitex.Core.UI.MVVM; using Aitex.Core.Util; using Aitex.Sorter.Common; using Aitex.Sorter.UI.Controls.Common; using MECF.Framework.Common.OperationCenter; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Input; namespace Aitex.Sorter.UI.ViewModel.Maintenance { public class LoadPortViewModel : UIViewModelBase { public LoadPortViewModel() : base("LoadPortView") { OperationCommand = new DelegateCommand(Operation, x => !IsMaintenanceMode && !IsAutoMode); Command = new DelegateCommand(DoCommand, x => !IsMaintenanceMode && !IsAutoMode); } [Subscription(ParamName.IndicatiorLoad, DeviceName.LoadportA)] public IndicatorState LPAIndicatiorLoad { get; set; } [Subscription(ParamName.IndicatiorUnload, DeviceName.LoadportA)] public IndicatorState LPAIndicatiorUnload { get; set; } [Subscription(ParamName.IndicatiorPresence, DeviceName.LoadportA)] public IndicatorState LPAIndicatiorPresence { get; set; } [Subscription(ParamName.IndicatiorPlacement, DeviceName.LoadportA)] public IndicatorState LPAIndicatiorPlacement { get; set; } [Subscription(ParamName.IndicatiorOpAccess, DeviceName.LoadportA)] public IndicatorState LPAIndicatiorOpAccess { get; set; } [Subscription(ParamName.IndicatiorLoad, DeviceName.LoadportB)] public IndicatorState LPBIndicatiorLoad { get; set; } [Subscription(ParamName.IndicatiorUnload, DeviceName.LoadportB)] public IndicatorState LPBIndicatiorUnload { get; set; } [Subscription(ParamName.IndicatiorPresence, DeviceName.LoadportB)] public IndicatorState LPBIndicatiorPresence { get; set; } [Subscription(ParamName.IndicatiorPlacement, DeviceName.LoadportB)] public IndicatorState LPBIndicatiorPlacement { get; set; } [Subscription(ParamName.IndicatiorOpAccess, DeviceName.LoadportB)] public IndicatorState LPBIndicatiorOpAccess { get; set; } [Subscription(ParamName.FoupID, DeviceName.LoadportA)] public string LPAFoupID { get; set; } [Subscription(ParamName.FoupID, DeviceName.LoadportB)] public string LPBFoupID { get; set; } [Subscription(ParamName.CassetteState, DeviceName.LoadportA)] public LoadportCassetteState LPACassetteState { get; set; } [Subscription(ParamName.FoupClampState, DeviceName.LoadportA)] public FoupClampState LPAClampState { get; set; } [Subscription(ParamName.FoupDoorState, DeviceName.LoadportA)] public FoupDoorState LPADoorState { get; set; } [Subscription(ParamName.IndicatiorAlarm, DeviceName.LoadportA)] public IndicatorState LPAIndicatorAlarm { get; set; } [Subscription(ParamName.CassetteState, DeviceName.LoadportB)] public LoadportCassetteState LPBCassetteState { get; set; } [Subscription(ParamName.FoupClampState, DeviceName.LoadportB)] public FoupClampState LPBClampState { get; set; } [Subscription(ParamName.FoupDoorState, DeviceName.LoadportB)] public FoupDoorState LPBDoorState { get; set; } [Subscription(ParamName.IndicatiorAlarm, DeviceName.LoadportB)] public IndicatorState LPBIndicatorAlarm { get; set; } [Subscription(ParamName.LoadportState, DeviceName.LoadportA)] public DeviceState LPAStatus { get; set; } [Subscription(ParamName.LoadportState, DeviceName.LoadportB)] public DeviceState LPBStatus { get; set; } [Subscription(ParamName.RIDReaderState, DeviceName.RFIDReaderA)] public string RFIDReader1Status { get; set; } [Subscription(ParamName.RIDReaderState, DeviceName.RFIDReaderB)] public string RFIDReader2Status { get; set; } [Subscription(ParamName.FoupID, DeviceName.RFIDReaderA)] public string FoupAID { get; set; } [Subscription(ParamName.FoupID, DeviceName.RFIDReaderB)] public string FoupBID { get; set; } [Subscription(ParamName.RTStatus, SystemStateModule)] public int RoutManagerState { get; set; } public bool IsMaintenanceMode { get => RoutManagerState == (int)RtState.Maintenance; } [Subscription(ParamName.IsAutoMode, SystemStateModule)] public bool IsAutoMode { get; set; } public ICommand OperationCommand { get; private set; } public ICommand Command { get; private set; } void Operation(DependencyObject sender) { var command = CommandHelper.GetCommandItem(sender); InvokeClient.Instance.Service.DoOperation(command.CommandName, command.Parameters); } private void DoCommand(DependencyObject sender) { var command = CommandHelper.GetCommandItem(sender); var lstParameter = new List(command.Parameters); lstParameter.Insert(0, command.Target); lstParameter.Insert(1, command.CommandName); InvokeClient.Instance.Service.DoOperation(OperationName.DeviceOperation, lstParameter.ToArray()); } } }