MissionSys.cs
4.0 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
using Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DeviceLibrary
{
/// <summary>
/// 任务系统
/// </summary>
public class MissionSys
{
/// <summary>
/// 任务列表
/// </summary>
public static List<Mission> Missions;
/// <summary>
/// 根据任务名获取guid号
/// </summary>
/// <param name="taskName"></param>
/// <returns></returns>
public static string GetMissionGuidByName(string taskName)
{
Mission mission = Missions.Find(s => s.Name.Equals(taskName));
return mission.Guid;
}
/// <summary>
/// 向小车发送任务
/// </summary>
/// <returns></returns>
public static bool AssignMission(Agv_Info agv,string missionName)
{
bool rtn = false;
string guid = GetMissionGuidByName(missionName);
if (!guid.Equals(""))
{
if (agv.UseFleet)
{
rtn = MiR_API.Add_Mission_Fleet(agv, guid);
MiR_API.State_Ready(agv);
if (rtn)
{
LogUtil.info(string.Format("{0} Add_Mission_Fleet [{1}] OK", agv.Name, missionName));
}
else
{
LogUtil.info(string.Format("{0} Add_Mission_Fleet [{1}] Fail", agv.Name, missionName));
}
}
else
{
rtn = MiR_API.Add_Mission(agv, guid);
MiR_API.State_Ready(agv);
if (rtn)
{
LogUtil.info(string.Format("{0} Add_Mission [{1}] OK", agv.Name, missionName));
}
else
{
LogUtil.info(string.Format("{0} Add_Mission [{1}] Fail", agv.Name, missionName));
}
}
}
return rtn;
}
/// <summary>
/// 删除任务
/// </summary>
/// <returns></returns>
public static void DelMission(Agv_Info agv)
{
if (agv.UseFleet)
{
MiR_API.Del_Mission_Fleet(agv, agv.CurTaskGUID);
}
else
{
MiR_API.Del_Mission(agv);
}
LogUtil.info(string.Format("{0} DelMission [{1}] OK", agv.Name, agv.CurTaskName));
}
/// <summary>
/// 检查当前任务是否结束
/// </summary>
/// <param name="taskName">任务名称</param>
/// <param name="taskGUID">任务GUID</param>
/// <returns></returns>
public static bool CheckTaskFinished(Agv_Info agv,string taskName, string curTaskState)
{
LogUtil.debug(agv.Name + " 检查当前任务是否结束: " + taskName + " " + curTaskState);
return GetMissionGuidByName(taskName).Equals(agv.CurTaskGUID) && curTaskState.Equals(SettingString.Done);
}
/// <summary>
/// 检查当前是否分配成功
/// </summary>
/// <param name="taskName">任务名称</param>
/// <param name="taskGUID">任务GUID</param>
/// <returns></returns>
public static bool CheckTaskIsOK(Agv_Info agv, string taskName, string curTaskState)
{
return GetMissionGuidByName(taskName).Equals(agv.CurTaskGUID) && curTaskState.Equals(SettingString.Executing);
}
/// <summary>
/// 获取Fleet Job任务状态
/// </summary>
/// <param name="CurTaskID"></param>
/// <returns></returns>
public static string GetTakJobState(int CurTaskID)
{
if (!CurTaskID.Equals(-1) && MiR_API.Get_Task_State(CurTaskID, out string st))
return st;
return SettingString.Wait;
}
}
}