LiftContext.cs
3.9 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
132
133
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DeviceLibrary.lift
{
public class LiftContext
{
/// <summary>
/// 所有电梯
/// </summary>
static Dictionary<string, LiftStatus> lifts = new Dictionary<string, LiftStatus>();
public static void Init()
{
string[] names = Common.AppConfigHelper.GetValue(Common.SettingString.Lift_Names).Split(',');
foreach (var item in names)
{
lifts.Add(item, new LiftStatus());
}
Common.LogUtil.info($"加载电梯信息完成:{string.Join(",",names)}");
}
/// <summary>
/// 电梯是否开门
/// </summary>
/// <param name="liftId"></param>
/// <returns></returns>
public static bool IsDoorOpen(string liftId,int floor)
{
LiftStatus liftStatus = GetLiftStatus(liftId);
if (liftStatus.door.Equals("opened") && liftStatus.floor.Equals(floor))
return true;
return false;
}
/// <summary>
/// 电梯关门
/// </summary>
/// <param name="liftId"></param>
public static void CloseDoor(string liftId)
{
}
/// <summary>
/// 请求使用电梯
/// </summary>
/// <param name="liftId"></param>
public static void Request(string liftId,service.model.MissionInfo missionInfo)
{
}
public static void SwitchControl(string liftId, service.model.MissionInfo missionInfo)
{
}
/// <summary>
/// 电梯开门
/// </summary>
/// <param name="liftId"></param>
public static void OpenDoor(string liftId)
{
}
/// <summary>
/// 运行到指定楼层
/// </summary>
/// <param name="liftId"></param>
/// <param name="floor"></param>
public static void RunTo(string liftId,int floor)
{
}
/// <summary>
/// 有架子需要离开电梯
/// </summary>
/// <param name="liftId"></param>
/// <returns></returns>
public static bool HasShelfNeedLeave(string liftId,string client,out LiftStatus liftStatus)
{
liftStatus = GetLiftStatus(liftId);
if (liftStatus.destinationClient.Equals(client))
return true;
return false;
}
/// <summary>
/// 检查该任务agv是否获得电梯控制权
/// </summary>
/// <param name="liftId"></param>
/// <param name="missionId"></param>
/// <returns></returns>
public static bool CheckIfRequestOk(string liftId,service.model.MissionInfo mission)
{
LiftStatus liftStatus = GetLiftStatus(liftId);
if (liftStatus.missionId.Equals(mission.missionId))
return true;
return false;
}
/// <summary>
/// 获取电梯状态
/// </summary>
/// <param name="liftId"></param>
/// <returns></returns>
static LiftStatus GetLiftStatus(string liftId)
{
if (lifts.ContainsKey(liftId))
{
return lifts[liftId];
}
else
return new LiftStatus();
}
public static string[] GetLiftNames()
{
return lifts.Keys.ToArray();
}
static void UpdateStatus(ClientStatus status)
{
try
{
LiftStatus lift = HttpManager.UpdateStatusToLift(status);
if(lift!=null)
{
lifts[status.liftId] = lift;
}
}
catch(Exception e)
{
Common.LogUtil.error($"上报状态给电梯失败:{status.ToString()}",e);
}
}
}
}