|
|
using Rs.AutoDischarge.V3.Flow;
|
|
|
using Rs.Controls;
|
|
|
using Rs.Framework;
|
|
|
using Rs.Motion;
|
|
|
using Rs.MotionPlat.Commom;
|
|
|
using Rs.MotionPlat.Flow.Space;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Diagnostics;
|
|
|
using System.Drawing;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
using System.Threading;
|
|
|
using System.Threading.Tasks;
|
|
|
using static Rs.MotionPlat.Commom.SchedulingMessageBox;
|
|
|
|
|
|
namespace Rs.MotionPlat.Flow
|
|
|
{
|
|
|
|
|
|
enum ETakeTrayFlowStep
|
|
|
{
|
|
|
到取料盘上方,
|
|
|
等待到取料盘上方,
|
|
|
等待料盘准备就绪,
|
|
|
等待运动到取料位下方,
|
|
|
取料盘完成抬起,
|
|
|
等待取料盘完成抬起,
|
|
|
取料盘后真空检测,
|
|
|
到放料盘上方,
|
|
|
等待到放料盘上方,
|
|
|
等待放料仓准备就绪,
|
|
|
等待运动到放料位下方,
|
|
|
等待夹爪气缸张开,
|
|
|
放料盘完成后抬起,
|
|
|
等待放料完成抬起,
|
|
|
放料完成后真空检测,
|
|
|
搬运完成
|
|
|
}
|
|
|
|
|
|
public enum ETakeStatus
|
|
|
{
|
|
|
Idle,
|
|
|
Taking,
|
|
|
TakeOK
|
|
|
}
|
|
|
|
|
|
public enum ELoadUnloadType
|
|
|
{
|
|
|
Load,
|
|
|
Unload
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 料盘搬运流程
|
|
|
/// </summary>
|
|
|
public class TakeTrayFlow
|
|
|
{
|
|
|
private static TakeTrayFlow intance;
|
|
|
string logInfo = string.Empty;
|
|
|
public ETakeStatus TakeStatus { get; set; } = ETakeStatus.Idle;
|
|
|
public static TakeTrayFlow Instance
|
|
|
{
|
|
|
get
|
|
|
{
|
|
|
if(intance == null)
|
|
|
intance = new TakeTrayFlow();
|
|
|
return intance;
|
|
|
}
|
|
|
}
|
|
|
Stopwatch stopwatch = new Stopwatch();
|
|
|
ETakeTrayFlowStep step = ETakeTrayFlowStep.到取料盘上方;
|
|
|
private ETrayType m_fromTray = ETrayType.Empty2;
|
|
|
private ETrayType m_toTray = ETrayType.Ok;
|
|
|
private bool finisehd = true;
|
|
|
double targetX = 0.0;
|
|
|
double targetY = 0.0;
|
|
|
/// <summary>
|
|
|
/// 料盘搬运
|
|
|
/// </summary>
|
|
|
/// <param name="fromTray">需要搬运料仓的料盘</param>
|
|
|
/// <param name="toTray">料盘搬运的目的料仓</param>
|
|
|
/// <param name="takeTrayFinishedEvent">搬运料盘被拿起后事件</param>
|
|
|
/// <param name="arrivedDumpPosEvent">到达放料盘位上方事件</param>
|
|
|
/// <param name="dumpTrayFinishedEvent">放料盘完成后事件</param>
|
|
|
public bool Take(ETrayType fromTray, ETrayType toTray, Action takeTrayFinishedEvent, Action arrivedDumpPosEvent, Action dumpTrayFinishedEvent)
|
|
|
{
|
|
|
if (!finisehd)
|
|
|
return false;
|
|
|
else
|
|
|
finisehd = false;
|
|
|
TakeStatus = ETakeStatus.Taking;
|
|
|
step = ETakeTrayFlowStep.到取料盘上方;
|
|
|
m_fromTray = fromTray;
|
|
|
m_toTray = toTray;
|
|
|
while (!finisehd)
|
|
|
{
|
|
|
if (MachineManage.Instance.MachineStatus == EMachineStatus.Stop)
|
|
|
{
|
|
|
Thread.Sleep(10);
|
|
|
continue;
|
|
|
}
|
|
|
switch (step)
|
|
|
{
|
|
|
case ETakeTrayFlowStep.到取料盘上方:
|
|
|
if(DischargeFlow.Instance.XYCanGoLocalArea())
|
|
|
{
|
|
|
//double centerX = SysConfigParam.GetValue<double>($"Tray{m_fromTray.ToString()}CenterX");
|
|
|
//double centerY = SysConfigParam.GetValue<double>($"Tray{m_fromTray.ToString()}CenterY");
|
|
|
double cameraCenterX = SysConfigParam.GetValue<double>("ClampCenter2UpCameraCenterX");
|
|
|
double cameraCenterY = SysConfigParam.GetValue<double>("ClampCenter2UpCameraCenterY");
|
|
|
targetX = SysConfigParam.GetValue<double>($"{m_fromTray.ToString()}TakeTrayX");
|
|
|
targetY = SysConfigParam.GetValue<double>($"{m_fromTray.ToString()}TakeTrayY");
|
|
|
Motion.ErrorCode errCode = AxisControl.LoadX.MovePos(targetX + cameraCenterX, GlobalVar.TakeTraySpeed);
|
|
|
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
{
|
|
|
errCode = AxisControl.LoadY.MovePos(targetY + cameraCenterY, GlobalVar.TakeTraySpeed);
|
|
|
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
{
|
|
|
if (GlobalVar.VirtualAxis)
|
|
|
{
|
|
|
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
|
|
|
}
|
|
|
logInfo = GetClassName() + $"准备运动到{m_fromTray}料仓取料盘位上方";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
step = ETakeTrayFlowStep.等待到取料盘上方;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
MsgBox.ShowAxisAlarmDialog(AxisControl.LoadY, errCode);
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
MsgBox.ShowAxisAlarmDialog(AxisControl.LoadX, errCode);
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
Msg.ShowError("周转Y轴不在安全位,请移动到安全后点击确定");
|
|
|
}
|
|
|
break;
|
|
|
case ETakeTrayFlowStep.等待到取料盘上方:
|
|
|
if (Ops.IsStop("LoadX", "LoadY") || GlobalVar.VirtualAxis)
|
|
|
{
|
|
|
if(Ops.IsArrived(AxisControl.LoadX,AxisControl.LoadY) || GlobalVar.VirtualAxis)
|
|
|
{
|
|
|
logInfo = GetClassName() + $"已运动到{m_fromTray}料仓取料盘位上方";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
step = ETakeTrayFlowStep.等待料盘准备就绪;
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
case ETakeTrayFlowStep.等待料盘准备就绪:
|
|
|
if (StockManager.Instance.GetStock(m_fromTray).Status == EStockTrayStatus.Loaded)
|
|
|
{
|
|
|
logInfo = GetClassName() + $"{m_fromTray}料仓料盘准备就绪";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
Ops.On("上下气缸电磁阀动位");
|
|
|
logInfo = GetClassName()+ "上下气缸电磁阀动位on";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
Ops.Off("上下气缸电磁阀原位");
|
|
|
logInfo = GetClassName() + "上下气缸电磁阀原位 off";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
Thread.Sleep(150);
|
|
|
step = ETakeTrayFlowStep.等待运动到取料位下方;
|
|
|
stopwatch.Restart();
|
|
|
}
|
|
|
break;
|
|
|
case ETakeTrayFlowStep.等待运动到取料位下方:
|
|
|
if ((Ops.IsOn("上下气缸动位") && stopwatch.ElapsedMilliseconds < 5000) || (GlobalVar.VirtualAxis))
|
|
|
{
|
|
|
logInfo =GetClassName()+ $"检测上下气缸动位OK";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
stopwatch.Stop();
|
|
|
Ops.On("夹爪气缸电磁阀");
|
|
|
logInfo = GetClassName() + $"夹爪气缸on";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
Thread.Sleep(1000);
|
|
|
if (!GlobalVar.TakeTrayDisableVac)
|
|
|
{
|
|
|
Ops.On("夹爪真空吸");
|
|
|
logInfo = GetClassName() + $"打开夹爪夹爪真空吸";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
}
|
|
|
Ops.Off($"{(int)m_fromTray}号料仓斜推气缸");
|
|
|
logInfo = GetClassName() + $"关闭{m_fromTray}号料仓斜推气缸";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
Ops.Off($"{(int)m_toTray}号料仓斜推气缸");
|
|
|
logInfo = GetClassName() + $"关闭{m_toTray}号料仓斜推气缸";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
|
step = ETakeTrayFlowStep.取料盘完成抬起;
|
|
|
}
|
|
|
else if (stopwatch.ElapsedMilliseconds > 5000)
|
|
|
{
|
|
|
logInfo = "上下气缸动位异常,请处理后点击确定";
|
|
|
MessageQueue.Instance.Warn(GetClassName()+ logInfo);
|
|
|
TestCenterMessageBox.Show(AlarmConstID.UpDownCylinderExceptionAlarm, logInfo,ETipButton.Ok);
|
|
|
TestCenterMessageBox.WaitResult(AlarmConstID.UpDownCylinderExceptionAlarm);
|
|
|
stopwatch.Restart();
|
|
|
}
|
|
|
break;
|
|
|
case ETakeTrayFlowStep.取料盘完成抬起:
|
|
|
Ops.Off("上下气缸电磁阀动位");
|
|
|
logInfo = GetClassName() + $"上下气缸电磁阀动位 off";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
Ops.On("上下气缸电磁阀原位");
|
|
|
logInfo = GetClassName() + $"上下气缸电磁阀原位 on";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
stopwatch.Restart();
|
|
|
step = ETakeTrayFlowStep.等待取料盘完成抬起;
|
|
|
break;
|
|
|
case ETakeTrayFlowStep.等待取料盘完成抬起:
|
|
|
if (stopwatch.ElapsedMilliseconds < 10000)
|
|
|
{
|
|
|
if ((Ops.IsOn("上下气缸原位")) || (GlobalVar.VirtualAxis))
|
|
|
{
|
|
|
logInfo = $"检测到上下气缸原位OK";
|
|
|
stopwatch.Restart();
|
|
|
if(GlobalVar.TakeTrayDisableVac)
|
|
|
{
|
|
|
step = ETakeTrayFlowStep.到放料盘上方;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
step = ETakeTrayFlowStep.取料盘后真空检测;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
logInfo = "上下气缸原位异常,请处理后点击确定";
|
|
|
MessageQueue.Instance.Warn(GetClassName()+ logInfo);
|
|
|
TestCenterMessageBox.Show(AlarmConstID.UpDownCylinderExceptionAlarm, logInfo, ETipButton.Ok);
|
|
|
TestCenterMessageBox.WaitResult(AlarmConstID.UpDownCylinderExceptionAlarm);
|
|
|
stopwatch.Stop();
|
|
|
stopwatch.Restart();
|
|
|
}
|
|
|
break;
|
|
|
case ETakeTrayFlowStep.取料盘后真空检测:
|
|
|
if (stopwatch.ElapsedMilliseconds < 5000 || GlobalVar.VirtualAxis)
|
|
|
{
|
|
|
if (Ops.IsOn("夹爪真空吸检测") || (GlobalVar.VirtualAxis))
|
|
|
{
|
|
|
logInfo = GetClassName()+$"夹爪真空吸检测 OK";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
|
step = ETakeTrayFlowStep.到放料盘上方;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
logInfo = "夹爪真空吸检测异常,请处理后点击确定";
|
|
|
MessageQueue.Instance.Warn(GetClassName()+ logInfo);
|
|
|
TestCenterMessageBox.Show(AlarmConstID.UpDownCylinderExceptionAlarm, logInfo, ETipButton.Ok);
|
|
|
TestCenterMessageBox.WaitResult(AlarmConstID.UpDownCylinderExceptionAlarm);
|
|
|
stopwatch.Stop();
|
|
|
stopwatch.Restart();
|
|
|
Ops.On("上下气缸电磁阀动位");
|
|
|
logInfo = GetClassName() + "上下气缸电磁阀动位on";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
Ops.Off("上下气缸电磁阀原位");
|
|
|
logInfo = GetClassName() + "上下气缸电磁阀原位 off";
|
|
|
step = ETakeTrayFlowStep.等待运动到取料位下方;
|
|
|
}
|
|
|
break;
|
|
|
case ETakeTrayFlowStep.到放料盘上方:
|
|
|
if (DischargeFlow.Instance.XYCanGoLocalArea())
|
|
|
{
|
|
|
//if(GlobalVar.RunSpace)
|
|
|
//{
|
|
|
// Thread.Sleep(2000);
|
|
|
//}
|
|
|
//centerX = SysConfigParam.GetValue<double>($"Tray{m_toTray.ToString()}CenterX");
|
|
|
//centerY = SysConfigParam.GetValue<double>($"Tray{m_toTray.ToString()}CenterY");
|
|
|
takeTrayFinishedEvent?.Invoke();
|
|
|
double cameraCenterX = SysConfigParam.GetValue<double>("ClampCenter2UpCameraCenterX");
|
|
|
double cameraCenterY = SysConfigParam.GetValue<double>("ClampCenter2UpCameraCenterY");
|
|
|
targetX = SysConfigParam.GetValue<double>($"{m_toTray.ToString()}TakeTrayX");
|
|
|
targetY = SysConfigParam.GetValue<double>($"{m_toTray.ToString()}TakeTrayY");
|
|
|
|
|
|
ErrorCode errCode = AxisControl.LoadX.MovePos(targetX + cameraCenterX, GlobalVar.TakeTraySpeed);
|
|
|
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
{
|
|
|
errCode = AxisControl.LoadY.MovePos(targetY + cameraCenterY - 2, GlobalVar.TakeTraySpeed);
|
|
|
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
{
|
|
|
if (GlobalVar.VirtualAxis)
|
|
|
{
|
|
|
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
|
|
|
}
|
|
|
logInfo = GetClassName() + $"到{toTray}料仓放料盘上方";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
step = ETakeTrayFlowStep.等待到放料盘上方;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
MsgBox.ShowAxisAlarmDialog(AxisControl.LoadY, errCode);
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
MsgBox.ShowAxisAlarmDialog(AxisControl.LoadX, errCode);
|
|
|
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
Msg.ShowError("周转Y轴不在安全位,请移动到安全后点击确定");
|
|
|
}
|
|
|
break;
|
|
|
case ETakeTrayFlowStep.等待到放料盘上方:
|
|
|
if (Ops.IsStop("LoadX", "LoadY") || GlobalVar.VirtualAxis)
|
|
|
{
|
|
|
if (Ops.IsArrived(AxisControl.LoadX, AxisControl.LoadY) || GlobalVar.VirtualAxis)
|
|
|
{
|
|
|
logInfo = GetClassName() + $"已运动到{toTray}料仓放料盘上方";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
arrivedDumpPosEvent?.Invoke();
|
|
|
step = ETakeTrayFlowStep.等待放料仓准备就绪;
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
case ETakeTrayFlowStep.等待放料仓准备就绪:
|
|
|
if ((StockManager.Instance.GetStock(m_toTray).Status == EStockTrayStatus.Unloaded|| StockManager.Instance.GetStock(m_toTray).Status == EStockTrayStatus.Empty) || GlobalVar.VirtualAxis)
|
|
|
{
|
|
|
logInfo = GetClassName() + $"检测到{m_toTray}料仓准备就绪";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
Ops.On("上下气缸电磁阀动位");
|
|
|
logInfo = GetClassName() + $"上下气缸电磁阀动位 on";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
Ops.Off("上下气缸电磁阀原位");
|
|
|
logInfo = GetClassName() + $"上下气缸电磁阀原位 off";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
Thread.Sleep(150);
|
|
|
step = ETakeTrayFlowStep.等待运动到放料位下方;
|
|
|
stopwatch.Restart();
|
|
|
}
|
|
|
break;
|
|
|
case ETakeTrayFlowStep.等待运动到放料位下方:
|
|
|
if (stopwatch.ElapsedMilliseconds < 5000)
|
|
|
{
|
|
|
if (Ops.IsOn("上下气缸动位") || GlobalVar.VirtualAxis)
|
|
|
{
|
|
|
logInfo = GetClassName()+ "检测到上下气缸动位 OK";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
stopwatch.Stop();
|
|
|
if(!GlobalVar.TakeTrayDisableVac)
|
|
|
{
|
|
|
Ops.Off("夹爪真空吸");
|
|
|
logInfo = GetClassName() + "夹爪真空吸 off";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
Thread.Sleep(10);
|
|
|
Ops.On("夹爪真空破");
|
|
|
logInfo = GetClassName() + "夹爪真空破 on";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
Thread.Sleep(200);
|
|
|
Ops.Off("夹爪真空破");
|
|
|
logInfo = GetClassName() + "夹爪真空破 off";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
}
|
|
|
|
|
|
Ops.Off("夹爪气缸电磁阀");
|
|
|
logInfo = GetClassName() + $"夹爪气缸off";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
Thread.Sleep(1000);
|
|
|
stopwatch.Restart();
|
|
|
step = ETakeTrayFlowStep.等待夹爪气缸张开;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
logInfo = "上下气缸动位检测异常,请处理后点击确定";
|
|
|
MessageQueue.Instance.Warn(GetClassName()+ logInfo);
|
|
|
TestCenterMessageBox.Show(AlarmConstID.UpDownCylinderExceptionAlarm, logInfo, ETipButton.Ok);
|
|
|
TestCenterMessageBox.WaitResult(AlarmConstID.UpDownCylinderExceptionAlarm);
|
|
|
stopwatch.Stop();
|
|
|
stopwatch.Restart();
|
|
|
}
|
|
|
break;
|
|
|
case ETakeTrayFlowStep.等待夹爪气缸张开:
|
|
|
if(stopwatch.ElapsedMilliseconds<5000)
|
|
|
{
|
|
|
if(Ops.IsOn("夹爪气缸原位") || GlobalVar.RunSpace)
|
|
|
{
|
|
|
step = ETakeTrayFlowStep.放料盘完成后抬起;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
logInfo = "夹爪气缸原位检测异常,请处理后点击确定";
|
|
|
MessageQueue.Instance.Warn(GetClassName() + logInfo);
|
|
|
TestCenterMessageBox.Show(AlarmConstID.UpDownCylinderExceptionAlarm, logInfo, ETipButton.Ok);
|
|
|
TestCenterMessageBox.WaitResult(AlarmConstID.UpDownCylinderExceptionAlarm);
|
|
|
stopwatch.Stop();
|
|
|
stopwatch.Restart();
|
|
|
}
|
|
|
break;
|
|
|
case ETakeTrayFlowStep.放料盘完成后抬起:
|
|
|
Ops.Off("上下气缸电磁阀动位");
|
|
|
logInfo = GetClassName() + "上下气缸电磁阀动位 off";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
Ops.On("上下气缸电磁阀原位");
|
|
|
logInfo = GetClassName() + "上下气缸电磁阀原位 on";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
Thread.Sleep(150);
|
|
|
step = ETakeTrayFlowStep.等待放料完成抬起;
|
|
|
break;
|
|
|
case ETakeTrayFlowStep.等待放料完成抬起:
|
|
|
if (Ops.IsOn("上下气缸原位") || GlobalVar.VirtualAxis)
|
|
|
{
|
|
|
if(GlobalVar.TakeTrayDisableVac)
|
|
|
{
|
|
|
step = ETakeTrayFlowStep.搬运完成;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
step = ETakeTrayFlowStep.放料完成后真空检测;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
break;
|
|
|
case ETakeTrayFlowStep.放料完成后真空检测:
|
|
|
if (Ops.IsOff("夹爪真空吸检测") || (GlobalVar.VirtualAxis))
|
|
|
{
|
|
|
logInfo = GetClassName()+$"放料盘完成,料盘搬运结束";
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
step = ETakeTrayFlowStep.搬运完成;
|
|
|
//if (mLoadUnloadType == ELoadUnloadType.Load)
|
|
|
//{
|
|
|
// StockManager.Instance.Load(m_toTray, EStockTrayLoadMode.AfterTakeTray);
|
|
|
//}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//粘料盘
|
|
|
logInfo = "检测到料盘未放下,请处理后点击确定重放";
|
|
|
MessageQueue.Instance.Warn(GetClassName()+ logInfo);
|
|
|
TestCenterMessageBox.Show(AlarmConstID.UpDownCylinderExceptionAlarm, logInfo, ETipButton.Ok);
|
|
|
TestCenterMessageBox.WaitResult(AlarmConstID.UpDownCylinderExceptionAlarm);
|
|
|
step = ETakeTrayFlowStep.到放料盘上方;
|
|
|
}
|
|
|
break;
|
|
|
case ETakeTrayFlowStep.搬运完成:
|
|
|
finisehd = true;
|
|
|
TakeStatus = ETakeStatus.TakeOK;
|
|
|
dumpTrayFinishedEvent?.Invoke();
|
|
|
break;
|
|
|
}
|
|
|
Thread.Sleep(10);
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
public string GetCurStep()
|
|
|
{
|
|
|
return step.ToString();
|
|
|
}
|
|
|
|
|
|
public string GetClassName()
|
|
|
{
|
|
|
return this.GetType().Name + "-";
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
}
|