MainVM.cs
4.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using HHECS.RobotTool.Common;
using HHECS.RobotTool.Service;
using HHECS.RobotTool.View;
using HHECS.RobotTool.View.CommunicationView;
using HHECS.RobotTool.View.EquipmentView;
using HHECS.RobotTool.View.RobotConfigView;
using System.Collections.ObjectModel;
using System.Windows;
using MessageBox = HandyControl.Controls.MessageBox;
namespace HHECS.RobotTool.ViewModel
{
internal partial class MainVM : ObservableObject
{
[ObservableProperty]
private bool btnStartEnabled = true;
[ObservableProperty]
private bool btnStopEnabled = false;
[ObservableProperty]
private ObservableCollection<LogModel> logModels = new ObservableCollection<LogModel>();
[ObservableProperty]
private CommunicationPage communicationPage = new CommunicationPage();
[ObservableProperty]
private EquipmentPage equipmentPage = new EquipmentPage();
[ObservableProperty]
private RobotConfigPage robotConfigPage = new RobotConfigPage();
[ObservableProperty]
private GrooveComputerPage grooveComputerPage = new GrooveComputerPage();
[ObservableProperty]
private bool kukaServerStatus;
private readonly CenterService _centerService;
private readonly KukaService _kukaService;
private readonly SystemLog _log = SystemLog.GetInstance();
public MainVM(CenterService centerService, KukaService kukaService)
{
_centerService = centerService;
_kukaService = kukaService;
RefreshLog();
}
[RelayCommand]
public void Start()
{
BtnStartEnabled = false;
BtnStopEnabled = true;
_centerService.Start();
}
[RelayCommand]
public void Stop()
{
BtnStartEnabled = true;
BtnStopEnabled = false;
_centerService.Stop();
}
[RelayCommand]
public void KukaServer()
{
if (KukaServerStatus)
{
var result = _kukaService.StartTcpServer();
if (!result.Success)
{
KukaServerStatus = false;
MessageBox.Error($"Kuka Tcp 服务启动失败:{result.Msg}");
}
_log.LogSuccess($"Kuka Tcp 服务已启动");
}
else
{
_kukaService.StopTcpServer();
_log.LogInfo($"Kuka Tcp 服务已关闭");
}
}
private void RefreshLog()
{
Task.Run(() =>
{
Application.Current.Dispatcher.Invoke(async () =>
{
do
{
while (!_log.IsEmpty)
{
var log = _log.GetLog();
if (log == null)
{
await Task.Delay(100);
continue;
}
var oldItem = LogModels.Where(x => x.Messages.Equals(log.Messages)).FirstOrDefault();
if (oldItem != null)
{
oldItem.CreateTime = log.CreateTime;
LogModels = new ObservableCollection<LogModel>(LogModels.OrderByDescending(x => x.CreateTime));
}
else
{
LogModels.Insert(0, new LogModel()
{
LogType = log.LogType,
Messages = log.Messages,
CreateTime = log.CreateTime
});
}
if (LogModels.Count > 50)
{
LogModels.Remove(LogModels.Last());
}
}
await Task.Delay(100);
} while (true);
});
});
}
}
}