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.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 LoaderMotionViewModel : BindableBase { #region 常量 private const string MOTION_DATA = "MotionData"; #endregion #region 内部变量 /// /// 模块名称 /// private string _module = ""; /// /// 增加 /// private double _incrementValue = 0.01; /// /// 定时器 /// private DispatcherTimer _timer; /// /// RT查询key集合 /// private List _rtDataKeys = new List(); /// /// rt查询key数值字典 /// private Dictionary _rtDataValueDic = new Dictionary(); #region ShuttleA /// /// shuttleA moduleName /// private string _shuttleAModuleName; /// /// shuttleA数据 /// private CommandMotionData _shuttleAMotionData; #endregion #region shuttleB /// /// shuttleB moduleName /// private string _shuttleBModuleName; /// /// shuttleB数据 /// private CommandMotionData _shuttleBMotionData; #endregion #region TiltA /// /// TiltA moduleName /// private string _tiltAModuleName; /// /// TiltA数据 /// private CommandMotionData _tiltAMotionData; #endregion #region TiltB /// /// tiltB moduleName /// private string _tiltBModuleName; /// /// TiltB数据 /// private CommandMotionData _tiltBMotionData; #endregion #region CRSA /// /// CRSA moduleName /// private string _crsAModuleName; /// /// CRSA数据 /// private CommandMotionData _crsAMotionData; #endregion #region CRSB /// /// crsB moduleName /// private string _crsBModuleName; /// /// CRSB数据 /// private CommandMotionData _crsBMotionData; #endregion #region Rotation /// /// Rotation moduleName /// private string _rotationModuleName; /// /// Rotation数据 /// private CommandMotionData _rotationMotionData; #endregion #endregion #region 属性 /// /// 模块名称 /// public string Module { get { return _module; } set { SetProperty(ref _module, value); } } /// /// 步进 /// public double IncrementValue { get { return _incrementValue; } set { SetProperty(ref _incrementValue, value); } } #region shuttleA /// /// shuttleA ModuleName /// public string ShuttleAModuleName { get { return _shuttleAModuleName; } set { SetProperty(ref _shuttleAModuleName, value); } } /// /// shuttleA 数据 /// public CommandMotionData ShuttleAMotionData { get { return _shuttleAMotionData; } set { SetProperty(ref _shuttleAMotionData, value); } } #endregion #region shuttleB /// /// shuttleB ModuleName /// public string ShuttleBModuleName { get { return _shuttleBModuleName; } set { SetProperty(ref _shuttleBModuleName, value); } } /// /// shuttleB 数据 /// public CommandMotionData ShuttleBMotionData { get { return _shuttleBMotionData; } set { SetProperty(ref _shuttleBMotionData, value); } } #endregion #region TiltA /// /// TiltA ModuleName /// public string TiltAModuleName { get { return _tiltAModuleName; } set { SetProperty(ref _tiltAModuleName, value); } } /// /// TiltA 数据 /// public CommandMotionData TiltAMotionData { get { return _tiltAMotionData; } set { SetProperty(ref _tiltAMotionData, value); } } #endregion #region TiltB /// /// TiltB ModuleName /// public string TiltBModuleName { get { return _tiltBModuleName; } set { SetProperty(ref _tiltBModuleName, value); } } /// /// TiltB 数据 /// public CommandMotionData TiltBMotionData { get { return _tiltBMotionData; } set { SetProperty(ref _tiltBMotionData, value); } } #endregion #region CRSA /// /// CRSA ModuleName /// public string CRSAModuleName { get { return _crsAModuleName; } set { SetProperty(ref _crsAModuleName, value); } } /// /// CRSA 数据 /// public CommandMotionData CRSAMotionData { get { return _crsAMotionData; } set { SetProperty(ref _crsAMotionData, value); } } #endregion #region CRSB /// /// CRSB ModuleName /// public string CRSBModuleName { get { return _crsBModuleName; } set { SetProperty(ref _crsBModuleName, value); } } /// /// CRSB 数据 /// public CommandMotionData CRSBMotionData { get { return _crsBMotionData; } set { SetProperty(ref _crsBMotionData, value); } } #endregion #region Rotation /// /// Rotation ModuleName /// public string RotationModuleName { get { return _rotationModuleName; } set { SetProperty(ref _rotationModuleName, value); } } /// /// Rotation 数据 /// public CommandMotionData RotationMotionData { get { return _rotationMotionData; } set { SetProperty(ref _rotationMotionData, value); } } #endregion #endregion /// /// 构造函数 /// public LoaderMotionViewModel() { } /// /// 加载数据 /// public void LoadData(string systemName) { Module = systemName; ShuttleAModuleName = $"{Module}.ShuttleA"; ShuttleBModuleName = $"{Module}.ShuttleB"; TiltAModuleName = $"{Module}.TiltA"; TiltBModuleName = $"{Module}.TiltB"; CRSAModuleName = $"{Module}.LSA"; CRSBModuleName = $"{Module}.LSB"; RotationModuleName = $"{Module}.Rotation"; _rtDataKeys.Clear(); _rtDataKeys.Add($"{ShuttleAModuleName}.IsHomed"); _rtDataKeys.Add($"{ShuttleAModuleName}.IsSwitchOn"); _rtDataKeys.Add($"{ShuttleAModuleName}.{MOTION_DATA}"); _rtDataKeys.Add($"{ShuttleBModuleName}.IsHomed"); _rtDataKeys.Add($"{ShuttleBModuleName}.IsSwitchOn"); _rtDataKeys.Add($"{ShuttleBModuleName}.{MOTION_DATA}"); _rtDataKeys.Add($"{TiltAModuleName}.IsHomed"); _rtDataKeys.Add($"{TiltAModuleName}.IsSwitchOn"); _rtDataKeys.Add($"{TiltAModuleName}.{MOTION_DATA}"); _rtDataKeys.Add($"{TiltBModuleName}.IsHomed"); _rtDataKeys.Add($"{TiltBModuleName}.IsSwitchOn"); _rtDataKeys.Add($"{TiltBModuleName}.{MOTION_DATA}"); _rtDataKeys.Add($"{CRSAModuleName}.IsHomed"); _rtDataKeys.Add($"{CRSAModuleName}.IsSwitchOn"); _rtDataKeys.Add($"{CRSAModuleName}.{MOTION_DATA}"); _rtDataKeys.Add($"{CRSBModuleName}.IsHomed"); _rtDataKeys.Add($"{CRSBModuleName}.IsSwitchOn"); _rtDataKeys.Add($"{CRSBModuleName}.{MOTION_DATA}"); _rtDataKeys.Add($"{RotationModuleName}.IsHomed"); _rtDataKeys.Add($"{RotationModuleName}.IsSwitchOn"); _rtDataKeys.Add($"{RotationModuleName}.{MOTION_DATA}"); if (_timer == null) { _timer = new DispatcherTimer(); _timer.Interval = TimeSpan.FromMilliseconds(100); _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) { ShuttleAMotionData = CommonFunction.GetValue(_rtDataValueDic, $"{ShuttleAModuleName}.{MOTION_DATA}"); ShuttleBMotionData = CommonFunction.GetValue(_rtDataValueDic, $"{ShuttleBModuleName}.{MOTION_DATA}"); TiltAMotionData = CommonFunction.GetValue(_rtDataValueDic, $"{TiltAModuleName}.{MOTION_DATA}"); TiltBMotionData = CommonFunction.GetValue(_rtDataValueDic, $"{TiltBModuleName}.{MOTION_DATA}"); CRSAMotionData = CommonFunction.GetValue(_rtDataValueDic, $"{CRSAModuleName}.{MOTION_DATA}"); CRSBMotionData = CommonFunction.GetValue(_rtDataValueDic, $"{CRSBModuleName}.{MOTION_DATA}"); RotationMotionData = CommonFunction.GetValue(_rtDataValueDic, $"{RotationModuleName}.{MOTION_DATA}"); } } } /// /// 隐藏 /// public void Hide() { if (_timer != null) { _timer.Stop(); } } } }