123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- using Prism.Commands;
- using Prism.Events;
- using ProjectManagementSystem.Common.Core;
- using ProjectManagementSystem.Device.CommandCallback;
- using ProjectManagementSystem.Device.Extenions;
- using ProjectManagementSystemView.Infrastructure.Events;
- using ProjectManagementSystemView.Infrastructure.Extensions;
- using ProjectManagementSystemView.Infrastructure.Models;
- using PropertyChanged;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- namespace ProjectManagementSystemView.ViewModels
- {
- [AddINotifyPropertyChangedInterface]
- public class DebugRailAgvViewModel
- {
- public bool IsVisible { get; set; }
- public int Mark { get; set; }
- public int Route { get; set; }
- public int AgvId { get; set; }
- public ObservableCollection<VmInfoAgv> VmDatas { get; set; } = new ObservableCollection<VmInfoAgv>();
- public VmInfoAgv SelectedVmData { get; set; }
- public DelegateCommand ReleaseAgvOnStopCommand { get; private set; }
- public DelegateCommand ReleaseAgvOnStandbyCommand { get; private set; }
- public DelegateCommand SimulateStatusStopCommand { get; private set; }
- public DelegateCommand SimulateStatusStandbyCommand { get; private set; }
- public DelegateCommand SimulateStatusRunningCommand { get; private set; }
- public DelegateCommand SelectionChangedCommand { get; private set; }
- public DebugRailAgvViewModel(IEventAggregator eventAggregator)
- {
- ReleaseAgvOnStopCommand = new DelegateCommand(() => RailAgvOpereate(DeviceControl.Instance.ReleaseAgvOnStop));
- ReleaseAgvOnStandbyCommand = new DelegateCommand(() => RailAgvOpereate(DeviceControl.Instance.ReleaseAgvOnStandby));
- SimulateStatusStopCommand = new DelegateCommand(() => RailAgvSimulate(EnumInfoAgvStatus.StopPoint));
- SimulateStatusStandbyCommand = new DelegateCommand(() => RailAgvSimulate(EnumInfoAgvStatus.EndPoint));
- SimulateStatusRunningCommand = new DelegateCommand(() => RailAgvSimulate(EnumInfoAgvStatus.Running));
- SelectionChangedCommand = new DelegateCommand(() =>
- {
- Mark = SelectedVmData?.Mark ?? 0;
- Route = SelectedVmData?.Route ?? 0;
- AgvId = SelectedVmData?.AgvId ?? 0;
- });
- eventAggregator.GetEvent<UpdateViewEvent>().Subscribe(UpdateView);
- }
- private void UpdateView()
- {
- if (!IsVisible) return;
- var dataList = DeviceControl.Instance.Communication.InfoAgvDictionary.Values;
- VmDatas.Update(dataList, (s, v) => s.AgvId == v.AgvId);
- }
- private void RailAgvOpereate(Action<int, int, int> action)
- {
- try
- {
- action(Mark, Route, AgvId);
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- private void RailAgvSimulate(EnumInfoAgvStatus status)
- {
- try
- {
- bool isContainsKey = DeviceControl.Instance.Communication.InfoAgvDictionary.TryGetValue(AgvId, out var infoAgv);
- var info = isContainsKey ? infoAgv : new InfoAgv();
- info.AgvId = AgvId;
- info.Mark = Mark;
- info.Route = Route;
- info.Status = (int)status;
- info.StatusText = info.Status.GetAgvStatusText();
- info.LastUpdateTime = DateTime.Now;
- DeviceControl.Instance.Communication.InfoAgvDictionary.AddOrUpdate(info.AgvId, info, (key, values) => info);
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- }
- }
|