Commit 0658470f 张东亮

更改在A4出料后停止不动情况

1 个父辈 34358720
...@@ -81,20 +81,12 @@ namespace BLL ...@@ -81,20 +81,12 @@ namespace BLL
continue; continue;
} }
Common.log.OutInfo(Common.agvInfo[i].Name + " " + Common.agvInfo[i].MissionStatus); Common.log.OutInfo("AgvCall " + Common.agvInfo[i].Name + " " + Common.agvInfo[i].MissionStatus);
switch (Common.agvInfo[i].MissionStatus) switch (Common.agvInfo[i].MissionStatus)
{ {
case Mission_Status.None: //有空闲车辆 case Mission_Status.None: //有空闲车辆
if (!Common.agvInfo[i].TaskSend) if (!Common.agvInfo[i].TaskSend)
{ {
//if (Common.chargeStatus.AutoCharge && Common.agvInfo[i].Battery < 70 &&
// Common.agvInfo[i].WaitTime >= Common.chargeStatus.chargeWait * 60000)
//{
// Common.log.OutInfo(Common.agvInfo[i].Name + " 闲置时间超过" + Common.chargeStatus.chargeWait + "分钟");
// if (StatusCharge(Common.agvInfo[i]))
// break;
//}
if (Common.chargeStatus.AutoCharge) if (Common.chargeStatus.AutoCharge)
{ {
if (Common.agvInfo[i].Battery <= Common.chargeStatus.chargeMin) if (Common.agvInfo[i].Battery <= Common.chargeStatus.chargeMin)
...@@ -109,9 +101,8 @@ namespace BLL ...@@ -109,9 +101,8 @@ namespace BLL
if (StatusCharge(Common.agvInfo[i])) if (StatusCharge(Common.agvInfo[i]))
break; break;
} }
}
}
StatusNone(i); StatusNone(i);
} }
...@@ -174,7 +165,7 @@ namespace BLL ...@@ -174,7 +165,7 @@ namespace BLL
AgvChanged?.Invoke(idx); AgvChanged?.Invoke(idx);
} }
//log = Common.agvInfo[idx].Name + " Online"; //log = Common.agvInfo[idx].Name + " Online";
// Common.log.OutInfo(log); // Common.log.OutInfo(log);
//Common.log.OutTextBox(log); //Common.log.OutTextBox(log);
} }
else else
...@@ -206,98 +197,103 @@ namespace BLL ...@@ -206,98 +197,103 @@ namespace BLL
for (int i = 0; i < Common.agvInfo.Count; i++) for (int i = 0; i < Common.agvInfo.Count; i++)
{ {
if (!loop) break; try
change = false; {
if (!loop) break;
change = false;
//检查IP,判断是否在线 //检查IP,判断是否在线
if (!CheckOnline(i)) continue; if (!CheckOnline(i)) continue;
//获取AGV状态 //获取AGV状态
log = Common.agvInfo[i].Name; log = Common.agvInfo[i].Name;
Thread.Sleep(50); Thread.Sleep(50);
rtn = Common.mir.Get_State(Common.agvInfo[i], out int stateID, out string stateText, out int battery,out string mission_text); rtn = Common.mir.Get_State(Common.agvInfo[i], out int stateID, out string stateText, out int battery, out string mission_text);
if (rtn) if (rtn)
{
if (Common.agvInfo[i].StateID != stateID)
{
Common.agvInfo[i].StateID = stateID;
Common.agvInfo[i].StateText = stateText;
change = true;
}
if (Common.agvInfo[i].Battery != battery)
{
Common.agvInfo[i].Battery = battery;
change = true;
}
if (Common.agvInfo[i].Mission_text != mission_text)
{ {
Common.agvInfo[i].Mission_text = mission_text; if (Common.agvInfo[i].StateID != stateID)
change = true;
if (mission_text.Equals("停靠") || mission_text.ToLower().Equals("DOCKING"))
{ {
Common.agvInfo[i].DockingInfo.startTime = DateTime.Now; Common.agvInfo[i].StateID = stateID;
Common.agvInfo[i].DockingInfo.IsDocking = true; Common.agvInfo[i].StateText = stateText;
change = true;
} }
} if (Common.agvInfo[i].Battery != battery)
log += " " + stateText + " " + mission_text + " " + battery + "%"; {
Common.agvInfo[i].Battery = battery;
change = true;
}
if (Common.agvInfo[i].Mission_text != mission_text)
{
Common.agvInfo[i].Mission_text = mission_text;
change = true;
if (mission_text.Equals("停靠") || mission_text.ToLower().Equals("DOCKING"))
{
Common.agvInfo[i].DockingInfo.startTime = DateTime.Now;
Common.agvInfo[i].DockingInfo.IsDocking = true;
}
}
log += " " + stateText + " " + mission_text + " " + battery + "%";
//上报异常 //上报异常
bool isAlarm = false; bool isAlarm = false;
List<AlarmMsg> msglist = new List<AlarmMsg>(); List<AlarmMsg> msglist = new List<AlarmMsg>();
if (Common.agvInfo[i].DockingInfo.IsDocking && (DateTime.Now - Common.agvInfo[i].DockingInfo.startTime).TotalMinutes.Equals(1)) if (Common.agvInfo[i].DockingInfo.IsDocking && (DateTime.Now - Common.agvInfo[i].DockingInfo.startTime).TotalMinutes.Equals(1))
{ {
isAlarm = true; isAlarm = true;
Common.agvInfo[i].DockingInfo.IsDocking = false; Common.agvInfo[i].DockingInfo.IsDocking = false;
msglist.Add(new AlarmMsg(Common.agvInfo[i].Name, "agv." + Common.agvInfo[i].Name + ".Docking", mission_text)); msglist.Add(new AlarmMsg(Common.agvInfo[i].Name, "agv." + Common.agvInfo[i].Name + ".Docking", mission_text));
} }
if (battery <= 10) if (battery <= 10)
{ {
isAlarm = true; isAlarm = true;
msglist.Add(new AlarmMsg(Common.agvInfo[i].Name, "agv." + Common.agvInfo[i].Name + ".battery", "电量 " + battery.ToString() + "%")); msglist.Add(new AlarmMsg(Common.agvInfo[i].Name, "agv." + Common.agvInfo[i].Name + ".battery", "电量 " + battery.ToString() + "%"));
}
if (stateText.Equals("Error") || stateText.Equals("EmergencyStop") || stateText.Equals("Pause"))
{
isAlarm = true;
msglist.Add(new AlarmMsg(Common.agvInfo[i].Name, "agv." + Common.agvInfo[i].Name + ".Error.EmergencyStop", "agv状态 " + stateText));
}
if (isAlarm)
BLL.AGVManager.updateDeviceAlarmMsg(msglist);
} }
if (stateText.Equals("Error") || stateText.Equals("EmergencyStop")|| stateText.Equals("Pause")) else
{ {
isAlarm = true; log += " Get_State调用失败";
msglist.Add(new AlarmMsg(Common.agvInfo[i].Name, "agv." + Common.agvInfo[i].Name + ".Error.EmergencyStop", "agv状态 "+stateText));
} }
if (isAlarm)
BLL.AGVManager.updateDeviceAlarmMsg(msglist);
}
else
{
log += " Get_State调用失败";
}
//获取任务状态 //获取任务状态
Thread.Sleep(50); Thread.Sleep(50);
rtn = Common.mir.Get_Register(Common.agvInfo[i], REG_STATUS, out int regValue); rtn = Common.mir.Get_Register(Common.agvInfo[i], REG_STATUS, out int regValue);
if (rtn) if (rtn)
{
if ((int)Common.agvInfo[i].MissionStatus != regValue)
{ {
Common.agvInfo[i].MissionStatus = (Mission_Status)regValue; if ((int)Common.agvInfo[i].MissionStatus != regValue)
change = true; {
} Common.agvInfo[i].MissionStatus = (Mission_Status)regValue;
change = true;
}
//闲置时间
if (Common.agvInfo[i].MissionStatus == Mission_Status.None)
Common.agvInfo[i].WaitTime += Environment.TickCount - time;
else
Common.agvInfo[i].WaitTime = 0;
//闲置时间 log += " " + Common.agvInfo[i].MissionStatus.ToString();
if (Common.agvInfo[i].MissionStatus == Mission_Status.None) }
Common.agvInfo[i].WaitTime += Environment.TickCount - time;
else else
Common.agvInfo[i].WaitTime = 0; {
log += " Get_Register调用失败";
}
log += " " + Common.agvInfo[i].MissionStatus.ToString(); if (change)
AgvChanged?.Invoke(i);
Common.log.OutInfo(log);
} }
else catch (Exception ex)
{ {
log += " Get_Register调用失败"; Common.log.OutError(ex);
} }
if(change)
AgvChanged?.Invoke(i);
Common.log.OutInfo(log);
...@@ -331,9 +327,9 @@ namespace BLL ...@@ -331,9 +327,9 @@ namespace BLL
string log; string log;
double sp = (DateTime.Now.Ticks - Common.chargeStatus.chargeInterval) / 10000000.0; double sp = (DateTime.Now.Ticks - Common.chargeStatus.chargeInterval) / 10000000.0;
//防止两车同时充电卡住的情况 //防止两车同时充电卡住的情况
if ( sp< 60) if (sp < 60)
{ {
Common.log.OutInfo(agv.Name+" 与上一辆车的充电时间间隔为" + sp.ToString() +",小于60s,不能充电。"); Common.log.OutInfo(agv.Name + " 与上一辆车的充电时间间隔为" + sp.ToString() + ",小于60s,不能充电。");
return false; return false;
} }
...@@ -401,7 +397,12 @@ namespace BLL ...@@ -401,7 +397,12 @@ namespace BLL
Agv_Info agv = Common.agvInfo[agvIdx]; Agv_Info agv = Common.agvInfo[agvIdx];
int high = 0, middle = 0, low = 0; int high = 0, middle = 0, low = 0;
List<int> node = new List<int>(); List<int> node = new List<int>();
//清除节点AGV的名称
foreach (var item in Common.nodeInfo)
{
if (item.AgvName.Equals(agv.Name))
item.AgvName = "";
}
//B区域,需要出料,先拿料架 //B区域,需要出料,先拿料架
//Mark.Length>1防止Mark为0的情况,Mark=0是VMI的进料 //Mark.Length>1防止Mark为0的情况,Mark=0是VMI的进料
nodeIdx = Common.nodeInfo.FindIndex(s => s.Action == ClientAction.NeedEnter && s.AgvName.Equals("") && s.Mark.Length > 1 && s.IsUse); nodeIdx = Common.nodeInfo.FindIndex(s => s.Action == ClientAction.NeedEnter && s.AgvName.Equals("") && s.Mark.Length > 1 && s.IsUse);
...@@ -439,7 +440,7 @@ namespace BLL ...@@ -439,7 +440,7 @@ namespace BLL
MarkAdd(Common.nodeInfo[nodeIdx].Mark); MarkAdd(Common.nodeInfo[nodeIdx].Mark);
Common.log.OutString("Mark缓存 " + string.Join(",", Marks.ToArray())); Common.log.OutString("Mark缓存 " + string.Join(",", Marks.ToArray()));
log = string.Format("{0} Move To {1}[{2}] [{3}]", agv.Name, agv.Place, log = string.Format("{0} Move To {1}[{2}] [{3}]", agv.Name, agv.Place,
Common.nodeInfo[nodeIdx].Action.ToString(), Common.nodeInfo[nodeIdx].Mark); Common.nodeInfo[nodeIdx].Action.ToString(), Common.nodeInfo[nodeIdx].Mark);
Common.log.OutInfo(log); Common.log.OutInfo(log);
Common.log.OutTextBox(log); Common.log.OutTextBox(log);
...@@ -532,10 +533,10 @@ namespace BLL ...@@ -532,10 +533,10 @@ namespace BLL
//B区域出料架 //B区域出料架
if (Common.nodeInfo[node[i]].Name.StartsWith("B")) if (Common.nodeInfo[node[i]].Name.StartsWith("B"))
{ {
if (Common.nodeInfo[node[i]].Mark == "0") if (Common.nodeInfo[node[i]].Mark == "0" && Common.nodeInfo[node[i]].RFID.StartsWith("A"))//料仓读取到RFID的才获取锁定信息
{ {
//获取料架锁定信息 //获取料架锁定信息
AGVManager.GetShelfLockInfo(Common.nodeInfo[node[i]].Name, Common.nodeInfo[node[i]].RFID,shelfLockedNodeNames); AGVManager.GetShelfLockInfo(Common.nodeInfo[node[i]].Name, Common.nodeInfo[node[i]].RFID, shelfLockedNodeNames);
nodeIdx = node[i]; nodeIdx = node[i];
break; break;
} }
...@@ -557,7 +558,7 @@ namespace BLL ...@@ -557,7 +558,7 @@ namespace BLL
} }
} }
} }
else if (Common.nodeInfo[node[i]].Name == "A1" && Common.nodeInfo[node[i]].RFID.StartsWith("B")) else if (Common.nodeInfo[node[i]].Name == "A1" && Common.nodeInfo[node[i]].RFID.StartsWith("B"))//A1出料串,检查C1,3,5是否需要
{ {
int n = Common.nodeInfo.FindIndex(s => s.Name == "C1" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse); int n = Common.nodeInfo.FindIndex(s => s.Name == "C1" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse);
if (n == -1) n = Common.nodeInfo.FindIndex(s => s.Name == "C3" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse); if (n == -1) n = Common.nodeInfo.FindIndex(s => s.Name == "C3" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse);
...@@ -569,7 +570,7 @@ namespace BLL ...@@ -569,7 +570,7 @@ namespace BLL
break; break;
} }
} }
else if (Common.nodeInfo[node[i]].Name == "A1" && Common.nodeInfo[node[i]].RFID.StartsWith("A")) else if (Common.nodeInfo[node[i]].Name == "A1" && Common.nodeInfo[node[i]].RFID.StartsWith("A"))//B区域入料
{ {
if (FindAreaBEnter() > -1) if (FindAreaBEnter() > -1)
{ {
...@@ -577,7 +578,7 @@ namespace BLL ...@@ -577,7 +578,7 @@ namespace BLL
break; break;
} }
} }
else if(Common.nodeInfo[node[i]].Name == "C2" || Common.nodeInfo[node[i]].Name == "C4" || Common.nodeInfo[node[i]].Name == "C6") else if (Common.nodeInfo[node[i]].Name == "C2" || Common.nodeInfo[node[i]].Name == "C4" || Common.nodeInfo[node[i]].Name == "C6")//C2,4,6准备出料,C7,A2需要料
{ {
int n = Common.nodeInfo.FindIndex(s => s.Name == "C7" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse); int n = Common.nodeInfo.FindIndex(s => s.Name == "C7" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse);
if (n == -1) n = Common.nodeInfo.FindIndex(s => s.Name == "A2" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse); if (n == -1) n = Common.nodeInfo.FindIndex(s => s.Name == "A2" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse);
...@@ -588,7 +589,7 @@ namespace BLL ...@@ -588,7 +589,7 @@ namespace BLL
break; break;
} }
} }
else if (Common.nodeInfo[node[i]].Name == "C8") else if (Common.nodeInfo[node[i]].Name == "C8")//C8出往A2
{ {
int n = Common.nodeInfo.FindIndex(s => s.Name == "A2" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse); int n = Common.nodeInfo.FindIndex(s => s.Name == "A2" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse);
//入料口没有占用 //入料口没有占用
...@@ -617,14 +618,14 @@ namespace BLL ...@@ -617,14 +618,14 @@ namespace BLL
} }
else else
{ {
Common.log.OutInfo("test1 " + agv.Name + " " + Common.nodeInfo[nodeIdx].Name); Common.log.OutInfo("[StatusNone Assign Mission A1] " + agv.Name + " " + Common.nodeInfo[nodeIdx].Name);
MoveNode(agv, nodeIdx); MoveNode(agv, nodeIdx);
return; return;
} }
} }
else else
{ {
Common.log.OutInfo("test2 " + agv.Name + " " + Common.nodeInfo[nodeIdx].Name); Common.log.OutInfo("[StatusNone Assign Mission other] " + agv.Name + " " + Common.nodeInfo[nodeIdx].Name);
MoveNode(agv, nodeIdx); MoveNode(agv, nodeIdx);
return; return;
} }
...@@ -646,9 +647,9 @@ namespace BLL ...@@ -646,9 +647,9 @@ namespace BLL
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
...@@ -905,8 +906,8 @@ namespace BLL ...@@ -905,8 +906,8 @@ namespace BLL
} }
...@@ -1308,7 +1309,7 @@ namespace BLL ...@@ -1308,7 +1309,7 @@ namespace BLL
if (agv.Mark.Length > 1) if (agv.Mark.Length > 1)
{ {
rtn = FindNeedEnterWithMark(agv); rtn = FindNeedEnterWithMark(agv, true);
if (!rtn) if (!rtn)
{ {
//这个料架可以送走了 //这个料架可以送走了
...@@ -1345,14 +1346,14 @@ namespace BLL ...@@ -1345,14 +1346,14 @@ namespace BLL
} }
else else
{ {
if(shelfLockedNodeNames !=null && shelfLockedNodeNames.Count>0) if (shelfLockedNodeNames != null && shelfLockedNodeNames.Count > 0)
{ {
foreach (string item in shelfLockedNodeNames) foreach (string item in shelfLockedNodeNames)
{ {
nodeIdx = Common.nodeInfo.FindIndex(s => s.Name == item && s.Action == ClientAction.NeedEnter && (s.AgvName == "" || s.AgvName ==agv.Name) && s.IsUse); nodeIdx = Common.nodeInfo.FindIndex(s => s.Name == item && s.Action == ClientAction.NeedEnter && (s.AgvName == "" || s.AgvName == agv.Name) && s.IsUse);
if (nodeIdx > -1) if (nodeIdx > -1)
{ {
agv.NextMission = ""; agv.NextMission = "";
shelfLockedNodeNames.Remove(item); shelfLockedNodeNames.Remove(item);
return MoveNode(agv, nodeIdx); return MoveNode(agv, nodeIdx);
} }
...@@ -1360,7 +1361,7 @@ namespace BLL ...@@ -1360,7 +1361,7 @@ namespace BLL
{ {
int idx = Common.nodeInfo.FindIndex(s => s.Name == item); int idx = Common.nodeInfo.FindIndex(s => s.Name == item);
log = string.Format("[{0}] [ClientAction={1}] [IsUse={2}],不能搬运锁定的料架,到待机位等待" log = string.Format("[{0}] [ClientAction={1}] [IsUse={2}],不能搬运锁定的料架,到待机位等待"
,item,Common.nodeInfo[idx].Action,Common.nodeInfo[idx].IsUse); , item, Common.nodeInfo[idx].Action, Common.nodeInfo[idx].IsUse);
Common.log.OutInfo(log); Common.log.OutInfo(log);
if (!agv.StandbyTemp) if (!agv.StandbyTemp)
{ {
...@@ -1796,7 +1797,7 @@ namespace BLL ...@@ -1796,7 +1797,7 @@ namespace BLL
{ {
try try
{ {
string url = ConfigAppSettings.GetValue(Setting_Init.http_server)+"rest/api/qisda/device/emptyStoragePosCount"; string url = ConfigAppSettings.GetValue(Setting_Init.http_server) + "rest/api/qisda/device/emptyStoragePosCount";
Common.log.OutInfo("URL:" + url); Common.log.OutInfo("URL:" + url);
var client = new RestClient(url) { Timeout = -1 }; var client = new RestClient(url) { Timeout = -1 };
var request = new RestRequest(Method.GET); var request = new RestRequest(Method.GET);
...@@ -2014,7 +2015,7 @@ namespace BLL ...@@ -2014,7 +2015,7 @@ namespace BLL
} }
} }
private bool FindNeedEnterWithMark(Agv_Info agv) private bool FindNeedEnterWithMark(Agv_Info agv, bool BAreaLeaveCheck = false)
{ {
//寻找下一个任务点 //寻找下一个任务点
int nodeIdx = Common.nodeInfo.FindIndex(s => s.Action == ClientAction.NeedEnter && s.Mark == agv.Mark && s.AgvName == "" && s.IsUse); int nodeIdx = Common.nodeInfo.FindIndex(s => s.Action == ClientAction.NeedEnter && s.Mark == agv.Mark && s.AgvName == "" && s.IsUse);
...@@ -2024,15 +2025,27 @@ namespace BLL ...@@ -2024,15 +2025,27 @@ namespace BLL
} }
else else
{ {
bool rtn = AGVManager.LeaveCheck(agv,out int taskCount);
if (!BAreaLeaveCheck)
{
string log = agv.Name + " A4 FindNeedEnterWithMark [Mark=" + agv.Mark + "]";
Common.log.OutInfo(log);
return true;
}
bool rtn = AGVManager.LeaveCheck(agv, out int taskCount);
Thread.Sleep(3000); Thread.Sleep(3000);
if(!rtn)//出库任务还未完成 if (!rtn)//出库任务还未完成
{ {
//MoveStandby(agv); //MoveStandby(agv);
if (!agv.StandbyTemp) if (!agv.StandbyTemp)
{ {
agv.StandbyTemp = true; agv.StandbyTemp = true;
string log = agv.Name+ " [Mark=" + agv.Mark + "] 出库任务未完成,[taskCount=" + taskCount.ToString() + "] 移动到StandBy"; foreach (var item in Common.nodeInfo)
{
if (item.AgvName.Equals(agv.Name))
item.AgvName = "";
}
string log = agv.Name + " [Mark=" + agv.Mark + "] 出库任务未完成,[taskCount=" + taskCount.ToString() + "] 移动到StandBy";
Common.log.OutInfo(log); Common.log.OutInfo(log);
Common.mir.Add_Mission_Fleet(agv, Common.agvMission["MoveStandbyTemp"]); Common.mir.Add_Mission_Fleet(agv, Common.agvMission["MoveStandbyTemp"]);
} }
...@@ -2040,7 +2053,7 @@ namespace BLL ...@@ -2040,7 +2053,7 @@ namespace BLL
} }
else else
{ {
string log = agv.Name + " [Mark=" + agv.Mark +"] [taskCount = " + taskCount.ToString() + "] 出库任务完成"; string log = agv.Name + " [Mark=" + agv.Mark + "] [taskCount = " + taskCount.ToString() + "] 出库任务完成";
Common.log.OutInfo(log); Common.log.OutInfo(log);
//Common.log.OutTextBox(log); //Common.log.OutTextBox(log);
return false; return false;
......
...@@ -344,6 +344,11 @@ namespace AGVControl ...@@ -344,6 +344,11 @@ namespace AGVControl
/// 临时待机位,用于执行一次 /// 临时待机位,用于执行一次
/// </summary> /// </summary>
public bool StandbyTemp { set; get; } public bool StandbyTemp { set; get; }
/// <summary>
/// 是否清除任务缓存
/// </summary>
public bool IsClearRunInfo = false;
public struct DockingStru public struct DockingStru
{ {
......
...@@ -44,7 +44,13 @@ namespace AGVControl ...@@ -44,7 +44,13 @@ namespace AGVControl
} }
LstAgvPlace.Items.Clear(); LstAgvPlace.Items.Clear();
LstAgvPlace.Items.AddRange(Common.agvMission.Keys.ToArray()); foreach (var item in Common.agvMission.Keys.ToArray())
{
if (item.Length.Equals(6))
continue;
LstAgvPlace.Items.Add(item);
}
LstAgvPlace.SelectedIndex = 0; LstAgvPlace.SelectedIndex = 0;
} }
...@@ -175,6 +181,7 @@ namespace AGVControl ...@@ -175,6 +181,7 @@ namespace AGVControl
Common.agvInfo[e.RowIndex].Place = ""; Common.agvInfo[e.RowIndex].Place = "";
Common.agvInfo[e.RowIndex].RFID = ""; Common.agvInfo[e.RowIndex].RFID = "";
Common.agvInfo[e.RowIndex].NextMission = ""; Common.agvInfo[e.RowIndex].NextMission = "";
Common.agvInfo[e.RowIndex].IsClearRunInfo = true;
DgvAgv.Rows[e.RowIndex].SetValues(Common.agvInfo[e.RowIndex].ToRow()); DgvAgv.Rows[e.RowIndex].SetValues(Common.agvInfo[e.RowIndex].ToRow());
//清除节点缓存 //清除节点缓存
...@@ -228,11 +235,32 @@ namespace AGVControl ...@@ -228,11 +235,32 @@ namespace AGVControl
private void BtnMissionAdd_Click(object sender, EventArgs e) private void BtnMissionAdd_Click(object sender, EventArgs e)
{ {
if (DgvAgv.SelectedCells.Count == 0) return; try
int idx = DgvAgv.SelectedCells[0].RowIndex; {
if (idx < 0) return; if (DgvAgv.SelectedCells.Count == 0) return;
if (Common.agvInfo[idx].IsCon) int idx = DgvAgv.SelectedCells[0].RowIndex;
Common.mir.Add_Mission_Fleet(Common.agvInfo[idx], Common.agvMission[LstAgvPlace.Text]); if (idx < 0) return;
if (Common.agvInfo[idx].IsCon)
{
if(!Common.agvInfo[idx].IsClearRunInfo)
{
MessageBox.Show("请先清除当前小车的任务缓存!");
return;
}
bool rtn = Common.mir.Add_Mission_Fleet(Common.agvInfo[idx], Common.agvMission[LstAgvPlace.Text]);
if (!rtn)
return;
Common.agvInfo[idx].Place = "";
Common.agvInfo[idx].IsClearRunInfo = false;
//if (LstAgvPlace.Text.StartsWith("Move") && LstAgvPlace.Text.Length ==6)
//{
// Common.agvInfo[idx].Place = LstAgvPlace.Text.Substring(4);
//}
}
}
catch(Exception ex){ Common.log.OutInfo("手动添加任务失败: " + ex.Message + ex.StackTrace); };
} }
private void BtnClearError_Click(object sender, EventArgs e) private void BtnClearError_Click(object sender, EventArgs e)
......
...@@ -90,5 +90,5 @@ C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.csproj.GenerateResource. ...@@ -90,5 +90,5 @@ C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.csproj.GenerateResource.
C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.csproj.CopyComplete C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.csproj.CopyComplete
C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.exe C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.exe
C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.pdb C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.pdb
C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.csprojAssemblyReference.cache
C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.csproj.CoreCompileInputs.cache C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.csproj.CoreCompileInputs.cache
C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.csprojAssemblyReference.cache
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!