using GalaSoft.MvvmLight; using GalaSoft.MvvmLight.Command; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using SlnMesnac.Business; using SlnMesnac.Business.@base; using SlnMesnac.Model.domain; using SlnMesnac.Model.dto; using SlnMesnac.Plc; using SlnMesnac.Repository.service; using SlnMesnac.WPF.Model; using SlnMesnac.WPF.Page; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Timers; using System.Windows; #region << 版 本 注 释 >> /*-------------------------------------------------------------------- * 版权所有 (c) 2024 WenJY 保留所有权利。 * CLR版本:4.0.30319.42000 * 机器名称:LAPTOP-E0N2L34V * 命名空间:SlnMesnac.WPF.ViewModel * 唯一标识:14008fcc-0a31-4f1e-bc80-9f9ea84d3de5 * * 创建者:WenJY * 电子邮箱:wenjy@mesnac.com * 创建时间:2024-04-10 16:18:57 * 版本:V1.0.0 * 描述: * *-------------------------------------------------------------------- * 修改人: * 时间: * 修改说明: * * 版本:V1.0.0 *--------------------------------------------------------------------*/ #endregion << 版 本 注 释 >> namespace SlnMesnac.WPF.ViewModel { /// /// 设备参数监控 /// internal class RecipeManageViewModel : ViewModelBase { private BaseBusiness baseBusiness = null; private PlcAbsractFactory plc = null; private RecipeManageCache recipeManageCache = RecipeManageCache.Instance; private System.Timers.Timer refreshWeightTimer = new System.Timers.Timer(1000 * 5); private readonly ILogger _logger; /// /// 修改配方按钮 /// public RelayCommand UpdateRecipeCommand { get; set; } /// /// 手自动模式切换按钮 /// public RelayCommand ModeChangeCommand { get; set; } public RecipeManageViewModel() { _logger = App.ServiceProvider.GetService>(); baseBusiness = App.ServiceProvider.GetService(); UpdateRecipeCommand = new RelayCommand(obj => UpdateRecipe(obj)); ModeChangeCommand = new RelayCommand(obj => ModeChange(obj)); RrfreshDataGrid(); refreshWeightTimer.Elapsed += new System.Timers.ElapsedEventHandler(RefreshWeight); refreshWeightTimer.AutoReset = true; refreshWeightTimer.Enabled = true; refreshWeightTimer.Start(); } private void RefreshWeight(object? sender, ElapsedEventArgs e) { BufferWeight = recipeManageCache.BufferWeight.ToString("F2"); RecipeName = recipeManageCache.RecipeName; RecipeMode = recipeManageCache.RecipeMode; } public void RrfreshDataGrid() { BufferWeight = recipeManageCache.BufferWeight.ToString("F2"); RecipeName = recipeManageCache.RecipeName; RecipeMode = recipeManageCache.RecipeMode; List list = recipeManageCache.recipeManageList; if (list != null && list.Count > 0) { RecipeDataGrid.Clear(); foreach (var item in list) { RecipeDataGrid.Add(item); } } } #region 参数定义 /// /// 配方DataGrid /// private ObservableCollection recipeDataGrid = new ObservableCollection(); public ObservableCollection RecipeDataGrid { get { return recipeDataGrid; } set { recipeDataGrid = value; RaisePropertyChanged(() => RecipeDataGrid); } } //缓存区重量 private string bufferWeight = string.Empty; public string BufferWeight { get { return bufferWeight; } set { bufferWeight = value; RaisePropertyChanged(() => BufferWeight); } } //当前配方 private string recipeName = string.Empty; public string RecipeName { get { return recipeName; } set { recipeName = value; RaisePropertyChanged(() => RecipeName); } } //运行模式 private string recipeMode = string.Empty; public string RecipeMode { get { return recipeMode; } set { recipeMode = value; RaisePropertyChanged(() => RecipeMode); } } #endregion /// /// 更新配方 /// /// public void UpdateRecipe(int RecipeKey) { RecipeManageSetWindow window = new RecipeManageSetWindow(RecipeKey); window.ShowDialog(); RrfreshDataGrid(); } /// /// 模式切换 /// /// public void ModeChange(string param) { try { //切换自动模式 if ("auto".Equals(param)) { var result = MessageBox.Show("是否确认切换自动模式?", "确认", MessageBoxButton.YesNo, MessageBoxImage.Information); if (result == MessageBoxResult.Yes) { recipeManageCache.RecipeMode = "自动模式"; RecipeMode = "自动模式"; } } else if ("manual".Equals(param)) { RecipeModeSetWindow window = new RecipeModeSetWindow(); window.ShowDialog(); } RecipeName = recipeManageCache.RecipeName; RecipeMode = recipeManageCache.RecipeMode; }catch (Exception ex) { _logger.LogError("ModeChange异常:" + ex.Message); } } } }