Commit 4a5e4488 张东亮

分盘线

2 个父辈 411cfaab dd584799
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Web.Script.Serialization; using System.Web.Script.Serialization;
using AGVControl;
using RestSharp; using RestSharp;
namespace BLL namespace BLL
...@@ -190,6 +192,10 @@ namespace BLL ...@@ -190,6 +192,10 @@ namespace BLL
{ {
//防止上一个任务已执行但返回失败时,删除任务 //防止上一个任务已执行但返回失败时,删除任务
Del_Mission(info); Del_Mission(info);
var key = Common.agvMission.Where(qq => qq.Value == mission_id).Select(qq => qq.Key);
info.CurTaskName = key.ToList()[0];
Common.log.OutInfo(string.Format("{0} Add_Mission [{1}]", info.Name, key.ToList()[0]));
string url = "http://" + info.IP + "/api/v2.0.0/mission_queue"; string url = "http://" + info.IP + "/api/v2.0.0/mission_queue";
string body = "{\"mission_id\":\"" + mission_id + "\"}"; string body = "{\"mission_id\":\"" + mission_id + "\"}";
...@@ -227,6 +233,9 @@ namespace BLL ...@@ -227,6 +233,9 @@ namespace BLL
{ {
//防止上一个任务已执行但返回失败时,删除任务 //防止上一个任务已执行但返回失败时,删除任务
Del_Mission(info); Del_Mission(info);
var key = Common.agvMission.Where(qq => qq.Value == mission_id).Select(qq => qq.Key);
info.CurTaskName = key.ToList()[0];
Common.log.OutInfo(string.Format("{0} Add_Mission_Fleet [{1}]", info.Name, key.ToList()[0]));
string ip = AGVControl.Common.appConfig.AppSettings.Settings["FLEET"].Value; string ip = AGVControl.Common.appConfig.AppSettings.Settings["FLEET"].Value;
string url = "http://" + ip + "/api/v2.0.0/mission_scheduler"; string url = "http://" + ip + "/api/v2.0.0/mission_scheduler";
......
...@@ -345,10 +345,9 @@ namespace AGVControl ...@@ -345,10 +345,9 @@ namespace AGVControl
/// </summary> /// </summary>
public bool StandbyTemp { set; get; } public bool StandbyTemp { set; get; }
/// <summary>
/// 是否清除任务缓存 public string CurTaskName { get; set; }
/// </summary>
public bool IsClearRunInfo = false;
/// <summary> /// <summary>
/// 剩余出库任务,针对包装仓出库 /// 剩余出库任务,针对包装仓出库
/// </summary> /// </summary>
...@@ -383,32 +382,36 @@ namespace AGVControl ...@@ -383,32 +382,36 @@ namespace AGVControl
public string[] ToRow() public string[] ToRow()
{ {
//AGV名称,IP,AGV状态,任务状态,地点,后续任务,在线,电量,调用,清除缓存 //AGV名称,IP,AGV状态,任务状态,地点,后续任务,在线,电量,调用,清除缓存
string[] s = new string[11]; List<string> vs = new List<string>();
s[0] = Name; vs.Add(Name);
s[1] = IP; // vs.Add(IP);
if (IsCon) if (IsCon)
{ {
s[2] = StateText; vs.Add(StateText);
s[3] = string.Format("{0}({1})", MissionStatus.ToString(), (int)MissionStatus); vs.Add(string.Format("{0}({1})", MissionStatus.ToString(), (int)MissionStatus));
s[4] = Mark; vs.Add(Mark);
s[5] = Place; vs.Add(RFID);
s[6] = NextMission; vs.Add(Place);
vs.Add(NextMission);
} }
s[7] = IsCon.ToString(); else
s[8] = Battery + "%"; vs.AddRange(new string[]{ "","","","","",""});
s[9] = IsUse.ToString(); vs.Add(IsCon.ToString());
s[10] = "Clear"; vs.Add(Battery + "%");
vs.Add(IsUse.ToString());
return s; vs.Add("Clear");
return vs.ToArray();
} }
public string[] ToMission() public string[] ToMission()
{ {
//AGV名称,IP,AGV状态,任务状态,地点,后续任务,在线,电量,调用,清除缓存 //AGV名称,IP,AGV状态,任务状态,地点,后续任务,在线,电量,调用,清除缓存
string[] s = new string[2]; string[] s = new string[3];
s[0] = Name; s[0] = Name;
s[1] = Mission_text; s[1] = CurTaskName;
s[2] = Mission_text;
return s; return s;
} }
......
using BLL; using System;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Data; using System.Data;
...@@ -32,6 +31,8 @@ namespace AGVControl ...@@ -32,6 +31,8 @@ namespace AGVControl
n = DgvAgv.Rows.Add(Common.agvInfo[i].ToRow()); n = DgvAgv.Rows.Add(Common.agvInfo[i].ToRow());
dgvMission.Rows.Add(Common.agvInfo[i].ToMission()); dgvMission.Rows.Add(Common.agvInfo[i].ToMission());
DgvAgv.Rows[n].HeaderCell.Value = (n + 1).ToString(); DgvAgv.Rows[n].HeaderCell.Value = (n + 1).ToString();
if (i % 2 == 0)
DgvAgv.Rows[n].DefaultCellStyle.BackColor = Color.LightBlue;
if (!Common.agvInfo[i].IsCon) if (!Common.agvInfo[i].IsCon)
DgvAgv.Rows[n].DefaultCellStyle.ForeColor = Color.Red; DgvAgv.Rows[n].DefaultCellStyle.ForeColor = Color.Red;
} }
...@@ -40,6 +41,8 @@ namespace AGVControl ...@@ -40,6 +41,8 @@ namespace AGVControl
{ {
n = DgvNode.Rows.Add(Common.nodeInfo[i].ToRow()); n = DgvNode.Rows.Add(Common.nodeInfo[i].ToRow());
DgvNode.Rows[n].HeaderCell.Value = (n + 1).ToString(); DgvNode.Rows[n].HeaderCell.Value = (n + 1).ToString();
if (i % 2 == 0)
DgvNode.Rows[n].DefaultCellStyle.BackColor = Color.LightBlue;
if (!Common.nodeInfo[i].Online) if (!Common.nodeInfo[i].Online)
DgvNode.Rows[n].DefaultCellStyle.ForeColor = Color.Red; DgvNode.Rows[n].DefaultCellStyle.ForeColor = Color.Red;
} }
...@@ -67,7 +70,7 @@ namespace AGVControl ...@@ -67,7 +70,7 @@ namespace AGVControl
label4.Text = ""; label4.Text = "";
foreach (var item in Common.agvInfo) foreach (var item in Common.agvInfo)
{ {
task += string.Format("{0}: [Mark={1}] [RFID={2}] [剩余任务={3}]\r\n",item.Name,item.Mark,item.RFID,item.LeftTaskCnt); task += string.Format("{0}: [Mark={1}] [RFID={2}] [剩余任务={3}]\r\n", item.Name, item.Mark, item.RFID, item.LeftTaskCnt);
} }
label4.Text = task; label4.Text = task;
})); }));
...@@ -163,15 +166,23 @@ namespace AGVControl ...@@ -163,15 +166,23 @@ namespace AGVControl
} }
else if (e.ColumnIndex == 10) else if (e.ColumnIndex == 10)
{ {
if (Common.agvInfo[e.RowIndex].Mark.Length>1)
{
if(MessageBox.Show(Common.agvInfo[e.RowIndex].Name + " 正在执行出库任务,确定清除当前任务?","警告",MessageBoxButtons.YesNo) == DialogResult.No)
{
return;
}
}
Common.agvInfo[e.RowIndex].IsUse = false;
//清除小车缓存 //清除小车缓存
Common.log.OutInfo(string.Format("手动清除缓存,{0} {1} Mark={2}", Common.agvInfo[e.RowIndex].Name, Common.agvInfo[e.RowIndex].Place, Common.agvInfo[e.RowIndex].Mark)); Common.log.OutInfo(string.Format("手动清除小车缓存:{0}[CurTaskName={1}]", Common.agvInfo[e.RowIndex].ToRow(), Common.agvInfo[e.RowIndex].CurTaskName));
string place = Common.agvInfo[e.RowIndex].Place; string place = Common.agvInfo[e.RowIndex].Place;
Common.agvInfo[e.RowIndex].Mark = ""; Common.agvInfo[e.RowIndex].Mark = "";
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; Common.agvInfo[e.RowIndex].LeftTaskCnt = 0;
DgvAgv.Rows[e.RowIndex].SetValues(Common.agvInfo[e.RowIndex].ToRow()); Common.agvInfo[e.RowIndex].CurTaskName = "";
//清除节点缓存 //清除节点缓存
int idx = Common.nodeInfo.FindIndex(s => s.Name == place); int idx = Common.nodeInfo.FindIndex(s => s.Name == place);
...@@ -180,7 +191,14 @@ namespace AGVControl ...@@ -180,7 +191,14 @@ namespace AGVControl
Common.nodeInfo[idx].AgvName = ""; Common.nodeInfo[idx].AgvName = "";
DgvNode.Rows[idx].Cells[5].Value = ""; DgvNode.Rows[idx].Cells[5].Value = "";
} }
idx = Common.nodeInfo.FindIndex(s => s.AgvName == Common.agvInfo[e.RowIndex].Name);
if (idx > -1)
{
Common.nodeInfo[idx].AgvName = "";
DgvNode.Rows[idx].Cells[5].Value = "";
}
string task = ""; string task = "";
Invoke(new Action(() => Invoke(new Action(() =>
{ {
label4.Text = ""; label4.Text = "";
...@@ -190,9 +208,11 @@ namespace AGVControl ...@@ -190,9 +208,11 @@ namespace AGVControl
} }
label4.Text = task; label4.Text = task;
})); }));
//添加Init任务 //添加Init任务
Common.mir.Add_Mission_Fleet(Common.agvInfo[e.RowIndex], Common.agvMission["Init"]); Common.mir.Add_Mission_Fleet(Common.agvInfo[e.RowIndex], Common.agvMission["Init"]);
Common.mir.State_Ready(Common.agvInfo[e.RowIndex]); Common.mir.State_Ready(Common.agvInfo[e.RowIndex]);
DgvAgv.Rows[e.RowIndex].SetValues(Common.agvInfo[e.RowIndex].ToRow());
} }
} }
...@@ -209,7 +229,7 @@ namespace AGVControl ...@@ -209,7 +229,7 @@ namespace AGVControl
else if (e.ColumnIndex == 8) else if (e.ColumnIndex == 8)
{ {
//清除节点缓存 //清除节点缓存
Common.log.OutInfo(string.Format("手动清除缓存,{0} {1}", Common.nodeInfo[e.RowIndex].AgvName, Common.nodeInfo[e.RowIndex].Name)); Common.log.OutInfo(string.Format("手动清除节点缓存,{0} {1}", Common.nodeInfo[e.RowIndex].AgvName, Common.nodeInfo[e.RowIndex].Name));
string name = Common.nodeInfo[e.RowIndex].AgvName; string name = Common.nodeInfo[e.RowIndex].AgvName;
Common.nodeInfo[e.RowIndex].AgvName = ""; Common.nodeInfo[e.RowIndex].AgvName = "";
DgvNode.Rows[e.RowIndex].Cells[5].Value = ""; DgvNode.Rows[e.RowIndex].Cells[5].Value = "";
...@@ -218,10 +238,13 @@ namespace AGVControl ...@@ -218,10 +238,13 @@ namespace AGVControl
int idx = Common.agvInfo.FindIndex(s => s.Name == name); int idx = Common.agvInfo.FindIndex(s => s.Name == name);
if (idx > -1) if (idx > -1)
{ {
Common.agvInfo[idx].Mark = "";
Common.agvInfo[idx].Place = "";
Common.agvInfo[idx].RFID = "";
Common.agvInfo[idx].NextMission = ""; Common.agvInfo[idx].NextMission = "";
Common.agvInfo[e.RowIndex].Mark = "";
Common.agvInfo[e.RowIndex].Place = "";
Common.agvInfo[e.RowIndex].RFID = "";
Common.agvInfo[e.RowIndex].NextMission = "";
Common.agvInfo[e.RowIndex].LeftTaskCnt = 0;
Common.agvInfo[e.RowIndex].CurTaskName = "";
DgvAgv.Rows[idx].SetValues(Common.agvInfo[idx].ToRow()); DgvAgv.Rows[idx].SetValues(Common.agvInfo[idx].ToRow());
//添加Init任务 //添加Init任务
Common.mir.Add_Mission_Fleet(Common.agvInfo[idx], Common.agvMission["Init"]); Common.mir.Add_Mission_Fleet(Common.agvInfo[idx], Common.agvMission["Init"]);
...@@ -240,21 +263,14 @@ namespace AGVControl ...@@ -240,21 +263,14 @@ namespace AGVControl
if (idx < 0) return; if (idx < 0) return;
if (Common.agvInfo[idx].IsCon) if (Common.agvInfo[idx].IsCon)
{ {
if(!Common.agvInfo[idx].IsClearRunInfo)
{ bool rtn = Common.mir.Add_Mission(Common.agvInfo[idx], Common.agvMission[LstAgvPlace.Text]);
MessageBox.Show("请先清除当前小车的任务缓存!");
return;
}
bool rtn = Common.mir.Add_Mission_Fleet(Common.agvInfo[idx], Common.agvMission[LstAgvPlace.Text]);
if (!rtn) if (!rtn)
return; return;
Common.agvInfo[idx].Place = ""; Common.agvInfo[idx].Place = "";
Common.agvInfo[idx].IsClearRunInfo = false; Common.log.OutInfo("手动添加任务: " + LstAgvPlace.Text);
//if (LstAgvPlace.Text.StartsWith("Move") && LstAgvPlace.Text.Length ==6) Common.log.OutTextBox("手动添加任务: " + LstAgvPlace.Text);
//{ DgvAgv.Rows[idx].SetValues(Common.agvInfo[idx].ToRow());
// Common.agvInfo[idx].Place = LstAgvPlace.Text.Substring(4);
//}
} }
} }
catch(Exception ex){ Common.log.OutInfo("手动添加任务失败: " + ex.Message + ex.StackTrace); }; catch(Exception ex){ Common.log.OutInfo("手动添加任务失败: " + ex.Message + ex.StackTrace); };
...@@ -325,7 +341,7 @@ namespace AGVControl ...@@ -325,7 +341,7 @@ namespace AGVControl
private void BtnReadWriteCharge_Click(object sender, EventArgs e) private void BtnReadWriteCharge_Click(object sender, EventArgs e)
{ {
string name = (sender as System.Windows.Forms.Control).Name; string name = (sender as Control).Name;
int num = Convert.ToInt32(name.Substring(name.Length - 1, 1)); int num = Convert.ToInt32(name.Substring(name.Length - 1, 1));
if (name.IndexOf("Read") > 0) if (name.IndexOf("Read") > 0)
...@@ -385,6 +401,5 @@ namespace AGVControl ...@@ -385,6 +401,5 @@ namespace AGVControl
{ {
System.Diagnostics.Process.Start(".\\AGV点位分布.xlsx"); System.Diagnostics.Process.Start(".\\AGV点位分布.xlsx");
} }
} }
} }
...@@ -106,6 +106,8 @@ namespace AGVControl ...@@ -106,6 +106,8 @@ namespace AGVControl
new ClientNode("A2", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["A2"].Value)), new ClientNode("A2", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["A2"].Value)),
new ClientNode("A3", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["A3"].Value)), new ClientNode("A3", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["A3"].Value)),
new ClientNode("A4", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["A4"].Value)), new ClientNode("A4", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["A4"].Value)),
new ClientNode("A7", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["A7"].Value)),
new ClientNode("A8", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["A8"].Value)),
new ClientNode("B1", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["B1"].Value)), new ClientNode("B1", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["B1"].Value)),
new ClientNode("B2", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["B2"].Value)), new ClientNode("B2", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["B2"].Value)),
new ClientNode("B3", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["B3"].Value)), new ClientNode("B3", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["B3"].Value)),
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!