using Aitex.Core.UI.MVVM;
using MECF.Framework.Common.CommonData;
using MECF.Framework.Common.DataCenter;
using MECF.Framework.Common.Device.Safety;
using MECF.Framework.Common.Equipment;
using MECF.Framework.Common.OperationCenter;
using MECF.Framework.Common.Utilities;
using OpenSEMI.ClientBase.Command;
using Prism.Mvvm;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
using System.Windows.Threading;
namespace CyberX8_MainPages.ViewModels
{
public class SystemSafetyViewModel : BindableBase
{
#region 常量
private const string SAFETY_DATA = "SafetyData";
private const string IS_SWITCH_ON = "IsSwitchOn";
private const string IS_INITIALIZED = "IsInitialized";
private const string IS_MOVING = "IsMoving";
#endregion
#region 内部变量
private SafetyData _commonSafetyData;
#region Loader
private bool _isLoaderRotationOn;
private bool _isLoaderASwingOn;
private bool _isLoaderATiltOn;
private bool _isLoaderBSwingOn;
private bool _isLoaderBTiltOn;
private bool _isLoaderMoving;
#endregion
#region PUFs
private bool _isPuf1VerticalOn;
private bool _isPuf1RotationOn;
private bool _isPuf1FlipOn;
private bool _isPuf2VerticalOn;
private bool _isPuf2RotationOn;
private bool _isPuf2FlipOn;
private bool _isPufsMoving;
#endregion
#region SRD
private bool _isSrd1ArmOn;
private bool _isSrd1RotationOn;
private bool _isSrd2ArmOn;
private bool _isSrd2RotationOn;
private bool _isSRDsMoving;
#endregion
#region Transporters
private bool _isLoaderGantryOn;
private bool _isLoaderElevatorOn;
private bool _isLoaderTransMoving;
private bool _isProcessGantryOn;
private bool _isProcessElevatorOn;
private bool _isProcessTransMoving;
#endregion
#endregion
#region 属性
public SafetyData CommonSafetyData { get { return _commonSafetyData; } set { SetProperty(ref _commonSafetyData, value); } }
#region Loader
public bool IsLoaderRotationOn { get { return _isLoaderRotationOn; } set { SetProperty(ref _isLoaderRotationOn, value); } }
public bool IsLoaderASwingOn { get { return _isLoaderASwingOn; } set { SetProperty(ref _isLoaderASwingOn, value); } }
public bool IsLoaderATiltOn { get { return _isLoaderATiltOn; } set { SetProperty(ref _isLoaderATiltOn, value); } }
public bool IsLoaderBSwingOn { get { return _isLoaderBSwingOn; } set { SetProperty(ref _isLoaderBSwingOn, value); } }
public bool IsLoaderBTiltOn { get { return _isLoaderBTiltOn; } set { SetProperty(ref _isLoaderBTiltOn, value); } }
///
/// Is Loader Moving
///
public bool IsLoaderMoving { get { return _isLoaderMoving; } set { SetProperty(ref _isLoaderMoving, value); } }
#endregion
#region PUFs
public bool IsPuf1VerticalOn { get { return _isPuf1VerticalOn; } set { SetProperty(ref _isPuf1VerticalOn, value); } }
public bool IsPuf1RotationOn { get { return _isPuf1RotationOn; } set { SetProperty(ref _isPuf1RotationOn, value); } }
public bool IsPuf1FlipOn { get { return _isPuf1FlipOn; } set { SetProperty(ref _isPuf1FlipOn, value); } }
public bool IsPuf2VerticalOn { get { return _isPuf2VerticalOn; } set { SetProperty(ref _isPuf2VerticalOn, value); } }
public bool IsPuf2RotationOn { get { return _isPuf2RotationOn; } set { SetProperty(ref _isPuf2RotationOn, value); } }
public bool IsPuf2FlipOn { get { return _isPuf2FlipOn; } set { SetProperty(ref _isPuf2FlipOn, value); } }
///
/// Is Pufs Moving
///
public bool IsPufsMoving { get { return _isPufsMoving; } set { SetProperty(ref _isPufsMoving, value); } }
#endregion
#region SRD
public bool IsSrd1ArmOn { get { return _isSrd1ArmOn; } set { SetProperty(ref _isSrd1ArmOn, value); } }
public bool IsSrd1RotationOn { get { return _isSrd1RotationOn; } set { SetProperty(ref _isSrd1RotationOn, value);}}
public bool IsSrd2ArmOn { get { return _isSrd2ArmOn; } set { SetProperty(ref _isSrd2ArmOn, value); } }
public bool IsSrd2RotationOn { get { return _isSrd2RotationOn; } set { SetProperty(ref _isSrd2RotationOn, value); } }
///
/// Is SRDs Moving
///
public bool IsSRDsMoving { get { return _isSRDsMoving; } set { SetProperty(ref _isSRDsMoving, value); } }
#endregion
#region Transporters
public bool IsLoaderGantryOn { get { return _isLoaderGantryOn; } set { SetProperty(ref _isLoaderGantryOn, value); } }
public bool IsLoaderElevatorOn { get { return _isLoaderElevatorOn; } set { SetProperty(ref _isLoaderElevatorOn, value); } }
///
/// Is LoaderTransporters Moving
///
public bool IsLoaderTransMoving { get { return _isLoaderTransMoving; } set { SetProperty(ref _isLoaderTransMoving, value); }}
public bool IsProcessGantryOn { get { return _isProcessGantryOn; } set { SetProperty(ref _isProcessGantryOn, value); } }
public bool IsProcessElevatorOn { get { return _isProcessElevatorOn; } set { SetProperty(ref _isProcessElevatorOn, value); } }
///
/// Is ProcessTransporters Moving
///
public bool IsProcessTransMoving { get { return _isProcessTransMoving; } set { SetProperty(ref _isProcessTransMoving, value); } }
#endregion
#endregion
///
/// 定时器
///
DispatcherTimer _timer;
///
/// 查询后台数据集合
///
private List _rtDataKeys = new List();
///
/// rt查询key数值字典
///
private Dictionary _rtDataValueDic = new Dictionary();
#region 指令
public ICommand PauseCommand { get; private set; }
public ICommand ResumeCommand { get; private set; }
public ICommand ResetCommand { get; private set; }
public ICommand LockLoaderDoorsCommand { get; private set; }
public ICommand UnlockLoaderDoorsCommand { get; private set; }
public ICommand LockBufferDoorsCommand { get; private set; }
public ICommand UnlockBufferDoorsCommand { get; private set; }
public ICommand LockProcessDoorsCommand { get; private set; }
public ICommand UnlockProcessDoorsCommand { get; private set; }
public ICommand AllOnCommand { get; private set; }
#endregion
///
/// 构造函数
///
public SystemSafetyViewModel()
{
PauseCommand = new DelegateCommand