using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HH.WCS.Mobox3.DSZSH.Helpers {
public class AgvHelper {
///
/// AGV 任务状态优先级:1->3->4->5->6->2
///
private static readonly int[] _agvTaskStatePri = { 0, 1, 6, 2, 3, 4, 5 };
///
/// AGV 状态变化表:1->3->4->5->6->2 | 0->0 | 2->0
///
private static readonly int[] _agvNextState = new int[] { 0, 3, 0, 4, 5, 6, 2 };
///
/// 判断AGV状态是否为合法的下个状态(包含检查状态是否为任务状态)
///
///
/// 1. 前后状态只要有不合法都会返回
/// 2. nextState 可以与 lastState 相同
///
///
///
///
public static bool IsNextStateOk(int lastState, int nextState) {
var lastPri = GetPri(lastState);
var nextPri = GetPri(nextState);
return lastPri != 0 && nextPri != 0 && lastPri <= nextState;
}
///
/// 获取AGV当前状态的下个状态:不合法或为 2(完成) 时返回 0
///
///
///
public static int GetNextState(int curState) {
if (!IsTaskState(curState)) return 0;
return _agvNextState[curState];
}
///
/// 判断 AGV 状态是否为正常的执行任务状态:134562
///
///
///
private static bool IsTaskState(int state) {
return state > 0 && state < 7;
}
///
/// GetTaskStatePri:获取 AGV 任务状态的优先级(包含检查状态是否为任务状态)
///
///
///
private static int GetPri(int state) {
if (!IsTaskState(state)) { return 0; }
return _agvTaskStatePri[state];
}
}
}