using Aitex.Core.RT.ConfigCenter; using Aitex.Core.Util; using MECF.Framework.Common.DataCenter; using MECF.Framework.Common.Device.LinMot; using MECF.Framework.Common.Utilities; 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.Threading; namespace CyberX8_MainPages.ViewModels { public class LinMotViewModel : BindableBase { #region 常量 private const string LINMOT_DEVICELIST = "LinMotDeviceList"; /// /// 控制字 /// private const string STATUS_WORD = "StatusWord"; #endregion #region 内部变量 /// /// LinMot设备配置 /// private LinmotDeviceConfig _linMotDeviceConfig; /// /// 模块名称 /// private string _module; /// /// 查询后台数据集合 /// private List _rtDataKeys = new List(); /// /// 查询后台的数据 /// private Dictionary _rtDataValues; private DispatcherTimer _timer; #endregion #region 属性 /// /// 模块名称 /// public string Module { get { return _module; } set { SetProperty(ref _module, value); } } /// /// LinMot设备配置 /// public LinmotDeviceConfig LinmotDeviceConfig { get { return _linMotDeviceConfig; } set { SetProperty(ref _linMotDeviceConfig, value); } } #endregion /// /// 构造函数 /// public LinMotViewModel() { } /// /// 初始化模块名称 /// /// public void Init(string systemName) { Module = systemName; } /// /// 加载数据 /// public void LoadData(string systemName) { Module = systemName; List lst = new List(); lst.Add($"{Module}.{LINMOT_DEVICELIST}"); _rtDataValues = QueryDataClient.Instance.Service.PollData(lst); if (_rtDataValues != null) { LinmotDeviceConfig = CommonFunction.GetValue(_rtDataValues, $"{Module}.{LINMOT_DEVICELIST}"); } InitialKeys(); 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) { _rtDataValues = QueryDataClient.Instance.Service.PollData(_rtDataKeys); if (_rtDataValues != null && _rtDataValues.Count != 0) { foreach (LinMotDevice item in LinmotDeviceConfig.LinmotDevices) { item.StatusWord = CommonFunction.GetValue(_rtDataValues, $"{item.Name}.{STATUS_WORD}"); item.IsConnected = CommonFunction.GetValue(_rtDataValues, $"{item.Name}.IsConnectd"); item.Speed = CommonFunction.GetValue(_rtDataValues, $"{item.Name}.Speed"); item.Position = CommonFunction.GetValue(_rtDataValues, $"{item.Name}.Position"); } } } } /// /// 隐藏 /// public void Hide() { if (_timer != null) { _timer.Stop(); } } /// /// 初始化Keys /// private void InitialKeys() { _rtDataKeys.Clear(); if (LinmotDeviceConfig != null) { foreach (LinMotDevice item in LinmotDeviceConfig.LinmotDevices) { _rtDataKeys.Add($"{item.Name}.{STATUS_WORD}"); _rtDataKeys.Add($"{item.Name}.IsConnectd"); _rtDataKeys.Add($"{item.Name}.Speed"); _rtDataKeys.Add($"{item.Name}.Position"); } } } } }