using CapMachine.Core;
using CapMachine.Shared.Controls;
using CapMachine.Wpf.Dtos;
using CapMachine.Wpf.Models;
using CapMachine.Wpf.Models.Tag;
using CapMachine.Wpf.PrismEvent;
using CapMachine.Wpf.Services;
using ImTools;
using Prism.Commands;
using Prism.Events;
using Prism.Services.Dialogs;
using System.Collections.ObjectModel;
using System.Windows.Controls.Primitives;
namespace CapMachine.Wpf.ViewModels
{
public class MonitorViewModel : NavigationViewModel
{
///
/// 实例化函数
///
///
///
///
///
///
///
public MonitorViewModel(ConfigService configService, IEventAggregator eventAggregator,
DataRecordService dataRecordService, SysRunService sysRunService, AlarmService alarmService,
MachineRtDataService machineRtDataService, IDialogService dialogService)
{
ConfigService = configService;
//事件服务
_EventAggregator = eventAggregator;
DataRecordService = dataRecordService;
SysRunServer = sysRunService;
AlarmService = alarmService;
MachineRtDataService = machineRtDataService;
DialogService = dialogService;
TagManager = MachineRtDataService.TagManger;
_EventAggregator.GetEvent().Subscribe(GetChartRtEvent);
ListTag = new ObservableCollection(TagManager.DicTags.Values.ToList());
ListMeterTag = TagManager.DicTags.Values.Where(a => a.IsMeter == true).ToList();
SpeedTag = TagManager.DicTags.GetValueOrDefault("转速[rpm]");
ExPressTag = TagManager.DicTags.GetValueOrDefault("排气压力[MpaA]");
ExTempTag = TagManager.DicTags.GetValueOrDefault("排气温度[℃]");
InhPressTag = TagManager.DicTags.GetValueOrDefault("吸气压力[MpaA]");
InhTempTag = TagManager.DicTags.GetValueOrDefault("吸气温度[℃]");
ComCapBusVolTag = TagManager.DicTags.GetValueOrDefault("通讯母线电压[V]");
ComCapBusCurTag = TagManager.DicTags.GetValueOrDefault("通讯母线电流[A]");
ComCapPwTag = TagManager.DicTags.GetValueOrDefault("通讯功率[W]");
OS2TempTag = TagManager.DicTags.GetValueOrDefault("吸气混合器温度[℃]");
TxvFrTempTag = TagManager.DicTags.GetValueOrDefault("膨胀阀前温度[℃]");
TxvFrPressTag = TagManager.DicTags.GetValueOrDefault("膨胀阀前压力[MpaA]");
Cond1TempTag = TagManager.DicTags.GetValueOrDefault("冷凝器出口水温[℃]");
CondInTempTag = TagManager.DicTags.GetValueOrDefault("冷凝器进口温度[℃]");
ListHandSwitchData = new ObservableCollection()
{
new HandSwitchData(){Name="自动",ActionAddress="M0.0",StateAddress="M0.0" },
new HandSwitchData(){Name="抽真空",ActionAddress="M0.1",StateAddress="M0.1" },
new HandSwitchData(){Name="复位",ActionAddress="M0.2",StateAddress="M0.2" },
new HandSwitchData(){Name="消音",ActionAddress="M0.3",StateAddress="M0.3" },
new HandSwitchData(){Name="HV电源",ActionAddress="M1.1",StateAddress="Q0.1" },
new HandSwitchData(){Name="HV启动",ActionAddress="M1.2",StateAddress="Q0.6" },
new HandSwitchData(){Name="LV电源",ActionAddress="M1.3",StateAddress="Q0.2" },
new HandSwitchData(){Name="水泵",ActionAddress="M1.4",StateAddress="Q0.3" },
new HandSwitchData(){Name="冷凝器电加热",ActionAddress="M1.5",StateAddress="Q0.4" },
new HandSwitchData(){Name="吸气混合器电加热",ActionAddress="M1.6",StateAddress="Q0.5" },
new HandSwitchData(){Name="吸排气球阀",ActionAddress="M1.7",StateAddress="Q0.7" },
new HandSwitchData(){Name="试验箱",ActionAddress="M2.0",StateAddress="VW32" },
new HandSwitchData(){Name="水SEV1",ActionAddress="M2.1",StateAddress="Q1.0" },
new HandSwitchData(){Name="水SEV2",ActionAddress="M2.2",StateAddress="Q1.1" },
new HandSwitchData(){Name="HCV1",ActionAddress="M2.3",StateAddress="Q1.2" },
new HandSwitchData(){Name="HCV2",ActionAddress="M2.4",StateAddress="Q1.3" },
new HandSwitchData(){Name="ECV1",ActionAddress="M2.5",StateAddress="Q1.4" },
new HandSwitchData(){Name="ECV2",ActionAddress="M2.6",StateAddress="Q1.5" },
new HandSwitchData(){Name="使能",ActionAddress="M2.7",StateAddress="V15.1" },
};
}
public ConfigService ConfigService { get; }
private IEventAggregator _EventAggregator { get; set; }
public DataRecordService DataRecordService { get; }
public SysRunService SysRunServer { get; }
public AlarmService AlarmService { get; }
public MachineRtDataService MachineRtDataService { get; }
public IDialogService DialogService { get; }
public List ListChartRtValue { get; set; } = new List()
{
new ChartRtValue(){ Name="温度",Value=12.3,Unit="℃"},
new ChartRtValue(){ Name="压力",Value=12.3,Unit="bar"},
new ChartRtValue(){ Name="湿度",Value=12.3,Unit="%"},
};
private ObservableCollection _ListTag;
///
/// 标签集合信息
///
public ObservableCollection ListTag
{
get { return _ListTag; }
set { _ListTag = value; RaisePropertyChanged(); }
}
private List _ListMeterTag;
///
/// 标签集合信息 仪表的参数
///
public List ListMeterTag
{
get { return _ListMeterTag; }
set { _ListMeterTag = value; RaisePropertyChanged(); }
}
///
/// 标签中心
///
public TagManager TagManager { get; set; }
private ObservableCollection _ListHandSwitchData;
//
/// 手自动切换集合数据
///
public ObservableCollection ListHandSwitchData
{
get { return _ListHandSwitchData; }
set { _ListHandSwitchData = value; RaisePropertyChanged(); }
}
#region 工艺图数据
///
/// 转速标签
///
public ITag SpeedTag { get; set; }
///
/// 排气压力
///
public ITag ExPressTag { get; set; }
///
/// 排气温度
///
public ITag ExTempTag { get; set; }
///
/// 吸气压力
///
public ITag InhPressTag { get; set; }
///
/// 吸气温度
///
public ITag InhTempTag { get; set; }
///
/// 通讯母线电压
///
public ITag ComCapBusVolTag { get; set; }
///
/// 通讯母线电流
///
public ITag ComCapBusCurTag { get; set; }
///
/// 通讯功率
///
public ITag ComCapPwTag { get; set; }
///
/// 吸气混合器温度
///
public ITag OS2TempTag { get; set; }
///
/// 膨胀阀前温度
///
public ITag TxvFrTempTag { get; set; }
///
/// 膨胀阀前压力
///
public ITag TxvFrPressTag { get; set; }
///
/// 冷凝器出口水温
///
public ITag Cond1TempTag { get; set; }
///
/// 冷凝器进口温度
///
public ITag CondInTempTag { get; set; }
#endregion
private DelegateCommand _OperCmd;
///
/// 操作指令你
///
public DelegateCommand OperCmd
{
set
{
_OperCmd = value;
}
get
{
if (_OperCmd == null)
{
_OperCmd = new DelegateCommand((p) => OperCmdCall(p));
}
return _OperCmd;
}
}
///
/// 操作指令执行方法
///
///
private void OperCmdCall(string Par)
{
switch (Par)
{
case "开始":
this.SysRunServer.MachineRunState1.FireStart();
DataRecordService.StartRecord();
break;
case "结束":
this.SysRunServer.MachineRunState1.FireEnd();
DataRecordService.EndRecord();
break;
case "复位":
this.SysRunServer.MachineRunState1.FireReset();
DataRecordService.EndRecord();
break;
case "消音":
//ShowDialogExpInfo();
break;
case "试验信息":
ShowDialogExpInfo();
break;
default:
break;
}
}
private DelegateCommand