UploadManager.cs
4.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
100
101
102
103
104
105
106
107
108
109
110
111
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();
static string errstring = "";
/// <summary>
/// 上传AGV状态,每10秒上传一次
/// </summary>
public static void UploadAgvState()
{
if (Monitor.TryEnter(locupdate))
{
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.StateID.Equals(eAGVState.Error) || item.StateID.Equals(eAGVState.EmergencyStop))
{
agvState.state = "故障中";
if (item.Errors != null && item.Errors.Count > 0)
{
string tmp = string.Join(";", item.Errors);
if (!tmp.Equals(errstring))
{
Common.LogUtil.error(tmp);
errstring = tmp;
}
}
// agvState.remark = string.Join(";",item.Errors);
}
else if (item.Auto)
{
if (item.IsDebug)
agvState.state = "调试中";
else if (item.CurJob != null && item.CurJob is StandyJob)
{
agvState.state = "归位中";
}
else if (item.CurJob != null && item.CurJob is ChargeJob)
{
agvState.state = "充电中";
}
else 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
agvState.state = "自动";
}
else
{
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,bool iserror=false)
{
try
{
string txt = Common.JsonHelper.SerializeObject(transportStatus);
HttpManager.UpdateAGVtranstask(txt, iserror);
}
catch (Exception ex)
{
Common.LogUtil.error($"UploadTransportStatus:{Common.JsonHelper.SerializeObject(transportStatus)}", ex);
}
}
#endregion
}
}