Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }