Commit 4a17d764 张东亮

1号车只运C5,C6

1 个父辈 33d7371d
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="log4net"> <Reference Include="log4net">
<HintPath>..\..\..\..\DLL\log4net.dll</HintPath> <HintPath>dll\log4net.dll</HintPath>
</Reference> </Reference>
<Reference Include="Newtonsoft.Json, Version=3.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <Reference Include="Newtonsoft.Json, Version=3.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
......
...@@ -407,137 +407,168 @@ namespace BLL ...@@ -407,137 +407,168 @@ namespace BLL
bool rtn; bool rtn;
string log; string log;
Agv_Info agv = Common.agvInfo[agvIdx]; Agv_Info agv = Common.agvInfo[agvIdx];
//检测IO信号 if(agv.IP.Equals(Common.No1_IP))
rtn = Common.mir.Get_IO_Status(agv, out bool[] input, out bool[] output);
if (rtn)
{ {
if (input[3]) //检测IO信号
{ rtn = Common.mir.Get_IO_Status(agv, out bool[] input, out bool[] output);
agv.IsUse = false; if (rtn)
AgvChanged?.Invoke(agvIdx);
//System.Windows.Forms.MessageBox.Show("关闭小车调用,因检测到车上有料架/料串,不执行任务!请将料架移除再打开调用。");
Common.log.Info("关闭小车调用,因检测到车上有料架/料串,不执行任务!请将料架移除再打开调用。");
return;
}
int nodeIdx = -1;
int high = 0, middle = 0, low = 0;
List<int> node = new List<int>();
//清除节点AGV的名称
foreach (var item in Common.nodeInfo)
{ {
if (item.AgvName.Equals(agv.Name)) if (input[3])
{ {
item.AgvName = ""; agv.IsUse = false;
Common.log.Info("清除节点的AGV名称: 节点名:" + item.Name + ";AGV名称:" + agv.Name); AgvChanged?.Invoke(agvIdx);
//System.Windows.Forms.MessageBox.Show("关闭小车调用,因检测到车上有料架/料串,不执行任务!请将料架移除再打开调用。");
Common.log.Info("关闭小车调用,因检测到车上有料架/料串,不执行任务!请将料架移除再打开调用。");
return;
} }
int nodeIdx = -1;
} int high = 0, middle = 0, low = 0;
//B区域,需要出料,先拿料架 List<int> node = new List<int>();
//Mark.Length>1防止Mark为0的情况,Mark=0是VMI的进料 //清除节点AGV的名称
nodeIdx = Common.nodeInfo.FindIndex(s => s.Action == ClientAction.NeedEnter && s.AgvName.Equals("") && s.Mark.Length > 1 && s.IsUse); foreach (var item in Common.nodeInfo)
if (nodeIdx == -1)
{
Common.log.Info("B区没有找到NeedEnter的节点");
}
else//B区域需要出料
{
//Mark没有被缓存
int n = Marks.FindIndex(t => t == Common.nodeInfo[nodeIdx].Mark);
if (n == -1)//
{ {
n = Common.nodeInfo.FindIndex(s => s.Name == "A7" && s.Action == ClientAction.NeedLeave && if (item.AgvName.Equals(agv.Name))
s.RFID.StartsWith("A") && s.AgvName.Equals("") && s.IsUse);
if (n > -1)
{ {
agv.Place = Common.nodeInfo[n].Name; item.AgvName = "";
agv.Mark = Common.nodeInfo[nodeIdx].Mark; Common.log.Info("清除节点的AGV名称: 节点名:" + item.Name + ";AGV名称:" + agv.Name);
//agv.CloseDoor = false; }
rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["Move" + agv.Place]); }
if (rtn)
//需要出料架,且没有被标记
//A4是包装料仓的进料,不包含在内
//根据优先级调用
for (int i = 0; i < Common.nodeInfo.Count; i++)
{
if (Common.nodeInfo[i].Action == ClientAction.NeedLeave && Common.nodeInfo[i].Name != "A4" &&
Common.nodeInfo[i].AgvName == "" && Common.nodeInfo[i].IsUse)
{
switch (Common.nodeInfo[i].Level)
{ {
agv.CloseDoor = false; case ClientLevel.High:
Common.nodeInfo[n].AgvName = agv.Name; node.Insert(high++, i);
agv.TaskSend = true; middle++;
//_mark.Add(Common.nodeInfo[nodeIdx].Mark); low++;
MarkAdd(Common.nodeInfo[nodeIdx].Mark); break;
//Common.log.OutString("Mark缓存 " + string.Join(",", Marks.ToArray())); case ClientLevel.Middle:
node.Insert(middle++, i);
low++;
break;
case ClientLevel.Low:
node.Insert(low++, i);
break;
}
}
}
log = string.Format("{0} Move To {1}[{2}] [{3}]", agv.Name, agv.Place, if (node.Count == 0)
Common.nodeInfo[nodeIdx].Action.ToString(), Common.nodeInfo[nodeIdx].Mark); {
Common.log.Info(log); nodeIdx = -1;
Common.ShowLog(log); }
Common.mir.State_Ready(agv); else
Common.server.NodeRefresh(n); {
//按顺序取符合要求的
for (int i = 0; i < node.Count; i++)
{
if (Common.nodeInfo[node[i]].Name == "A1" && Common.nodeInfo[node[i]].RFID.StartsWith("B"))//A1出料串,检查C5是否需要
{
int n = Common.nodeInfo.FindIndex(s => s.Name == "C5" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse);
if (n > -1)
{
nodeIdx = node[i];
break;
}
} }
else
else if (agv.IP.Equals(Common.No1_IP) && Common.nodeInfo[node[i]].Name == "C6")//C6准备出空架子,A2需要料
{ {
agv.TaskSend = false; int n = Common.nodeInfo.FindIndex(s => s.Name == "A2" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse);
log = string.Format("{0} Move To {1} 失败", agv.Name, agv.Place); //入料口有一个没有占用
//防止上一个任务已执行但返回失败时,删除任务 if (n > -1)
//Common.mir.Del_Mission(agv); {
Common.log.Info(log); nodeIdx = node[i];
Common.ShowLog(log); break;
}
} }
} }
else
if (nodeIdx > -1)
{ {
//A4没有被占用 if (Common.nodeInfo[nodeIdx].Name == "A1")
n = Common.nodeInfo.FindIndex(s => s.Name == "A4" && s.Action == ClientAction.NeedLeave && s.AgvName.Equals("") && s.IsUse);
if (n == -1)
{ {
nodeIdx = -1; if (Common.nodeInfo[nodeIdx].RFID.Length == 0 || Common.nodeInfo[nodeIdx].RFID == "00")
Common.log.Info("A7,A4不是NeedLeave或被占用"); {
//Common.log.OutTextBox("A7,A4没有架子或被占用"); Common.log.Info("A1 RFID 错误");
#region 有出库任务,但A7,A4无空架子 //Common.log.OutTextBox("A1 RFID 错误");
//n = Common.nodeInfo.FindIndex(s => s.Name == "A8" && s.Action == ClientAction.NeedEnter && s.AgvName.Equals("") && s.IsUse); return;
//if (n == -1) }
//{ else
// ClientNode a8Node = Common.nodeInfo.Find(s => s.Name.Equals("A8")); {
// log = string.Format("A4、A7均无空架用于包装仓出库,且{0}已满,不可将A7架子放到{0}。需要人工干预 [ClientAction={1}]", a8Node.Name, a8Node.Action.ToString()); Common.log.Info("[StatusNone Assign Mission A1] " + agv.Name + " " + Common.nodeInfo[nodeIdx].Name);
// Common.log.Info(log); MoveNode(agv, nodeIdx);
// Common.ShowLog(log); return;
//} }
////A7,A4均无空架子,可将A7的架子移动到A8
//else
//{
// agv.Place = "A7";
// //agv.Mark = Common.nodeInfo[nodeIdx].Mark;
// //agv.CloseDoor = false;
// rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["Move" + agv.Place]);
// if (rtn)
// {
// agv.CloseDoor = false;
// Common.nodeInfo[n].AgvName = agv.Name;
// agv.TaskSend = true;
// //_mark.Add(Common.nodeInfo[nodeIdx].Mark);
// //MarkAdd(Common.nodeInfo[nodeIdx].Mark);
// log = string.Format("{0} Move To {1}[{2}] ", agv.Name, agv.Place,
// "A7,A4无料架用于包装仓");
// Common.log.Info(log);
// Common.ShowLog(log);
// Common.mir.State_Ready(agv);
// Common.server.NodeRefresh(n);
// AgvChanged?.Invoke(agvIdx);
// }
// else
// {
// agv.TaskSend = false;
// log = string.Format("{0} Move To {1}失败[{2}] ", agv.Name, agv.Place,
// "A7,A4无料架用于包装仓");
// //防止上一个任务已执行但返回失败时,删除任务
// //Common.mir.Del_Mission(agv);
// Common.log.Info(log);
// Common.ShowLog(log);
// }
//}
#endregion
} }
else else
{ {
Common.log.Info("[StatusNone Assign Mission other] " + agv.Name + " " + Common.nodeInfo[nodeIdx].Name);
MoveNode(agv, nodeIdx);
return;
}
}
}
}
}
else //除1号小车
{
//检测IO信号
rtn = Common.mir.Get_IO_Status(agv, out bool[] input, out bool[] output);
if (rtn)
{
if (input[3])
{
agv.IsUse = false;
AgvChanged?.Invoke(agvIdx);
//System.Windows.Forms.MessageBox.Show("关闭小车调用,因检测到车上有料架/料串,不执行任务!请将料架移除再打开调用。");
Common.log.Info("关闭小车调用,因检测到车上有料架/料串,不执行任务!请将料架移除再打开调用。");
return;
}
int nodeIdx = -1;
int high = 0, middle = 0, low = 0;
List<int> node = new List<int>();
//清除节点AGV的名称
foreach (var item in Common.nodeInfo)
{
if (item.AgvName.Equals(agv.Name))
{
item.AgvName = "";
Common.log.Info("清除节点的AGV名称: 节点名:" + item.Name + ";AGV名称:" + agv.Name);
}
}
//B区域,需要出料,先拿料架
//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);
if (nodeIdx == -1)
{
Common.log.Info("B区没有找到NeedEnter的节点");
}
else//B区域需要出料
{
//Mark没有被缓存
int n = Marks.FindIndex(t => t == Common.nodeInfo[nodeIdx].Mark);
if (n == -1)//
{
n = Common.nodeInfo.FindIndex(s => s.Name == "A7" && s.Action == ClientAction.NeedLeave &&
s.RFID.StartsWith("A") && s.AgvName.Equals("") && s.IsUse);
if (n > -1)
{
agv.Place = Common.nodeInfo[n].Name; agv.Place = Common.nodeInfo[n].Name;
agv.Mark = Common.nodeInfo[nodeIdx].Mark; agv.Mark = Common.nodeInfo[nodeIdx].Mark;
//agv.CloseDoor = false; //agv.CloseDoor = false;
...@@ -550,7 +581,7 @@ namespace BLL ...@@ -550,7 +581,7 @@ namespace BLL
agv.TaskSend = true; agv.TaskSend = true;
//_mark.Add(Common.nodeInfo[nodeIdx].Mark); //_mark.Add(Common.nodeInfo[nodeIdx].Mark);
MarkAdd(Common.nodeInfo[nodeIdx].Mark); MarkAdd(Common.nodeInfo[nodeIdx].Mark);
Common.log.Info("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);
...@@ -568,146 +599,243 @@ namespace BLL ...@@ -568,146 +599,243 @@ namespace BLL
Common.log.Info(log); Common.log.Info(log);
Common.ShowLog(log); Common.ShowLog(log);
} }
}
else
{
//A4没有被占用
n = Common.nodeInfo.FindIndex(s => s.Name == "A4" && s.Action == ClientAction.NeedLeave && s.AgvName.Equals("") && s.IsUse);
if (n == -1)
{
nodeIdx = -1;
Common.log.Info("A7,A4不是NeedLeave或被占用");
//Common.log.OutTextBox("A7,A4没有架子或被占用");
#region 有出库任务,但A7,A4无空架子
//n = Common.nodeInfo.FindIndex(s => s.Name == "A8" && s.Action == ClientAction.NeedEnter && s.AgvName.Equals("") && s.IsUse);
//if (n == -1)
//{
// ClientNode a8Node = Common.nodeInfo.Find(s => s.Name.Equals("A8"));
// log = string.Format("A4、A7均无空架用于包装仓出库,且{0}已满,不可将A7架子放到{0}。需要人工干预 [ClientAction={1}]", a8Node.Name, a8Node.Action.ToString());
// Common.log.Info(log);
// Common.ShowLog(log);
//}
////A7,A4均无空架子,可将A7的架子移动到A8
//else
//{
// agv.Place = "A7";
// //agv.Mark = Common.nodeInfo[nodeIdx].Mark;
// //agv.CloseDoor = false;
// rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["Move" + agv.Place]);
// if (rtn)
// {
// agv.CloseDoor = false;
// Common.nodeInfo[n].AgvName = agv.Name;
// agv.TaskSend = true;
// //_mark.Add(Common.nodeInfo[nodeIdx].Mark);
// //MarkAdd(Common.nodeInfo[nodeIdx].Mark);
// log = string.Format("{0} Move To {1}[{2}] ", agv.Name, agv.Place,
// "A7,A4无料架用于包装仓");
// Common.log.Info(log);
// Common.ShowLog(log);
// Common.mir.State_Ready(agv);
// Common.server.NodeRefresh(n);
// AgvChanged?.Invoke(agvIdx);
// }
// else
// {
// agv.TaskSend = false;
// log = string.Format("{0} Move To {1}失败[{2}] ", agv.Name, agv.Place,
// "A7,A4无料架用于包装仓");
// //防止上一个任务已执行但返回失败时,删除任务
// //Common.mir.Del_Mission(agv);
// Common.log.Info(log);
// Common.ShowLog(log);
// }
//}
#endregion
}
else
{
agv.Place = Common.nodeInfo[n].Name;
agv.Mark = Common.nodeInfo[nodeIdx].Mark;
//agv.CloseDoor = false;
rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["Move" + agv.Place]);
if (rtn)
{
agv.CloseDoor = false;
Common.nodeInfo[n].AgvName = agv.Name;
agv.TaskSend = true;
//_mark.Add(Common.nodeInfo[nodeIdx].Mark);
MarkAdd(Common.nodeInfo[nodeIdx].Mark);
Common.log.Info("Mark缓存 " + string.Join(",", Marks.ToArray()));
log = string.Format("{0} Move To {1}[{2}] [{3}]", agv.Name, agv.Place,
Common.nodeInfo[nodeIdx].Action.ToString(), Common.nodeInfo[nodeIdx].Mark);
Common.log.Info(log);
Common.ShowLog(log);
Common.mir.State_Ready(agv);
Common.server.NodeRefresh(n);
}
else
{
agv.TaskSend = false;
log = string.Format("{0} Move To {1} 失败", agv.Name, agv.Place);
//防止上一个任务已执行但返回失败时,删除任务
//Common.mir.Del_Mission(agv);
Common.log.Info(log);
Common.ShowLog(log);
}
//_mark.Add(Common.nodeInfo[nodeIdx].Mark);
////Common.log.OutString("Mark缓存 " + string.Join(",", _mark.ToArray()));
//Common.nodeInfo[n].AgvName = agv.Name; //_mark.Add(Common.nodeInfo[nodeIdx].Mark);
//agv.Place = Common.nodeInfo[n].Name; ////Common.log.OutString("Mark缓存 " + string.Join(",", _mark.ToArray()));
//agv.Mark = Common.nodeInfo[nodeIdx].Mark;
//rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["Move" + agv.Place]);
//log = string.Format("{0} Move {1} {2} {3}", agv.Name, agv.Place, Common.nodeInfo[nodeIdx].Action.ToString(), Common.nodeInfo[nodeIdx].Mark); //Common.nodeInfo[n].AgvName = agv.Name;
//Common.log.Info(log); //agv.Place = Common.nodeInfo[n].Name;
//Common.ShowLog(log); //agv.Mark = Common.nodeInfo[nodeIdx].Mark;
//rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["Move" + agv.Place]);
//rtn = Common.mir.State_Ready(agv); //log = string.Format("{0} Move {1} {2} {3}", agv.Name, agv.Place, Common.nodeInfo[nodeIdx].Action.ToString(), Common.nodeInfo[nodeIdx].Mark);
//Common.server.NodeRefresh(n); //Common.log.Info(log);
//Common.ShowLog(log);
AgvChanged?.Invoke(agvIdx); //rtn = Common.mir.State_Ready(agv);
return; //Common.server.NodeRefresh(n);
AgvChanged?.Invoke(agvIdx);
return;
}
} }
}
}
else
{
Common.log.Info("缓存中已存在 " + Common.nodeInfo[nodeIdx].Mark);
nodeIdx = -1;
}
} }
else
{
Common.log.Info("缓存中已存在 " + Common.nodeInfo[nodeIdx].Mark);
nodeIdx = -1;
}
}
//需要出料架,且没有被标记 //需要出料架,且没有被标记
//A4是包装料仓的进料,不包含在内 //A4是包装料仓的进料,不包含在内
//根据优先级调用 //根据优先级调用
for (int i = 0; i < Common.nodeInfo.Count; i++) for (int i = 0; i < Common.nodeInfo.Count; i++)
{
if (Common.nodeInfo[i].Action == ClientAction.NeedLeave && Common.nodeInfo[i].Name != "A4" &&
Common.nodeInfo[i].AgvName == "" && Common.nodeInfo[i].IsUse)
{ {
switch (Common.nodeInfo[i].Level) if (Common.nodeInfo[i].Action == ClientAction.NeedLeave && Common.nodeInfo[i].Name != "A4" &&
Common.nodeInfo[i].AgvName == "" && Common.nodeInfo[i].IsUse)
{ {
case ClientLevel.High: switch (Common.nodeInfo[i].Level)
node.Insert(high++, i); {
middle++; case ClientLevel.High:
low++; node.Insert(high++, i);
break; middle++;
case ClientLevel.Middle: low++;
node.Insert(middle++, i); break;
low++; case ClientLevel.Middle:
break; node.Insert(middle++, i);
case ClientLevel.Low: low++;
node.Insert(low++, i); break;
break; case ClientLevel.Low:
node.Insert(low++, i);
break;
}
} }
} }
}
//测试,临时的 //测试,临时的
//for (int i = 0; i < node.Count; i++) //for (int i = 0; i < node.Count; i++)
//{ //{
// //Common.log.OutString("Test " + node[i] + " Name=" + Common.nodeInfo[node[i]].Name + " Mark=" + Common.nodeInfo[node[i]].Mark); // //Common.log.OutString("Test " + node[i] + " Name=" + Common.nodeInfo[node[i]].Name + " Mark=" + Common.nodeInfo[node[i]].Mark);
//} //}
if (node.Count == 0) if (node.Count == 0)
{ {
nodeIdx = -1; nodeIdx = -1;
Common.log.Info("没有找到新的NeedLeave的节点"); Common.log.Info("没有找到新的NeedLeave的节点");
} }
else else
{
//按顺序取符合要求的
for (int i = 0; i < node.Count; i++)
{ {
//B区域出料架 //按顺序取符合要求的
if (Common.nodeInfo[node[i]].Name.StartsWith("B")) for (int i = 0; i < node.Count; i++)
{ {
if (Common.nodeInfo[node[i]].Mark == "0" && Common.nodeInfo[node[i]].RFID.StartsWith("A"))//料仓读取到RFID的才获取锁定信息 //B区域出料架
if (Common.nodeInfo[node[i]].Name.StartsWith("B"))
{ {
//获取料架锁定信息 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);
nodeIdx = node[i];
break;
}
else
{
//在Mark缓存中,按照先后顺序出料,只有第一个出完才能出第二个
int idx = Marks.FindIndex(s => s == Common.nodeInfo[node[i]].Mark);
if (idx == 0)
{ {
//获取料架锁定信息
AGVManager.GetShelfLockInfo(Common.nodeInfo[node[i]].Name, Common.nodeInfo[node[i]].RFID, shelfLockedNodeNames);
nodeIdx = node[i]; nodeIdx = node[i];
break; break;
} }
else if (idx == -1) //缓存中没有这个mark,可能是软件重启了 else
{ {
//_mark.Add(Common.nodeInfo[node[i]].Mark); //在Mark缓存中,按照先后顺序出料,只有第一个出完才能出第二个
MarkAdd(Common.nodeInfo[node[i]].Mark); int idx = Marks.FindIndex(s => s == Common.nodeInfo[node[i]].Mark);
nodeIdx = node[i]; if (idx == 0)
break; {
nodeIdx = node[i];
break;
}
else if (idx == -1) //缓存中没有这个mark,可能是软件重启了
{
//_mark.Add(Common.nodeInfo[node[i]].Mark);
MarkAdd(Common.nodeInfo[node[i]].Mark);
nodeIdx = node[i];
break;
}
} }
} }
} else if (Common.nodeInfo[node[i]].Name == "A1" && Common.nodeInfo[node[i]].RFID.StartsWith("B"))//A1出料串,检查C1,3,5是否需要
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);
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 == "C5" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse);
//入料口有一个没有占用
if (n > -1)
{ {
nodeIdx = node[i]; int n = Common.nodeInfo.FindIndex(s => s.Name == "C1" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse);
break; if (n == -1) n = Common.nodeInfo.FindIndex(s => s.Name == "C3" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse);
//入料口有一个没有占用
if (n > -1)
{
nodeIdx = node[i];
break;
}
} }
} else if (Common.nodeInfo[node[i]].Name == "A1" && Common.nodeInfo[node[i]].RFID.StartsWith("A"))//B区域入料
else if (Common.nodeInfo[node[i]].Name == "A1" && Common.nodeInfo[node[i]].RFID.StartsWith("A"))//B区域入料
{
if (FindAreaBEnter() > -1)
{ {
nodeIdx = node[i]; if (FindAreaBEnter() > -1)
break; {
nodeIdx = node[i];
break;
}
} }
} else if (Common.nodeInfo[node[i]].Name == "A7" && Common.nodeInfo[node[i]].RFID.StartsWith("B"))//C7入料
else if (Common.nodeInfo[node[i]].Name == "A7" && Common.nodeInfo[node[i]].RFID.StartsWith("B"))//C7入料
{
int n = Common.nodeInfo.FindIndex(s => s.Name == "C7" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse);
//入料口有一个没有占用
if (n > -1)
{ {
nodeIdx = node[i]; int n = Common.nodeInfo.FindIndex(s => s.Name == "C7" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse);
break; //入料口有一个没有占用
if (n > -1)
{
nodeIdx = node[i];
break;
}
} }
} else if (Common.nodeInfo[node[i]].Name == "A7" && Common.nodeInfo[node[i]].RFID.StartsWith("A"))//A7有空料架
else if (Common.nodeInfo[node[i]].Name == "A7" && Common.nodeInfo[node[i]].RFID.StartsWith("A"))//A7有空料架
{
int n = Common.nodeInfo.FindIndex(s => s.Name == "A4" && s.Action == ClientAction.None && s.IsUse);
if (n > -1)//B区域无出库任务,A4无料架,往A3送一个空架子,便于出料串
{ {
n = Common.nodeInfo.FindIndex(s => s.Name == "A3" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse); int n = Common.nodeInfo.FindIndex(s => s.Name == "A4" && s.Action == ClientAction.None && s.IsUse);
if (n > -1)//B区域无出库任务,A4无料架,往A3送一个空架子,便于出料串
{
n = Common.nodeInfo.FindIndex(s => s.Name == "A3" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse);
//入料口有一个没有占用
if (n > -1)
{
nodeIdx = node[i];
break;
}
}
n = Common.nodeInfo.FindIndex(s => s.Name == "C7" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse);
//入料口有一个没有占用 //入料口有一个没有占用
if (n > -1) if (n > -1)
{ {
...@@ -715,86 +843,80 @@ namespace BLL ...@@ -715,86 +843,80 @@ namespace BLL
break; break;
} }
} }
n = Common.nodeInfo.FindIndex(s => s.Name == "C7" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse); else if (Common.nodeInfo[node[i]].Name == "C2" || Common.nodeInfo[node[i]].Name == "C4")//C2,4准备出空架子,A2需要料
//入料口有一个没有占用
if (n > -1)
{ {
nodeIdx = node[i]; int n = Common.nodeInfo.FindIndex(s => s.Name == "C7" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse);
break; if (n == -1) n = Common.nodeInfo.FindIndex(s => s.Name == "A2" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse);
} //入料口有一个没有占用
} if (n > -1)
else if (Common.nodeInfo[node[i]].Name == "C2" || Common.nodeInfo[node[i]].Name == "C4" || Common.nodeInfo[node[i]].Name == "C6")//C2,4,6准备出空架子,A2需要料 {
{ nodeIdx = node[i];
int n = Common.nodeInfo.FindIndex(s => s.Name == "C7" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse); break;
if (n == -1) n = Common.nodeInfo.FindIndex(s => s.Name == "A2" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse); }
//入料口有一个没有占用
if (n > -1)
{
nodeIdx = node[i];
break;
} }
} else if (Common.nodeInfo[node[i]].Name == "C8")//C8出往A8
else if (Common.nodeInfo[node[i]].Name == "C8")//C8出往A8
{
int n = Common.nodeInfo.FindIndex(s => s.Name == "A8" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse);
//入料口没有占用
if (n > -1)
{ {
nodeIdx = node[i]; int n = Common.nodeInfo.FindIndex(s => s.Name == "A8" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse);
break; //入料口没有占用
if (n > -1)
{
nodeIdx = node[i];
break;
}
} }
//else if(!Common.nodeInfo[node[i]].Equals("C5") || !Common.nodeInfo[node[i]].Equals("C6"))
//{
// nodeIdx = node[i];
// break;
//}
} }
else
{
nodeIdx = node[i];
break;
}
}
if (nodeIdx > -1) if (nodeIdx > -1)
{
if (Common.nodeInfo[nodeIdx].Name == "A1")
{ {
if (Common.nodeInfo[nodeIdx].RFID.Length == 0 || Common.nodeInfo[nodeIdx].RFID == "00") if (Common.nodeInfo[nodeIdx].Name == "A1")
{ {
Common.log.Info("A1 RFID 错误"); if (Common.nodeInfo[nodeIdx].RFID.Length == 0 || Common.nodeInfo[nodeIdx].RFID == "00")
//Common.log.OutTextBox("A1 RFID 错误"); {
return; Common.log.Info("A1 RFID 错误");
//Common.log.OutTextBox("A1 RFID 错误");
return;
}
else
{
Common.log.Info("[StatusNone Assign Mission A1] " + agv.Name + " " + Common.nodeInfo[nodeIdx].Name);
MoveNode(agv, nodeIdx);
return;
}
} }
else else
{ {
Common.log.Info("[StatusNone Assign Mission A1] " + agv.Name + " " + Common.nodeInfo[nodeIdx].Name); Common.log.Info("[StatusNone Assign Mission other] " + agv.Name + " " + Common.nodeInfo[nodeIdx].Name);
MoveNode(agv, nodeIdx); MoveNode(agv, nodeIdx);
return; return;
} }
} }
else
{
Common.log.Info("[StatusNone Assign Mission other] " + agv.Name + " " + Common.nodeInfo[nodeIdx].Name);
MoveNode(agv, nodeIdx);
return;
}
}
//Common.nodeInfo[nodeIdx].AgvName = agv.Name; //Common.nodeInfo[nodeIdx].AgvName = agv.Name;
//agv.Place = Common.nodeInfo[nodeIdx].Name; //agv.Place = Common.nodeInfo[nodeIdx].Name;
//agv.Mark = Common.nodeInfo[nodeIdx].Mark; //agv.Mark = Common.nodeInfo[nodeIdx].Mark;
//rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["Move" + agv.Place]); //rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["Move" + agv.Place]);
//log = string.Format("{0} Move {1} {2}", agv.Name, agv.Place, Common.nodeInfo[nodeIdx].Action.ToString()); //log = string.Format("{0} Move {1} {2}", agv.Name, agv.Place, Common.nodeInfo[nodeIdx].Action.ToString());
//Common.log.Info(log); //Common.log.Info(log);
//Common.ShowLog(log); //Common.ShowLog(log);
//rtn = Common.mir.State_Ready(agv); //rtn = Common.mir.State_Ready(agv);
//AgvChanged?.Invoke(agvIdx); //AgvChanged?.Invoke(agvIdx);
//Common.server.NodeRefresh(nodeIdx); //Common.server.NodeRefresh(nodeIdx);
//return; //return;
} }
}
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
...@@ -1147,8 +1269,9 @@ namespace BLL ...@@ -1147,8 +1269,9 @@ namespace BLL
rtn = B123456Enter(agv); break; rtn = B123456Enter(agv); break;
case "C2": case "C2":
case "C4": case "C4":
rtn = C24Enter(agv); break;
case "C6": case "C6":
rtn = C246Enter(agv); break; rtn = C6Enter(agv); break;
case "C8": case "C8":
rtn = C8Enter(agv); break; rtn = C8Enter(agv); break;
case "D2": case "D2":
...@@ -1402,16 +1525,46 @@ namespace BLL ...@@ -1402,16 +1525,46 @@ namespace BLL
nodeIdx = FindAreaC(); nodeIdx = FindAreaC();
if (nodeIdx > -1) if (nodeIdx > -1)
{ {
rtn = MoveNode(agv, nodeIdx); string nodeName = Common.nodeInfo[nodeIdx].Name;
if (rtn) if (nodeName.Equals("C5") && agv.IP.Equals(Common.No1_IP))
{ {
agv.NextMission = ""; rtn = MoveNode(agv, nodeIdx);
Common.log.Info(agv.Name + " A1出料串[" + agv.RFID + "],去[" + Common.nodeInfo[nodeIdx].Name + "]入库"); if (rtn)
{
agv.NextMission = "";
Common.log.Info(agv.Name + " A1出料串[" + agv.RFID + "],去[" + Common.nodeInfo[nodeIdx].Name + "]入库");
}
else
{
agv.NextMission = Common.nodeInfo[nodeIdx].Name;
//Common.mir.Add_Mission_Fleet(agv, "Common.agvMission["MoveStandbyTemp"]");
}
}
else if (!nodeName.Equals("C5") && !agv.IP.Equals(Common.No1_IP))
{
rtn = MoveNode(agv, nodeIdx);
if (rtn)
{
agv.NextMission = "";
Common.log.Info(agv.Name + " A1出料串[" + agv.RFID + "],去[" + Common.nodeInfo[nodeIdx].Name + "]入库");
}
else
{
agv.NextMission = Common.nodeInfo[nodeIdx].Name;
//Common.mir.Add_Mission_Fleet(agv, "Common.agvMission["MoveStandbyTemp"]");
}
} }
else else
{ {
agv.NextMission = Common.nodeInfo[nodeIdx].Name; if (!agv.StandbyTemp)
//Common.mir.Add_Mission_Fleet(agv, "Common.agvMission["MoveStandbyTemp"]"); {
agv.StandbyTemp = true;
log = agv.Name + " A1出料串[" + agv.RFID + "] C区暂时没有位置";
agv.NextMission = "C区";
Common.mir.Add_Mission_Fleet(agv, Common.agvMission["MoveStandbyTemp"]);
Common.log.Info(log);
Common.ShowLog(log);
}
} }
} }
else else
...@@ -1882,12 +2035,12 @@ namespace BLL ...@@ -1882,12 +2035,12 @@ namespace BLL
rtn = FindNeedLeave(agv, "C4"); rtn = FindNeedLeave(agv, "C4");
if (rtn) if (rtn)
Common.log.Info(agv.Name + " 在C1送完料串,检测到C4出料串任务[A2可以进料],开始执行"); Common.log.Info(agv.Name + " 在C1送完料串,检测到C4出料串任务[A2可以进料],开始执行");
if (!rtn) //if (!rtn)
{ //{
rtn = FindNeedLeave(agv, "C6"); // rtn = FindNeedLeave(agv, "C6");
if (rtn) // if (rtn)
Common.log.Info(agv.Name + " 在C1送完料串,检测到C6出料串任务[A2可以进料],开始执行"); // Common.log.Info(agv.Name + " 在C1送完料串,检测到C6出料串任务[A2可以进料],开始执行");
} //}
} }
if (!rtn) if (!rtn)
...@@ -1898,12 +2051,12 @@ namespace BLL ...@@ -1898,12 +2051,12 @@ namespace BLL
rtn = FindNeedLeave(agv, "C4"); rtn = FindNeedLeave(agv, "C4");
if (rtn) if (rtn)
Common.log.Info(agv.Name + " 在C1送完料串,检测到C4出料串任务[A2不可以进料,C7可以进料],开始执行"); Common.log.Info(agv.Name + " 在C1送完料串,检测到C4出料串任务[A2不可以进料,C7可以进料],开始执行");
if (!rtn) //if (!rtn)
{ //{
rtn = FindNeedLeave(agv, "C6"); // rtn = FindNeedLeave(agv, "C6");
if (rtn) // if (rtn)
Common.log.Info(agv.Name + " 在C1送完料串,检测到C6出料串任务[A2不可以进料,C7可以进料],开始执行"); // Common.log.Info(agv.Name + " 在C1送完料串,检测到C6出料串任务[A2不可以进料,C7可以进料],开始执行");
} //}
} }
} }
...@@ -1923,7 +2076,7 @@ namespace BLL ...@@ -1923,7 +2076,7 @@ namespace BLL
{ {
rtn = MoveStandby(agv); rtn = MoveStandby(agv);
if (rtn) if (rtn)
Common.log.Info(agv.Name + " 在C1送完料串,C4,C6,A1,D2暂无任务,回待机位"); Common.log.Info(agv.Name + " 在C1送完料串,C4,A1,D2暂无任务,回待机位");
} }
return rtn; return rtn;
...@@ -1943,12 +2096,12 @@ namespace BLL ...@@ -1943,12 +2096,12 @@ namespace BLL
rtn = FindNeedLeave(agv, "C4"); rtn = FindNeedLeave(agv, "C4");
if (rtn) if (rtn)
Common.log.Info(agv.Name + " 在C3送完料串,检测到C4出料串任务[A2可以进料],开始执行"); Common.log.Info(agv.Name + " 在C3送完料串,检测到C4出料串任务[A2可以进料],开始执行");
if (!rtn) //if (!rtn)
{ //{
rtn = FindNeedLeave(agv, "C6"); // rtn = FindNeedLeave(agv, "C6");
if (rtn) // if (rtn)
Common.log.Info(agv.Name + " 在C3送完料串,检测到C6出料串任务[A2可以进料],开始执行"); // Common.log.Info(agv.Name + " 在C3送完料串,检测到C6出料串任务[A2可以进料],开始执行");
} //}
} }
if (!rtn) if (!rtn)
...@@ -1959,12 +2112,12 @@ namespace BLL ...@@ -1959,12 +2112,12 @@ namespace BLL
rtn = FindNeedLeave(agv, "C4"); rtn = FindNeedLeave(agv, "C4");
if (rtn) if (rtn)
Common.log.Info(agv.Name + " 在C3送完料串,检测到C4出料串任务[A2不可以进料,C7可以进料],开始执行"); Common.log.Info(agv.Name + " 在C3送完料串,检测到C4出料串任务[A2不可以进料,C7可以进料],开始执行");
if (!rtn) //if (!rtn)
{ //{
rtn = FindNeedLeave(agv, "C6"); // rtn = FindNeedLeave(agv, "C6");
if (rtn) // if (rtn)
Common.log.Info(agv.Name + " 在C3送完料串,检测到C6出料串任务[A2不可以进料,C7可以进料],开始执行"); // Common.log.Info(agv.Name + " 在C3送完料串,检测到C6出料串任务[A2不可以进料,C7可以进料],开始执行");
} //}
} }
} }
...@@ -1985,7 +2138,7 @@ namespace BLL ...@@ -1985,7 +2138,7 @@ namespace BLL
{ {
rtn = MoveStandby(agv); rtn = MoveStandby(agv);
if (rtn) if (rtn)
Common.log.Info(agv.Name + " 在C3送完料串,C4,C6,A1,D2暂无任务,回待机位"); Common.log.Info(agv.Name + " 在C3送完料串,C4,A1,D2暂无任务,回待机位");
} }
...@@ -2013,16 +2166,16 @@ namespace BLL ...@@ -2013,16 +2166,16 @@ namespace BLL
Common.log.Info(agv.Name + " 在C5送完料串,检测到C6出料串任务[A2可以进料],开始执行"); Common.log.Info(agv.Name + " 在C5送完料串,检测到C6出料串任务[A2可以进料],开始执行");
} }
if (!rtn) //if (!rtn)
{ //{
nodeIdx = Common.nodeInfo.FindIndex(s => s.Name == "C7" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse); // nodeIdx = Common.nodeInfo.FindIndex(s => s.Name == "C7" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse);
if (nodeIdx > -1) // if (nodeIdx > -1)
{ // {
rtn = FindNeedLeave(agv, "C6"); // rtn = FindNeedLeave(agv, "C6");
if (rtn) // if (rtn)
Common.log.Info(agv.Name + " 在C5送完料串,检测到C6出料串任务[A2不可以进料,C7可以进料],开始执行"); // Common.log.Info(agv.Name + " 在C5送完料串,检测到C6出料串任务[A2不可以进料,C7可以进料],开始执行");
} // }
} //}
if (!rtn) if (!rtn)
{ {
...@@ -2040,7 +2193,7 @@ namespace BLL ...@@ -2040,7 +2193,7 @@ namespace BLL
{ {
rtn = MoveStandby(agv); rtn = MoveStandby(agv);
if (rtn) if (rtn)
Common.log.Info(agv.Name + " 在C3送完料串,C6,A1,D2暂无任务,回待机位"); Common.log.Info(agv.Name + " 在C5送完料串,C6,A1,D2暂无任务,回待机位");
} }
//bool rtn = FindNeedLeave(agv, "C6"); //bool rtn = FindNeedLeave(agv, "C6");
...@@ -2084,11 +2237,11 @@ namespace BLL ...@@ -2084,11 +2237,11 @@ namespace BLL
} }
/// <summary> /// <summary>
/// 【满车】料串进入小车,离开C2,4,6 /// 【满车】料串进入小车,离开C2,4
/// </summary> /// </summary>
/// <param name="agv"></param> /// <param name="agv"></param>
/// <returns></returns> /// <returns></returns>
private bool C246Enter(Agv_Info agv) private bool C24Enter(Agv_Info agv)
{ {
string log; string log;
bool rtn; bool rtn;
...@@ -2098,7 +2251,7 @@ namespace BLL ...@@ -2098,7 +2251,7 @@ namespace BLL
if (rtn) if (rtn)
{ {
agv.NextMission = ""; agv.NextMission = "";
Common.log.Info(agv.Name + " 在C2/4/6进入空料串,检测到C7需要料串,开始执行"); Common.log.Info(agv.Name + " 在C2/4进入空料串,检测到C7需要料串,开始执行");
return true; return true;
} }
...@@ -2106,7 +2259,7 @@ namespace BLL ...@@ -2106,7 +2259,7 @@ namespace BLL
if (rtn) if (rtn)
{ {
agv.NextMission = ""; agv.NextMission = "";
Common.log.Info(agv.Name + " 在C2/4/6进入空料串,检测到D1需要料串,开始执行"); Common.log.Info(agv.Name + " 在C2/4进入空料串,检测到D1需要料串,开始执行");
return true; return true;
} }
...@@ -2114,7 +2267,7 @@ namespace BLL ...@@ -2114,7 +2267,7 @@ namespace BLL
if (rtn) if (rtn)
{ {
agv.NextMission = ""; agv.NextMission = "";
Common.log.Info(agv.Name + " 在C2/4/6进入空料串,检测到A2需要料串,开始执行"); Common.log.Info(agv.Name + " 在C2/4进入空料串,检测到A2需要料串,开始执行");
return true; return true;
} }
...@@ -2124,7 +2277,33 @@ namespace BLL ...@@ -2124,7 +2277,33 @@ namespace BLL
agv.NextMission = "A2"; agv.NextMission = "A2";
rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["MoveStandbyTemp"]); rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["MoveStandbyTemp"]);
if (rtn) if (rtn)
Common.log.Info(agv.Name + " 在C2/4/6进入空料串,C7,D1,A2不需要料串,回待机位"); Common.log.Info(agv.Name + " 在C2/4进入空料串,C7,D1,A2不需要料串,回待机位");
return false;
}
return false;
}
private bool C6Enter(Agv_Info agv)
{
string log;
bool rtn;
//C7紧急料优先放架子
rtn = FindNeedEnter(agv, "A2");
if (rtn)
{
agv.NextMission = "";
Common.log.Info(agv.Name + " 在C6进入空料串,检测到A2需要料串,开始执行");
return true;
}
if (!agv.StandbyTemp)
{
agv.StandbyTemp = true;
agv.NextMission = "A2";
rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["MoveStandbyTemp"]);
if (rtn)
Common.log.Info(agv.Name + " 在C6进入空料串,A2不需要料串,回待机位");
return false; return false;
} }
return false; return false;
...@@ -2216,16 +2395,48 @@ namespace BLL ...@@ -2216,16 +2395,48 @@ namespace BLL
nodeIdx = FindAreaC(); nodeIdx = FindAreaC();
if (nodeIdx > -1) if (nodeIdx > -1)
{ {
rtn = MoveNode(agv, nodeIdx); string nodeName = Common.nodeInfo[nodeIdx].Name;
if (rtn) if (nodeName.Equals("C5") && agv.IP.Equals(Common.No1_IP))
{ {
agv.NextMission = ""; rtn = MoveNode(agv, nodeIdx);
Common.log.Info(agv.Name + " 在D2进入料串,送往C区"); if (rtn)
{
agv.NextMission = "";
Common.log.Info(agv.Name + " 在D2进入料串,送往C区");
}
else
{
agv.NextMission = "C区";
//Common.mir.Add_Mission_Fleet(agv, "Common.agvMission["MoveStandbyTemp"]");
}
}
else if (!nodeName.Equals("C5") && !agv.IP.Equals(Common.No1_IP))
{
rtn = MoveNode(agv, nodeIdx);
if (rtn)
{
agv.NextMission = "";
Common.log.Info(agv.Name + " 在D2进入料串,送往C区");
}
else
{
agv.NextMission = "C区";
//Common.mir.Add_Mission_Fleet(agv, "Common.agvMission["MoveStandbyTemp"]");
}
} }
else else
{ {
agv.NextMission = "C区";
//Common.mir.Add_Mission_Fleet(agv, "Common.agvMission["MoveStandbyTemp"]"); if (!agv.StandbyTemp)
{
agv.StandbyTemp = true;
log = agv.Name + " D2[点料机]出料架 C区暂时没有位置";
agv.NextMission = "C区";
Common.mir.Add_Mission_Fleet(agv, Common.agvMission["MoveStandbyTemp"]);
Common.log.Info(log);
Common.ShowLog(log);
}
} }
} }
else else
...@@ -3129,7 +3340,7 @@ namespace BLL ...@@ -3129,7 +3340,7 @@ namespace BLL
agv.CloseDoor = false; agv.CloseDoor = false;
Common.nodeInfo[nodeIdx].AgvName = agv.Name; Common.nodeInfo[nodeIdx].AgvName = agv.Name;
agv.TaskSend = true; agv.TaskSend = true;
log = string.Format("{0} MoveTtoNode {1} {2}", agv.Name, agv.Place, Common.nodeInfo[nodeIdx].Action.ToString()); log = string.Format("{0} MoveToNode {1} {2}", agv.Name, agv.Place, Common.nodeInfo[nodeIdx].Action.ToString());
Common.log.Info(log); Common.log.Info(log);
Common.ShowLog(log); Common.ShowLog(log);
Common.mir.State_Ready(agv); Common.mir.State_Ready(agv);
...@@ -3138,7 +3349,7 @@ namespace BLL ...@@ -3138,7 +3349,7 @@ namespace BLL
else else
{ {
agv.TaskSend = false; agv.TaskSend = false;
log = string.Format("{0} MoveTtoNode {1} 失败", agv.Name, agv.Place); log = string.Format("{0} MoveToNode {1} 失败", agv.Name, agv.Place);
//防止上一个任务已执行但返回失败时,删除任务 //防止上一个任务已执行但返回失败时,删除任务
//Common.mir.Del_Mission(agv); //Common.mir.Del_Mission(agv);
Common.log.Info(log); Common.log.Info(log);
......
...@@ -385,7 +385,7 @@ namespace BLL ...@@ -385,7 +385,7 @@ namespace BLL
string url = "http://" + info.IP + "/api/v2.0.0/status?whitelist=state_id,state_text,battery_percentage,mission_text"; string url = "http://" + info.IP + "/api/v2.0.0/status?whitelist=state_id,state_text,battery_percentage,mission_text";
string json = HttpGet(url, info.IP, info.Authorization); string json = HttpGet(url, info.IP, info.Authorization);
Common.log.Info("URL: " + url+"\n"+"Return: " + json); Common.log.Debug("URL: " + url+"\n"+"Return: " + json);
if (string.IsNullOrWhiteSpace(json)) return false; if (string.IsNullOrWhiteSpace(json)) return false;
JavaScriptSerializer serializer = new JavaScriptSerializer(); JavaScriptSerializer serializer = new JavaScriptSerializer();
......
...@@ -22,6 +22,7 @@ namespace AGVControl ...@@ -22,6 +22,7 @@ namespace AGVControl
public static readonly string LOG_PATH = AppDomain.CurrentDomain.BaseDirectory + "Log"; public static readonly string LOG_PATH = AppDomain.CurrentDomain.BaseDirectory + "Log";
public static readonly string CONFIG_PATH = AppDomain.CurrentDomain.BaseDirectory + "Config\\"; public static readonly string CONFIG_PATH = AppDomain.CurrentDomain.BaseDirectory + "Config\\";
public static string No1_IP = "10.85.199.67";
public static void ShowLog(string s) public static void ShowLog(string s)
{ {
if (txtLog == null) return; if (txtLog == null) return;
......
此文件类型无法预览
6e0a935f2fc071fe41a8b4e4966fbe7ca4dacc89 8da7a79df2cfe73788bf4aeb9a8db9dab2618e7c
...@@ -94,3 +94,20 @@ C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.csprojAssemblyReference. ...@@ -94,3 +94,20 @@ C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.csprojAssemblyReference.
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl\AGVControl\bin\Debug\Newtonsoft.Json.dll D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl\AGVControl\bin\Debug\Newtonsoft.Json.dll
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl\AGVControl\bin\Debug\log4net.dll D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl\AGVControl\bin\Debug\log4net.dll
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl\AGVControl\obj\Debug\AGVControl.csprojAssemblyReference.cache D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl\AGVControl\obj\Debug\AGVControl.csprojAssemblyReference.cache
C:\Users\dolen\Desktop\AGVControl-Temp\AGVControl\bin\Debug\AGVControl.exe.config
C:\Users\dolen\Desktop\AGVControl-Temp\AGVControl\bin\Debug\AGVControl.exe
C:\Users\dolen\Desktop\AGVControl-Temp\AGVControl\bin\Debug\AGVControl.pdb
C:\Users\dolen\Desktop\AGVControl-Temp\AGVControl\bin\Debug\log4net.dll
C:\Users\dolen\Desktop\AGVControl-Temp\AGVControl\bin\Debug\Newtonsoft.Json.dll
C:\Users\dolen\Desktop\AGVControl-Temp\AGVControl\bin\Debug\RestSharp.dll
C:\Users\dolen\Desktop\AGVControl-Temp\AGVControl\bin\Debug\RestSharp.xml
C:\Users\dolen\Desktop\AGVControl-Temp\AGVControl\obj\Debug\Interop.IWshRuntimeLibrary.dll
C:\Users\dolen\Desktop\AGVControl-Temp\AGVControl\obj\Debug\AGVControl.csproj.ResolveComReference.cache
C:\Users\dolen\Desktop\AGVControl-Temp\AGVControl\obj\Debug\AGVControl.FrmMain.resources
C:\Users\dolen\Desktop\AGVControl-Temp\AGVControl\obj\Debug\AGVControl.Properties.Resources.resources
C:\Users\dolen\Desktop\AGVControl-Temp\AGVControl\obj\Debug\AGVControl.csproj.GenerateResource.cache
C:\Users\dolen\Desktop\AGVControl-Temp\AGVControl\obj\Debug\AGVControl.csproj.CoreCompileInputs.cache
C:\Users\dolen\Desktop\AGVControl-Temp\AGVControl\obj\Debug\AGVControl.csproj.CopyComplete
C:\Users\dolen\Desktop\AGVControl-Temp\AGVControl\obj\Debug\AGVControl.exe
C:\Users\dolen\Desktop\AGVControl-Temp\AGVControl\obj\Debug\AGVControl.pdb
C:\Users\dolen\Desktop\AGVControl-Temp\AGVControl\obj\Debug\AGVControl.csprojAssemblyReference.cache
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!