Commit 56df514c 张东亮

agv呼叫重置流程时不执行进出料串

1 个父辈 bc933daf
......@@ -13,6 +13,7 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net.NetworkInformation;
namespace AutoScanAndLabel.UC
{
......@@ -96,6 +97,10 @@ namespace AutoScanAndLabel.UC
}));
}
public bool InCalling = false;
private bool canCall()
{
return !InCalling && (handleAgv == null || (handleAgv != null && handleAgv.IsCompleted));
}
private void button_rightneedempty_Click(object sender, EventArgs e)
{
if (!RobotManage.isRunning)
......@@ -103,14 +108,15 @@ namespace AutoScanAndLabel.UC
MessageBox.Show(crc.GetString("Res0079", "机器尚未启动不能呼叫Agv"));
return;
}
if (InCalling)
if (!canCall())
{
MessageBox.Show(crc.GetString("Res0035", "已呼叫Agv,不能重复呼叫"));
return;
}
if (RobotManage.mainMachine.IOValue(IO_Type.RightEnd_Check).Equals(IO_VALUE.LOW))
{
Task.Run(() =>
LogUtil.info("开始入口满料串送入流程");
handleAgv = Task.Run(() =>
{
InCalling = true;
//请求AGV代码放这里
......@@ -118,19 +124,24 @@ namespace AutoScanAndLabel.UC
//等待agv到位
while (!WaitMissionOk())
{
// Task.Delay(1000).Wait();
Thread.Sleep(1000);
if (!InCalling)
return;
waitTmie();
}
if (InCalling)
RobotManage.mainMachine.RightMoveInfo.NewMove(MoveStep.R40_InShelf);//等待agv到位后执行,启动进入
ShelfOutAgv();
while (RobotManage.mainMachine.RightMoveInfo.MoveStep >= MoveStep.R40_InShelf)
{
Task.Delay(1000).Wait();
if (!InCalling)
return;
waitTmie();
}
while (!WaitMissionOk())
{
//Task.Delay(1000).Wait();
Thread.Sleep(1000);
if (!InCalling)
return;
waitTmie();
}
ToStandby();
//通知agv上料结束, 也可以把上料结束的代码放到 R40_InShelf的结束步骤里去
......@@ -148,15 +159,15 @@ namespace AutoScanAndLabel.UC
MessageBox.Show(crc.GetString("Res0079", "机器尚未启动不能呼叫Agv"));
return;
}
if (InCalling)
if (!canCall())
{
MessageBox.Show(crc.GetString("Res0035", "已呼叫Agv,不能重复呼叫"));
return;
}
if (RobotManage.mainMachine.IOValue(IO_Type.RightEnd_Check).Equals(IO_VALUE.HIGH))
{
Task.Run(() =>
LogUtil.info("开始入口空料串取出流程");
handleAgv = Task.Run(() =>
{
InCalling = true;
//请求AGV代码放这里
......@@ -164,21 +175,25 @@ namespace AutoScanAndLabel.UC
//等待agv到位
while (!WaitMissionOk())
{
//Task.Delay(1000).Wait();
Thread.Sleep(1000);
if (!InCalling)
return;
waitTmie();
}
if (InCalling)
RobotManage.mainMachine.RightMoveInfo.NewMove(MoveStep.R30_OutShelf);//等待agv到位后执行,启动料串离开
ShelfEnterAgv();
while (RobotManage.mainMachine.RightMoveInfo.MoveStep >= MoveStep.R30_OutShelf)
{
//Task.Delay(1000).Wait();
Thread.Sleep(1000);
if (!InCalling)
return;
waitTmie();
}
//通知agv上料结束, 也可以把上料结束的代码放到R30_OutShelf的结束步骤里去
while (!WaitMissionOk())
{
//Task.Delay(1000).Wait();
Thread.Sleep(1000);
if (!InCalling)
return;
waitTmie();
}
ToStandby();
InCalling = false;
......@@ -218,18 +233,24 @@ namespace AutoScanAndLabel.UC
}
private bool WaitMissionOk()
{
bool rtn= WaitMissionOk((uint)AGVManager.CurMissionId);
if(rtn)
bool rtn = WaitMissionOk((uint)AGVManager.CurMissionId);
if (rtn)
{
LogUtil.info("任务编号" + AGVManager.CurMissionId+"执行完成");
LogUtil.info("任务编号" + AGVManager.CurMissionId + "执行完成");
}
return rtn;
}
void autoAddMision(int id)
{
if (!InCalling)
return;
AGVManager.AddMission(id);
LogUtil.info("自动任务:发送任务编号" + id);
}
void waitTmie()
{
Thread.Sleep(300);
}
private void button_Leftleavefull_Click(object sender, EventArgs e)
{
if (!RobotManage.isRunning)
......@@ -237,14 +258,15 @@ namespace AutoScanAndLabel.UC
MessageBox.Show(crc.GetString("Res0079", "机器尚未启动不能呼叫Agv"));
return;
}
if (InCalling)
if (!canCall())
{
MessageBox.Show(crc.GetString("Res0035", "已呼叫Agv,不能重复呼叫"));
return;
}
if (RobotManage.mainMachine.IOValue(IO_Type.LeftEnd_Check).Equals(IO_VALUE.HIGH))
{
Task.Run(() =>
LogUtil.info("开始出口AGV满料串取出流程");
handleAgv = Task.Run(() =>
{
InCalling = true;
//请求AGV代码放这里
......@@ -252,22 +274,26 @@ namespace AutoScanAndLabel.UC
//等待agv到位
while (!WaitMissionOk())
{
//Task.Delay(1000).Wait();
Thread.Sleep(1000);
if (!InCalling)
return;
waitTmie();
}
if (InCalling)
RobotManage.mainMachine.LeftMoveInfo.NewMove(MoveStep.L50_OutShelf);//等待agv到位后执行,启动料串离开
ShelfEnterAgv();
while (RobotManage.mainMachine.LeftMoveInfo.MoveStep >= MoveStep.L50_OutShelf)
{
//Task.Delay(1000).Wait();
Thread.Sleep(1000);
if (!InCalling)
return;
waitTmie();
}
//通知agv上料结束, 也可以把上料结束的代码放到L50_OutShelf的结束步骤里去
//等待agv到位
while (!WaitMissionOk())
{
//Task.Delay(1000).Wait();
Thread.Sleep(1000);
if (!InCalling)
return;
waitTmie();
}
ToStandby();
InCalling = false;
......@@ -276,6 +302,7 @@ namespace AutoScanAndLabel.UC
else
MessageBox.Show(crc.GetString("Res0081", "当前没有料串不能请求取料串"));
}
Task handleAgv = null;
private void button_leftneedempty_Click(object sender, EventArgs e)
{
......@@ -284,14 +311,15 @@ namespace AutoScanAndLabel.UC
MessageBox.Show(crc.GetString("Res0079", "机器尚未启动不能呼叫Agv"));
return;
}
if (InCalling)
if (!canCall())
{
MessageBox.Show(crc.GetString("Res0035", "已呼叫Agv,不能重复呼叫"));
return;
}
if (RobotManage.mainMachine.IOValue(IO_Type.LeftEnd_Check).Equals(IO_VALUE.LOW))
{
Task.Run(() =>
LogUtil.info("开始出口空料串送入流程");
handleAgv = Task.Run(() =>
{
InCalling = true;
//请求AGV代码放这里
......@@ -299,21 +327,25 @@ namespace AutoScanAndLabel.UC
//等待agv到位
while (!WaitMissionOk())
{
//Task.Delay(1000).Wait();
Thread.Sleep(1000);
if (!InCalling)
return;
waitTmie();
}
if (InCalling)
RobotManage.mainMachine.LeftMoveInfo.NewMove(MoveStep.L60_InShelf);//等待agv到位后执行,启动进入
ShelfOutAgv();
while (RobotManage.mainMachine.LeftMoveInfo.MoveStep >= MoveStep.L60_InShelf)
{
//Task.Delay(1000).Wait();
Thread.Sleep(1000);
if (!InCalling)
return;
waitTmie();
}
//通知agv上料结束, 也可以把上料结束的代码放到 L60_InShelf的结束步骤里去
while (!WaitMissionOk())
{
//Task.Delay(1000).Wait();
Thread.Sleep(1000);
if (!InCalling)
return;
waitTmie();
}
ToStandby();
InCalling = false;
......@@ -341,6 +373,7 @@ namespace AutoScanAndLabel.UC
private void button2_Click(object sender, EventArgs e)
{
InCalling = false;
LogUtil.info("重置呼叫");
}
}
}
\ No newline at end of file
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!