123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- 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 PunkHPX8_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 VPW
- private bool _isVpw1RotationOn;
- private bool _isVpw2RotationOn;
- #endregion
- #endregion
- #region 属性
- #region VPW
- public bool IsVpw1RotationOn { get { return _isVpw1RotationOn; } set { SetProperty(ref _isVpw1RotationOn, value); } }
- public bool IsVpw2RotationOn { get { return _isVpw2RotationOn; } set { SetProperty(ref _isVpw2RotationOn, value); } }
-
- #endregion
- public SafetyData CommonSafetyData { get { return _commonSafetyData; } set { SetProperty(ref _commonSafetyData, value); } }
-
- #endregion
- /// <summary>
- /// 定时器
- /// </summary>
- DispatcherTimer _timer;
- /// <summary>
- /// 查询后台数据集合
- /// </summary>
- private List<string> _rtDataKeys = new List<string>();
- /// <summary>
- /// rt查询key数值字典
- /// </summary>
- private Dictionary<string, object> _rtDataValueDic = new Dictionary<string, object>();
- #region 指令
- public ICommand PauseCommand { get; private set; }
- public ICommand ResumeCommand { get; private set; }
- public ICommand ResetCommand { get; private set; }
- public ICommand LockCassetteDoorsCommand { get; private set; }
- public ICommand UnlockCassetteDoorsCommand { get; private set; }
- public ICommand LockCell12DoorsCommand { get; private set; }
- public ICommand UnlockCell12DoorsCommand { get; private set; }
- public ICommand LockCell34DoorsCommand { get; private set; }
- public ICommand UnlockCell34DoorsCommand { get; private set; }
- public ICommand LockAlignerDoorsCommand { get; private set; }
- public ICommand UnlockAlignerDoorsCommand { get; private set; }
- public ICommand AllOnCommand { get; private set; }
- #endregion
- /// <summary>
- /// 构造函数
- /// </summary>
- public SystemSafetyViewModel()
- {
- PauseCommand = new DelegateCommand<Object>(PauseAction);
- ResumeCommand = new DelegateCommand<Object>(ResumeAction);
- ResetCommand = new DelegateCommand<Object>(ResetAction);
- LockCassetteDoorsCommand = new DelegateCommand<Object>(LockCassetteDoorsAction);
- UnlockCassetteDoorsCommand = new DelegateCommand<Object>(UnlockCassetteDoorsAction);
- LockCell12DoorsCommand = new DelegateCommand<Object>(LockCell12DoorsAction);
- UnlockCell12DoorsCommand = new DelegateCommand<Object>(UnlockCell12DoorsAction);
- LockCell34DoorsCommand = new DelegateCommand<Object>(LockCell34DoorsAction);
- UnlockCell34DoorsCommand = new DelegateCommand<Object>(UnlockCell34DoorsAction);
- LockAlignerDoorsCommand = new DelegateCommand<Object>(LockAlignerDoorsAction);
- UnlockAlignerDoorsCommand = new DelegateCommand<Object>(UnlockAlignerDoorsAction);
- AllOnCommand = new DelegateCommand<Object>(AllOnAction);
- }
- /// <summary>
- /// 初始化Keys
- /// </summary>
- private void InitialKeys()
- {
- _rtDataKeys.Clear();
- _rtDataKeys.Add($"Safety.{SAFETY_DATA}");
- _rtDataKeys.Add($"Safety.{IS_INITIALIZED}");
- _rtDataKeys.Add($"VPW1.Rotation.{IS_SWITCH_ON}");
- _rtDataKeys.Add($"VPW2.Rotation.{IS_SWITCH_ON}");
- }
-
- /// <summary>
- /// 加载数据
- /// </summary>
- public void LoadData(string systemName)
- {
- InitialKeys();
- if (_timer == null)
- {
- _timer = new DispatcherTimer();
- _timer.Interval = TimeSpan.FromMilliseconds(200);
- _timer.Tick += Timer_Tick; ;
- }
- _timer.Start();
- }
- /// <summary>
- /// 定时器执行
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- /// <exception cref="NotImplementedException"></exception>
- private void Timer_Tick(object sender, EventArgs e)
- {
- if (_rtDataKeys.Count != 0)
- {
- _rtDataValueDic = QueryDataClient.Instance.Service.PollData(_rtDataKeys);
- if (_rtDataValueDic != null)
- {
- CommonSafetyData = CommonFunction.GetValue<SafetyData>(_rtDataValueDic, $"Safety.{SAFETY_DATA}");
- IsVpw1RotationOn = CommonFunction.GetValue<bool>(_rtDataValueDic, $"VPW1.Rotation.{IS_SWITCH_ON}");
- IsVpw2RotationOn = CommonFunction.GetValue<bool>(_rtDataValueDic, $"VPW2.Rotation.{IS_SWITCH_ON}");
-
- //判断电机Moving状态
- JudgeMoving();
- }
- }
- }
- /// <summary>
- /// 隐藏
- /// </summary>
- public void Hide()
- {
- if (_timer != null)
- {
- _timer.Stop();
- }
- }
- #region 指令Action
- /// <summary>
- /// Pause
- /// </summary>
- /// <param name="param"></param>
- private void PauseAction(object param)
- {
- throw new NotImplementedException();
- }
- /// <summary>
- /// Resume
- /// </summary>
- /// <param name="param"></param>
- private void ResumeAction(object param)
- {
- throw new NotImplementedException();
- }
- /// <summary>
- /// AllOn
- /// </summary>
- /// <param name="param"></param>
- private void AllOnAction(object param)
- {
- InvokeClient.Instance.Service.DoOperation("Safety.AllOnOperation");
- }
- /// <summary>
- /// Reset
- /// </summary>
- /// <param name="param"></param>
- private void ResetAction(object param)
- {
- InvokeClient.Instance.Service.DoOperation("Safety.ResetOperation");
- }
-
- private void LockCassetteDoorsAction(object param)
- {
- InvokeClient.Instance.Service.DoOperation("Safety.LockCasseteDoor");
- }
- private void UnlockCassetteDoorsAction(object param)
- {
- InvokeClient.Instance.Service.DoOperation("Safety.UnlockCasseteDoor");
- }
- private void LockCell12DoorsAction(object param)
- {
- InvokeClient.Instance.Service.DoOperation("Safety.LockCell12Door");
- }
- private void UnlockCell12DoorsAction(object param)
- {
- InvokeClient.Instance.Service.DoOperation("Safety.UnlockCell12Door");
- }
- private void LockCell34DoorsAction(object param)
- {
- InvokeClient.Instance.Service.DoOperation("Safety.LockCell34Door");
- }
- private void UnlockCell34DoorsAction(object param)
- {
- InvokeClient.Instance.Service.DoOperation("Safety.UnlockCell34Door");
- }
- private void LockAlignerDoorsAction(object param)
- {
- InvokeClient.Instance.Service.DoOperation("Safety.LockAlignerDoor");
- }
- private void UnlockAlignerDoorsAction(object param)
- {
- InvokeClient.Instance.Service.DoOperation("Safety.UnlockAlignerDoor");
- }
- /// <summary>
- /// 判断各个电机Moving状态
- /// </summary>
- /// <param name="param"></param>
- private void JudgeMoving()
- {
-
- }
- #endregion
- }
- }
|