public RobotAction(int ID) { _uID = ID; // Identifiant unique pour l'action _cmd = EnumCmd.NotSet; // Commande _cmdType = EnumCmdType.CmdType_NotSet; // Type de l'action à réaliser _param1 = ""; // Param 1 _param2 = ""; // Param 2 _param3 = ""; // Param 3 _param4 = ""; // Param 4 _activeSensors = new ActiveSensors(); // Sensors actifs durant le mouvement (pas de sensor actif) _nextID = -1; // Action suivante _timeoutID = -1; // Action à réaliser en cas de timeout }
/// <summary> /// Fonction pour verifier la valeur du type de commande passé en paramètre /// </summary> /// <param name="valueToCheck">Valeur à tester</param> /// <param name="defaultValue">Valeur à utiliser en cas de valeur non valide</param> /// <returns>Le type de commande verifié</returns> private EnumCmdType CheckEnumCmdTypeValue(String valueToCheck, EnumCmdType defaultValue) { EnumCmdType Ret = defaultValue; try { foreach (EnumCmdType currentValue in Enum.GetValues(typeof(EnumCmdType))) { if (currentValue.ToString() == valueToCheck) Ret = currentValue; } } catch (Exception) { Ret = defaultValue; } return Ret; }
/// <summary> /// Update the current command with the given data /// </summary> /// <param name="Cmd">Command</param> /// <param name="CmdType">Command Type</param> /// <param name="Param1">Param 1</param> /// <param name="Param2">Param 2</param> /// <param name="Param3">Param 3</param> /// <param name="Param4">Param 4</param> /// <param name="ActiveSensors"></param> /// <returns></returns> public bool Update(EnumCmd Cmd, EnumCmdType CmdType, String Param1, String Param2, String Param3, String Param4, EnumStrategyFlag ActiveSensors) { bool Ret = false; // Init Cmd to the default value _Cmd = EnumCmd.NotSet; _CmdType = EnumCmdType.NotSet; _Param1 = null; _Param2 = null; _Param3 = null; _Param4 = null; if (ActiveSensors != EnumStrategyFlag.STRATEGYFLAG_NONE) _ActiveSensorsFlag = ActiveSensors; _Cmd = Cmd; _CmdType = CmdType; // Check Params for Cmd // Cmd Modif : Add new command here switch (Cmd) { // ________________________________________________________ Param1 / Param2 case EnumCmd.MvtSimple_MoveInMM: case EnumCmd.App_SetStrategyFlags: if ((Param1 != null) && (Param2 != null)) { _Param1 = Param1; _Param2 = Param2; Ret = true; } else { LoadDefaultParamsValue(); Ret = true; } break; // ________________________________________________________ Param1 / Param4 case EnumCmd.Mvt_UseAngleOnly: case EnumCmd.MvtSimple_RotateInDeg: case EnumCmd.MvtSimple_RotateToAngleInDeg: if ((Param1 != null) && (Param4 != null)) { _Param1 = Param1; _Param4 = Param4; Ret = true; } else { LoadDefaultParamsValue(); Ret = true; } break; // ________________________________________________________ Param1 / Param2 / Param3 case EnumCmd.Mvt_UseDistOnly: case EnumCmd.App_IfGoto_System: case EnumCmd.App_IfGoto_Strategy: if ((Param1 != null) && (Param2 != null) && (Param3 != null)) { _Param1 = Param1; _Param2 = Param2; _Param3 = Param3; Ret = true; } else { LoadDefaultParamsValue(); Ret = true; } break; // ________________________________________________________ Param1 / Param2 / Param4 case EnumCmd.Mvt_UsePivotMode: if ((Param1 != null) && (Param2 != null) && (Param4 != null)) { _Param1 = Param1; _Param2 = Param2; _Param4 = Param4; Ret = true; } else { LoadDefaultParamsValue(); Ret = true; } break; // ________________________________________________________ Param2 / Param3 / Param4 case EnumCmd.App_SetNewPos: if ((Param2 != null) && (Param3 != null) && (Param4 != null)) { _Param2 = Param2; _Param3 = Param3; _Param4 = Param4; Ret = true; } else { LoadDefaultParamsValue(); Ret = true; } break; // ________________________________________________________ Param1 / Param2 / Param3 / Param4 case EnumCmd.Mvt_UseMixedMode: case EnumCmd.App_Wait: case EnumCmd.Mvt_UseSpline: if ((Param1 != null) && (Param2 != null) && (Param3 != null) && (Param4 != null)) { _Param1 = Param1; _Param2 = Param2; _Param3 = Param3; _Param4 = Param4; Ret = true; } else { LoadDefaultParamsValue(); Ret = true; } break; // ________________________________________________________ None case EnumCmd.Mvt_Stop: case EnumCmd.Sensors_ArmsClose: case EnumCmd.Sensors_ArmsCloseTotem: case EnumCmd.Sensors_ArmsOpenDown: case EnumCmd.Sensors_ArmsOpenUp: case EnumCmd.Sensors_ArmsOpenOneCD: case EnumCmd.Sensors_ArmsOpenTotem: case EnumCmd.Sensors_ArmsUngrab: case EnumCmd.Sensors_ElevatorLow: Ret = true; break; // ________________________________________________________ default: break; } return Ret; }
/// <summary> /// Get the Command Type into a string /// </summary> /// <param name="CmdTypeString">String that contains the expected command type</param> /// <returns>An EnumCmdType object</returns> public static String GetCmdTypeToString(EnumCmdType CmdType) { // App if (EnumCmdType.Blocking == CmdType) { return "CmdType_Blocking"; } if (EnumCmdType.NonBlocking == CmdType) { return "CmdType_NonBlocking"; } return "CmdType_NotSet"; }
/// <summary> /// Create a new 'Cmd' command with the 'CmdType' type, 'Params' parameters and ActiveSensors parameters /// </summary> public Command(EnumCmd Cmd, EnumCmdType CmdType, String Param1, String Param2, String Param3, String Param4, EnumStrategyFlag ActiveSensors) { Update(Cmd, CmdType, Param1, Param2, Param3, Param4, ActiveSensors); return; }
/// <summary> /// Create a new 'Cmd' command with the 'CmdType' type and 'Params' parameters /// </summary> public Command(EnumCmd Cmd, EnumCmdType CmdType, String Param1, String Param2, String Param3, String Param4) { Update(Cmd, CmdType, Param1, Param2, Param3, Param4, EnumStrategyFlag.STRATEGYFLAG_NONE); return; }
/// <summary> /// Create a new 'Cmd' command with the 'CmdType' type /// Default value is used Params /// </summary> public Command(EnumCmd Cmd, EnumCmdType CmdType) { Update(Cmd, CmdType, null, null, null, null, EnumStrategyFlag.STRATEGYFLAG_NONE); return; }