StandbyTask.cs
3.4 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
using CtuDeviceLib;
using Mushiny;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DeviceLibrary.CtuService
{
/// <summary>
/// 待机任务
/// </summary>
public class StandbyTask : CtuTaskBase
{
public StandbyTask(CTU ctu) : base(ctu)
{
Name = "待机任务";
var rtn = PathManger.GetNearStand(ctu, out CtuStandby ctuStandby);
if (rtn)
{
setDstName(ctuStandby.Name);
}
}
public override void Excute()
{
//当前位置不是目的地,就重新规划路线
if (MoveInfo.MoveStep != RunStep.Wait && MoveInfo.MoveStep != RunStep.Standby_01_MoveToDst)
{
if (ctu.CurLandMark != destination)
{
MoveInfo.NextMoveStep(RunStep.Wait);
MoveInfo.Info($"当前点位不在目标点【{DstName}】【{destination}】,重新进入去待机点");
}
}
switch (MoveInfo.MoveStep)
{
case RunStep.Wait:
if (string.IsNullOrEmpty(DstName))
{
var rtn = PathManger.GetNearStand(ctu, out CtuStandby ctuStandby);
if (rtn)
{
setDstName(ctuStandby.Name);
if (CalcDst())
{
MoveInfo.NextMoveStep(RunStep.Standby_01_MoveToDst);
MoveInfo.Info($"去待机点【{DstName}】【{destination}】");
}
else
{
Msg.add($"规划到{DstName}[{destination}]失败", MsgLevel.warning);
}
}
}
else
{
if (CalcDst())
{
MoveInfo.NextMoveStep(RunStep.Standby_01_MoveToDst);
MoveInfo.Info($"去待机点【{DstName}】【{destination}】");
}
else
{
Msg.add($"规划到{DstName}[{destination}]失败", MsgLevel.warning);
}
}
break;
case RunStep.Standby_01_MoveToDst:
if (IsFinished)
{
MoveInfo.NextMoveStep(RunStep.Standby_02_AtDst);
MoveInfo.Info($"已到达待机点【{DstName}】【{destination}】");
}
else
{
Move();
}
break;
case RunStep.Standby_02_AtDst:
MoveInfo.NextMoveStep(RunStep.CtuTask_ProcessFinished);
break;
case RunStep.CtuTask_ProcessFinished:
var ctuTask =OutTaskHelper.FindTasks(ctu);
if (ctuTask != null)
{
if (ctuTask is StandbyTask)
return;
ctu.CtuTask = ctuTask;
}
break;
}
}
}
}