using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HH.WCS.Mobox3.AnGang.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 <= nextPri; } /// /// 获取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]; } } }