using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Aitex.Core.Common;
using LiveCharts;
using System.Windows;
using MECF.Framework.Common.CommonData.PUF;
using MECF.Framework.Common.DataCenter;
using MECF.Framework.Common.Equipment;
using Prism.Mvvm;
using System.Timers;
using Aitex.Core.RT.DataCenter;
using MECF.Framework.Common.Utilities;
using MECF.Framework.Common.CommonData.Loader;
using MECF.Framework.Common.OperationCenter;
using Aitex.Core.Utilities;
using System.Windows.Input;
using Aitex.Core.UI.MVVM;
using System.Windows.Threading;
namespace CyberX8_MainPages.ViewModels
{
public class SRDStationSetupViewModel:BindableBase
{
#region 常量
private const string MOTION_DATA = "MotionData";
private const string IS_SWITCH_ON = "IsSwitchOn";
private const string CURRENT_STATION = "CurrentStation";
#endregion
#region 内部变量
#region SRD1Arm
///
/// sRD1Arm模块名称
///
private string _sRD1ArmModuleName;
///
/// sRD1Arm运动数据
///
private CommandMotionData _sRD1ArmMotionData;
///
/// sRD1Arm当前位置
///
private string _sRD1ArmCurrentStation;
#endregion
#region SRD1Rotation
///
/// sRD1Rotation模块名称
///
private string _sRD1RotationModuleName;
///
/// sRD1Rotation运动数据
///
private CommandMotionData _sRD1RotationMotionData;
///
/// sRD1Rotation当前位置
///
private string _sRD1RotationCurrentStation;
#endregion
#region SRD2Arm
///
/// sRD2Arm模块名称
///
private string _sRD2ArmModuleName;
///
/// sRD2Arm运动数据
///
private CommandMotionData _sRD2ArmMotionData;
///
/// sRD2Arm当前位置
///
private string _sRD2ArmCurrentStation;
#endregion
#region SRD2Rotation
///
/// sRD2Rotation模块名称
///
private string _sRD2RotationModuleName;
///
/// sRD2Rotation运动数据
///
private CommandMotionData _sRD2RotationMotionData;
///
/// sRD2Rotation当前位置
///
private string _sRD2RotationCurrentStation;
#endregion
#region 系统数据
///
/// 定时器
///
DispatcherTimer _timer;
///
/// 查询后台数据集合
///
private List _rtDataKeys = new List();
///
/// rt查询key数值字典
///
private Dictionary _rtDataValueDic = new Dictionary();
#endregion
#region AWC
///
/// AWC ModuleName
///
private ModuleName _awcModuleName;
///
/// Is AWC Cycle runnning
///
private bool _isAWCCycling;
#endregion
#endregion
#region 属性
#region SRD1Arm
///
/// SRD1Arm名称
///
public string SRD1ArmModuleName
{
get { return _sRD1ArmModuleName; }
set { SetProperty(ref _sRD1ArmModuleName, value); }
}
///
/// SRD1Arm运动数据
///
public CommandMotionData SRD1ArmMotionData
{
get { return _sRD1ArmMotionData; }
set { SetProperty(ref _sRD1ArmMotionData, value); }
}
///
/// SRD1Arm当前位置
///
public string SRD1ArmCurrentStation
{
get { return _sRD1ArmCurrentStation; }
set { SetProperty(ref _sRD1ArmCurrentStation, value); }
}
#endregion
#region SRD1Rotation
///
/// SRD1Rotation名称
///
public string SRD1RotationModuleName
{
get { return _sRD1RotationModuleName; }
set { SetProperty(ref _sRD1RotationModuleName, value); }
}
///
/// SRD1Rotation运动数据
///
public CommandMotionData SRD1RotationMotionData
{
get { return _sRD1RotationMotionData; }
set { SetProperty(ref _sRD1RotationMotionData, value); }
}
///
/// SRD1Rotation当前位置
///
public string SRD1RotationCurrentStation
{
get { return _sRD1RotationCurrentStation; }
set { SetProperty(ref _sRD1RotationCurrentStation, value); }
}
#endregion
#region SRD2Arm
///
/// SRD2Arm名称
///
public string SRD2ArmModuleName
{
get { return _sRD2ArmModuleName; }
set { SetProperty(ref _sRD2ArmModuleName, value); }
}
///
/// SRD2Arm运动数据
///
public CommandMotionData SRD2ArmMotionData
{
get { return _sRD2ArmMotionData; }
set { SetProperty(ref _sRD2ArmMotionData, value); }
}
///
/// SRD2Arm当前位置
///
public string SRD2ArmCurrentStation
{
get { return _sRD2ArmCurrentStation; }
set { SetProperty(ref _sRD2ArmCurrentStation, value); }
}
#endregion
#region SRD2Rotation
///
/// SRD2Rotation名称
///
public string SRD2RotationModuleName
{
get { return _sRD2RotationModuleName; }
set { SetProperty(ref _sRD2RotationModuleName, value); }
}
///
/// SRD1Rotation运动数据
///
public CommandMotionData SRD2RotationMotionData
{
get { return _sRD2RotationMotionData; }
set { SetProperty(ref _sRD2RotationMotionData, value); }
}
///
/// SRD2Rotation当前位置
///
public string SRD2RotationCurrentStation
{
get { return _sRD2RotationCurrentStation; }
set { SetProperty(ref _sRD2RotationCurrentStation, value); }
}
#endregion
#region AWC
///
/// AWC ModuleName
///
public ModuleName AWCModuleName
{
get { return _awcModuleName; }
set { SetProperty(ref _awcModuleName, value); }
}
///
/// Is AWC Cycle runnning
///
public bool IsAWCCycling
{
get { return _isAWCCycling; }
set { SetProperty(ref _isAWCCycling, value); }
}
#endregion
#endregion
///
/// 构造函数
///
public SRDStationSetupViewModel()
{
}
///
/// 加载数据
///
public void LoadData(string systemName)
{
SRD1ArmModuleName = $"{ModuleName.SRD1}.Arm";
SRD1RotationModuleName = $"{ModuleName.SRD1}.Rotation";
SRD2ArmModuleName = $"{ModuleName.SRD2}.Arm";
SRD2RotationModuleName = $"{ModuleName.SRD2}.Rotation";
AddDataKeys();
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)
{
OnTimer();
}
///
/// 隐藏
///
public void Hide()
{
if (_timer != null)
{
_timer.Stop();
}
}
///
/// 初始化查询数据集合
///
private void AddDataKeys()
{
_rtDataKeys.Clear();
_rtDataKeys.Add($"{SRD1ArmModuleName}.{MOTION_DATA}");
_rtDataKeys.Add($"{SRD1ArmModuleName}.{IS_SWITCH_ON}");
_rtDataKeys.Add($"{SRD1ArmModuleName}.{CURRENT_STATION}");
_rtDataKeys.Add($"{SRD2ArmModuleName}.{MOTION_DATA}");
_rtDataKeys.Add($"{SRD2ArmModuleName}.{IS_SWITCH_ON}");
_rtDataKeys.Add($"{SRD2ArmModuleName}.{CURRENT_STATION}");
_rtDataKeys.Add($"{SRD1RotationModuleName}.{MOTION_DATA}");
_rtDataKeys.Add($"{SRD1RotationModuleName}.{IS_SWITCH_ON}");
_rtDataKeys.Add($"{SRD1RotationModuleName}.{CURRENT_STATION}");
_rtDataKeys.Add($"{SRD2RotationModuleName}.{MOTION_DATA}");
_rtDataKeys.Add($"{SRD2RotationModuleName}.{IS_SWITCH_ON}");
_rtDataKeys.Add($"{SRD2RotationModuleName}.{CURRENT_STATION}");
_rtDataKeys.Add($"{SRD2RotationModuleName}.{CURRENT_STATION}");
_rtDataKeys.Add($"SRD1.IsAWCCycling");
_rtDataKeys.Add($"SRD2.IsAWCCycling");
}
///
/// 定时器
///
///
private Boolean OnTimer()
{
if(_rtDataKeys.Count != 0)
{
_rtDataValueDic = QueryDataClient.Instance.Service.PollData(_rtDataKeys);
if (_rtDataValueDic != null)
{
SRD1ArmMotionData = CommonFunction.GetValue(_rtDataValueDic, $"{SRD1ArmModuleName}.{MOTION_DATA}");
SRD1ArmCurrentStation = CommonFunction.GetCurrentStationLastContent(CommonFunction.GetValue(_rtDataValueDic, $"{SRD1ArmModuleName}.{CURRENT_STATION}"), SRD1ArmModuleName);
SRD2ArmMotionData = CommonFunction.GetValue(_rtDataValueDic, $"{SRD2ArmModuleName}.{MOTION_DATA}");
SRD2ArmCurrentStation = CommonFunction.GetCurrentStationLastContent(CommonFunction.GetValue(_rtDataValueDic, $"{SRD2ArmModuleName}.{CURRENT_STATION}"), SRD2ArmModuleName);
SRD1RotationMotionData = CommonFunction.GetValue(_rtDataValueDic, $"{SRD1RotationModuleName}.{MOTION_DATA}");
SRD1RotationCurrentStation = CommonFunction.GetCurrentStationLastContent(CommonFunction.GetValue(_rtDataValueDic, $"{SRD1RotationModuleName}.{CURRENT_STATION}"), SRD1RotationModuleName);
SRD2RotationMotionData = CommonFunction.GetValue(_rtDataValueDic, $"{SRD2RotationModuleName}.{MOTION_DATA}");
SRD2RotationCurrentStation = CommonFunction.GetCurrentStationLastContent(CommonFunction.GetValue(_rtDataValueDic, $"{SRD2RotationModuleName}.{CURRENT_STATION}"), SRD2RotationModuleName);
//判断AWC是否在running
if(AWCModuleName == ModuleName.SRD1)
{
IsAWCCycling = CommonFunction.GetValue(_rtDataValueDic, $"SRD1.IsAWCCycling"); ;
}else if(AWCModuleName == ModuleName.SRD2)
{
IsAWCCycling = CommonFunction.GetValue(_rtDataValueDic, $"SRD2.IsAWCCycling"); ;
}
else
{
IsAWCCycling = false;
}
}
}
return true;
}
}
}