UploadManager.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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace DeviceLibrary.manager
{
public class UploadManager
{
#region 上传到ITS
static object locupdate = new object();
/// <summary>
/// 上传AGV状态,每10秒上传一次
/// </summary>
public static void UploadAgvState()
{
if (Monitor.TryEnter(locupdate, 2000))
{
try
{
List<service.model.AgvState> agvStates = new List<service.model.AgvState>();
foreach (AgvInfo item in AGVManager.agvInfo)
{
service.model.AgvState agvState = new service.model.AgvState()
{
agvNum = item.Name,
workshop = item.Scope.Workshop,
battery = item.Battery,
position = item.Position,
curTarget = item.Place.Name,
statusTxt = item.MissionText
};
if (item.CurJob != null && item.CurJob.JobParam != null && item.CurJob.JobParam.GetMissionInfo() != null)
{
agvState.state = "执行任务";
agvState.missionId = item.CurJob.JobParam.GetMissionInfo().missionId;
agvState.remark = item.CurJob.JobParam.GetMissionInfo().Remark;
}
else
{
if(item.StateID.Equals(eAGVState.Error) || item.StateID.Equals(eAGVState.EmergencyStop))
{
agvState.state = "故障中";
}
else if(item.CurJob!=null && item.CurJob is StandyJob)
{
agvState.state = "归位中";
}
else if (item.CurJob != null && item.CurJob is ChargeJob)
{
agvState.state = "充电中";
}
}
agvStates.Add(agvState);
}
string txt = Common.JsonHelper.SerializeObject(agvStates);
HttpManager.AgvReportState(txt);
//Common.LogUtil.debug($"输出所有Agv信息:{txt}");
}
finally
{
Monitor.Exit(locupdate);
}
}
}
/// <summary>
/// 运输状态上报
/// </summary>
/// <param name="transportStatus"></param>
public static void UploadTransportStatus(service.model.TransportStatus transportStatus)
{
try
{
string txt = Common.JsonHelper.SerializeObject(transportStatus);
//Common.LogUtil.info($"运输状态上报{txt}");
HttpManager.UpdateAGVtranstask(txt);
System.Threading.Thread.Sleep(2000);
}
catch(Exception ex) {
Common.LogUtil.error($"UploadTransportStatus:{Common.JsonHelper.SerializeObject(transportStatus)}",ex);
}
}
#endregion
}
}