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 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, MachineRtDataService machineRtDataService, IDialogService dialogService) { ConfigService = configService; //事件服务 _EventAggregator = eventAggregator; DataRecordService = dataRecordService; SysRunServer = sysRunService; 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(); } public ConfigService ConfigService { get; } private IEventAggregator _EventAggregator { get; set; } public DataRecordService DataRecordService { get; } public SysRunService SysRunServer { 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 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 _AutoHandCmd; /// /// 操作指令你 /// public DelegateCommand AutoHandCmd { set { _AutoHandCmd = value; } get { if (_AutoHandCmd == null) { _AutoHandCmd = new DelegateCommand((p) => AutoHandCmdCall(p)); } return _AutoHandCmd; } } /// /// 操作指令执行方法 /// /// private void AutoHandCmdCall(object Par) { if (Par != null && Par is Meter) { var MeterControl = (Meter)Par; Console.WriteLine($"{MeterControl.MeterName}-{MeterControl.AutoHandState}"); } } private DelegateCommand _HandValueCmd; /// /// 手动给值 /// public DelegateCommand HandValueCmd { set { _HandValueCmd = value; } get { if (_HandValueCmd == null) { _HandValueCmd = new DelegateCommand((p) => HandValueCmdCall(p)); } return _HandValueCmd; } } /// /// 手动给值执行方法 /// /// private void HandValueCmdCall(object Par) { if (Par != null && Par is MeterChannelValue) { var ChannelValue = (MeterChannelValue)Par; Console.WriteLine($"{ChannelValue.Name}-{ChannelValue.Value}-{ChannelValue.Type}"); } } private int _HandValueParameter = 80; /// /// 手动的值,直接和控件绑定,初始的时候用,也可以用做更新采集的数据到界面上 /// 当前是所有的控件都绑定的 /// public int HandValueParameter { get { return _HandValueParameter; } set { _HandValueParameter = value; RaisePropertyChanged(); } } private DelegateCommand _HandEnableCmd; /// /// 阀门的手自动切换 /// public DelegateCommand HandEnableCmd { set { _HandEnableCmd = value; } get { if (_HandEnableCmd == null) { _HandEnableCmd = new DelegateCommand((p) => HandEnableCmdCall(p)); } return _HandEnableCmd; } } /// /// 操作指令执行方法 /// /// private void HandEnableCmdCall(object Par) { if (Par != null && Par is ToggleButton) { var ControlData = Par as ToggleButton; var Name = ControlData.Name; var Data = ControlData.IsChecked; //ToDo cmd } } private void ShowDialogExpInfo() { //弹窗 DialogService.ShowDialog("DialogExpInfoView", new DialogParameters() { { "Name", "" } }, (par) => { if (par.Result == ButtonResult.OK) { //试验信息 var ListChartTabGroupDto = par.Parameters.GetValue("ReturnValue"); } else if (par.Result == ButtonResult.Cancel) { //取消 } }); } /// /// 获取曲线的实时值 /// 数据是发布过来 /// /// /// private void GetChartRtEvent(List RtData) { //ListChartRtValue = RtData; } } }