/// <summary> /// Retourne le message contenu dans une trame dans un texte explicite avec les paramètres décodés /// </summary> /// <param name="frame">Trame à décoder</param> /// <returns>Message sur le contnu de la trame</returns> public static String GetMessage(Frame frame) { String output = ""; output = GetMessage(CanFrameFactory.ExtractFunction(frame)); output = GetMessage(CanFrameFactory.ExtractFunction(frame), GetParameters(output, frame)); return(output); }
/// <summary> /// Retourne la liste des valeurs des paramètres d'une trame selon le format donné /// </summary> /// <param name="format">Format du décodage sous la forme "Message valeur = {0-1}" équivaut à un paramètre situé sur les 1er et 2eme octets.</param> /// <param name="frame">Trame dans laquelle lire les valeurs</param> /// <returns>Liste des valeurs brutes des paramètres</returns> private static List <uint> GetParameters(String format, Frame frame) { List <uint> parameters = new List <uint>(); String subParameter; if (format.Contains("{ServoID}")) { parameters.Add((uint)CanFrameFactory.ExtractServomoteurID(frame)); format = format.Replace("{ServoID}", ""); } for (int iChar = 0; iChar < format.Length; iChar++) { if (format[iChar] == '{') { iChar++; parameters.Add(0); while (format[iChar] != '}') { subParameter = ""; while (format[iChar] != '-' && format[iChar] != '}') { subParameter += format[iChar]; iChar++; } parameters[parameters.Count - 1] = parameters[parameters.Count - 1] * 256 + frame[int.Parse(subParameter)]; if (format[iChar] == '-') { iChar++; } } } } return(parameters); }