Commit 4a5e4488 张东亮

分盘线

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