using Aitex.Core.Common; using Aitex.Core.UI.MVVM; using Aitex.Core.Util; using Aitex.Core.Utilities; using LiveCharts; using MECF.Framework.Common.Beckhoff.AxisProvider; using MECF.Framework.Common.Beckhoff.Station; using MECF.Framework.Common.CommonData.PUF; using MECF.Framework.Common.DataCenter; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.OperationCenter; using MECF.Framework.Common.Utilities; using CyberX8_MainPages.Unity; using Prism.Mvvm; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Timers; using System.Windows.Input; using System.Windows.Threading; namespace CyberX8_MainPages.ViewModels { public class TransporterMotionViewModel : BindableBase { #region 常量 private const string MOTION_DATA = "MotionData"; #endregion #region 内部变量 /// /// 增加 /// private double _incrementValue = 0.01; /// /// RT查询key集合 /// private List _rtDataKeys = new List(); /// /// rt查询key数值字典 /// private Dictionary _rtDataValueDic = new Dictionary(); /// /// 定时器 /// private DispatcherTimer _timer; #region Transporter2 Gantry /// /// Transporter 2 Gantry moduleName /// private string _transporter2GantryModuleName; /// /// SwingA数据 /// private CommandMotionData _transporter2GantryMotionData; #endregion #region Transporter2 Elevator /// /// Transporter2 Elevator moduleName /// private string _transporter2ElevatorModuleName; /// /// Transporter2 Elevator 数据 /// private CommandMotionData _transporter2ElevatorMotionData; #endregion #region Transporter1 Gantry /// /// Transporter1 Gantry moduleName /// private string _transporter1GantryModuleName; /// /// Transporter1 Gantry数据 /// private CommandMotionData _transporter1GantryMotionData; #endregion #region Transporter1 Elevator /// /// Transporter1 Elevator moduleName /// private string _transporter1ElevatorModuleName; /// /// TiltB数据 /// private CommandMotionData _transporter1ElevatorMotionData; #endregion #endregion #region 属性 /// /// 步进 /// public double IncrementValue { get { return _incrementValue; } set { SetProperty(ref _incrementValue, value); } } #region Transporter2 Gantry /// /// Transporter2 Gantry ModuleName /// public string Transporter2GantryModuleName { get { return _transporter2GantryModuleName; } set { SetProperty(ref _transporter2GantryModuleName, value); } } /// /// Transporter2 Gantry 数据 /// public CommandMotionData Transporter2GantryMotionData { get { return _transporter2GantryMotionData; } set { SetProperty(ref _transporter2GantryMotionData, value); } } #endregion #region Transporter2 Elevator /// /// Transporter2 Elevator ModuleName /// public string Transporter2ElevatorModuleName { get { return _transporter2ElevatorModuleName; } set { SetProperty(ref _transporter2ElevatorModuleName, value); } } /// /// Transporter2 Elevator 数据 /// public CommandMotionData Transporter2ElevatorMotionData { get { return _transporter2ElevatorMotionData; } set { SetProperty(ref _transporter2ElevatorMotionData, value); } } #endregion #region Transporter1 Gantry /// /// Transporter1 Gantry ModuleName /// public string Transporter1GantryModuleName { get { return _transporter1GantryModuleName; } set { SetProperty(ref _transporter1GantryModuleName, value); } } /// /// Transporter1 Gantry 数据 /// public CommandMotionData Transporter1GantryMotionData { get { return _transporter1GantryMotionData; } set { SetProperty(ref _transporter1GantryMotionData, value); } } #endregion #region Transporter1 Elevator /// /// Transporter1 Elevator ModuleName /// public string Transporter1ElevatorModuleName { get { return _transporter1ElevatorModuleName; } set { SetProperty(ref _transporter1ElevatorModuleName, value); } } /// /// TiltB 数据 /// public CommandMotionData Transporter1ElevatorMotionData { get { return _transporter1ElevatorMotionData; } set { SetProperty(ref _transporter1ElevatorMotionData, value); } } #endregion #endregion /// /// 构造函数 /// public TransporterMotionViewModel() { } /// /// 加载数据 /// public void LoadData(string systemName) { Transporter2GantryModuleName = $"{ModuleName.Transporter2}.Gantry"; Transporter2ElevatorModuleName = $"{ModuleName.Transporter2}.Elevator"; Transporter1GantryModuleName = $"{ModuleName.Transporter1}.Gantry"; Transporter1ElevatorModuleName = $"{ModuleName.Transporter1}.Elevator"; _rtDataKeys.Clear(); _rtDataKeys.Add($"{Transporter2GantryModuleName}.IsHomed"); _rtDataKeys.Add($"{Transporter2GantryModuleName}.IsSwitchOn"); _rtDataKeys.Add($"{Transporter2GantryModuleName}.{MOTION_DATA}"); _rtDataKeys.Add($"{Transporter2ElevatorModuleName}.IsHomed"); _rtDataKeys.Add($"{Transporter2ElevatorModuleName}.IsSwitchOn"); _rtDataKeys.Add($"{Transporter2ElevatorModuleName}.{MOTION_DATA}"); _rtDataKeys.Add($"{Transporter1GantryModuleName}.IsHomed"); _rtDataKeys.Add($"{Transporter1GantryModuleName}.IsSwitchOn"); _rtDataKeys.Add($"{Transporter1GantryModuleName}.{MOTION_DATA}"); _rtDataKeys.Add($"{Transporter1ElevatorModuleName}.IsHomed"); _rtDataKeys.Add($"{Transporter1ElevatorModuleName}.IsSwitchOn"); _rtDataKeys.Add($"{Transporter1ElevatorModuleName}.{MOTION_DATA}"); if (_timer == null) { _timer = new DispatcherTimer(); _timer.Interval = TimeSpan.FromMilliseconds(200); _timer.Tick += Timer_Tick; } _timer.Start(); } /// /// 定时器执行 /// /// /// private void Timer_Tick(object sender, EventArgs e) { if (_rtDataKeys.Count != 0) { _rtDataValueDic = QueryDataClient.Instance.Service.PollData(_rtDataKeys); if (_rtDataValueDic != null) { Transporter2GantryMotionData = CommonFunction.GetValue(_rtDataValueDic, $"{Transporter2GantryModuleName}.{MOTION_DATA}"); Transporter2ElevatorMotionData = CommonFunction.GetValue(_rtDataValueDic, $"{Transporter2ElevatorModuleName}.{MOTION_DATA}"); Transporter1GantryMotionData = CommonFunction.GetValue(_rtDataValueDic, $"{Transporter1GantryModuleName}.{MOTION_DATA}"); Transporter1ElevatorMotionData = CommonFunction.GetValue(_rtDataValueDic, $"{Transporter1ElevatorModuleName}.{MOTION_DATA}"); } } } /// /// 隐藏 /// public void Hide() { if (_timer != null) { _timer.Stop(); } } } }