using WIDESEAWCS_Common.TaskEnum;
|
using WIDESEAWCS_Tasks.Workflow.Abstractions;
|
|
namespace WIDESEAWCS_Tasks.Workflow
|
{
|
/// <summary>
|
/// 简单命令处理:仅迁移原 RobotMessageHandler 中的命令分支,不改变业务语义。
|
/// </summary>
|
public class RobotSimpleCommandHandler : IRobotSimpleCommandHandler
|
{
|
private readonly RobotTaskProcessor _taskProcessor;
|
|
public RobotSimpleCommandHandler(RobotTaskProcessor taskProcessor)
|
{
|
_taskProcessor = taskProcessor;
|
}
|
|
public async Task<bool> HandleAsync(string message, RobotSocketState state)
|
{
|
switch (message)
|
{
|
case "homing":
|
state.OperStatus = "Homing";
|
return true;
|
|
case "homed":
|
state.OperStatus = "Homed";
|
return true;
|
|
case "picking":
|
state.CurrentAction = "Picking";
|
return true;
|
|
case "puting":
|
state.CurrentAction = "Putting";
|
return true;
|
|
case "allpickfinished":
|
{
|
state.CurrentAction = "AllPickFinished";
|
var currentTask = state.CurrentTask;
|
if (currentTask == null)
|
{
|
return false;
|
}
|
|
var robotTaskType = (RobotTaskTypeEnum)currentTask.RobotTaskType;
|
if (robotTaskType == RobotTaskTypeEnum.SplitPallet || robotTaskType == RobotTaskTypeEnum.ChangePallet)
|
{
|
if (await _taskProcessor.HandleInboundTaskAsync(state, useSourceAddress: true))
|
{
|
_taskProcessor.DeleteTask(currentTask.RobotTaskId);
|
return true;
|
}
|
}
|
return false;
|
}
|
|
case "allputfinished":
|
{
|
state.CurrentAction = "AllPutFinished";
|
var currentTask = state.CurrentTask;
|
if (currentTask == null)
|
{
|
return false;
|
}
|
|
var robotTaskType = (RobotTaskTypeEnum)currentTask.RobotTaskType;
|
if (robotTaskType == RobotTaskTypeEnum.GroupPallet || robotTaskType == RobotTaskTypeEnum.ChangePallet)
|
{
|
if (await _taskProcessor.HandleInboundTaskAsync(state, useSourceAddress: false))
|
{
|
_taskProcessor.DeleteTask(currentTask.RobotTaskId);
|
state.CurrentTask = null;
|
state.RobotTaskTotalNum = 0;
|
state.CellBarcode = new List<string>();
|
return true;
|
}
|
}
|
return false;
|
}
|
|
case "running":
|
state.OperStatus = "Running";
|
return true;
|
|
case "pausing":
|
state.OperStatus = "Pausing";
|
return true;
|
|
case "warming":
|
state.OperStatus = "Warming";
|
return true;
|
|
case "emstoping":
|
state.OperStatus = "Emstoping";
|
return true;
|
|
case "runmode,1":
|
state.RobotRunMode = 1;
|
return true;
|
|
case "runmode,2":
|
state.RobotRunMode = 2;
|
return true;
|
|
case "controlmode,1":
|
state.RobotControlMode = 1;
|
return true;
|
|
case "controlmode,2":
|
state.RobotControlMode = 2;
|
return true;
|
|
case "armobject,1":
|
state.RobotArmObject = 1;
|
return true;
|
|
case "armobject,0":
|
state.RobotArmObject = 0;
|
return true;
|
|
default:
|
return false;
|
}
|
}
|
}
|
}
|