Ejemplo n.º 1
0
        public override CmdLineResult handleCommand(CmdLineStruct pCmd)
        {
            // Gestion héritée des commandes
            CmdLineResult lCmdLineResult = base.handleCommand(pCmd);

            if (lCmdLineResult.CmdAccepted)
            {
                return(lCmdLineResult);
            }

            // Sortie
            if (pCmd.Line == "q")
            {
                return(new CmdLineResult(true, "", getCOMState(), true, true));
            }

            // Accès aux P, I, D de manière individuelle
            StateBase lNewState = null;

            if (pCmd.Line == "port")
            {
                lNewState = new ComPortChangeState();
            }
            else if (pCmd.Line == "baud")
            {
                lNewState = new ComBaudChangeState();
            }

            if (lNewState != null)
            {
                setSubState(lNewState);
            }

            return(new CmdLineResult(true, "", "", true, false));
        }
Ejemplo n.º 2
0
        public override CmdLineResult handleCommand(CmdLineStruct pCmd)
        {
            // Gestion héritée des commandes
            CmdLineResult lCmdLineResult = base.handleCommand(pCmd);

            if (lCmdLineResult.CmdAccepted)
            {
                return(lCmdLineResult);
            }

            // Sortie
            if (pCmd.Line == "q")
            {
                SerialCommunication.get().close();
                return(new CmdLineResult(true, "", "", true, true));
            }

            // Accès aux P, I, D de manière individuelle
            StateBase lNewState = null;

            if (lNewState != null)
            {
                setSubState(lNewState);
            }

            return(new CmdLineResult(true, "", "", true, false));
        }
Ejemplo n.º 3
0
        public override CmdLineResult handleCommand(CmdLineStruct pCmd)
        {
            // Gestion héritée des commandes
            CmdLineResult lCmdLineResult = base.handleCommand(pCmd);

            if (lCmdLineResult.CmdAccepted)
            {
                return(lCmdLineResult);
            }

            // Accès aux états de base
            if (pCmd.Line == "q")
            {
                return(new CmdLineResult(true, "", "Exiting", true, true));
            }

            // Changement d'états
            StateBase lNewSate = null;

            if ((pCmd.Line == "thrust") || (pCmd.Line == "t"))
            {
                lNewSate = new ThrustChangingState();
            }
            else if (pCmd.Line == "pid")
            {
                lNewSate = new PIDChangingState();
            }
            else if (pCmd.Line == "com")
            {
                lNewSate = new ComState();
            }
            else if (pCmd.Line == "open")
            {
                lNewSate = new InFlightState();
            }

            if (lNewSate != null)
            {
                setSubState(lNewSate);
                return(new CmdLineResult(true, "", "", true, false));
            }

            // Fin
            return(new CmdLineResult(false, "Unknown command", "", false, false));
        }
Ejemplo n.º 4
0
        public override CmdLineResult handleCommand(CmdLineStruct pCmd)
        {
            // Gestion héritée des commandes
            CmdLineResult lCmdLineResult = base.handleCommand(pCmd);

            if (lCmdLineResult.CmdAccepted)
            {
                return(lCmdLineResult);
            }

            // Sortie
            if (pCmd.Line == "q")
            {
                return(new CmdLineResult(true, "", getBaudrate(), true, true));
            }

            // Regex
            Regex regex = new Regex(@"^(\d+)+$");
            Match match = regex.Match(pCmd.Line);

            // Commande incorrecte
            if (match.Groups[1].Success == false)
            {
                return(new CmdLineResult(true, "Bad command", "", false, false));
            }

            // De quelle commande s'agit-il ?
            int lValue;

            if (match.Groups[1].Value.Length > 0)
            {
                lValue = (int)Convert.ToInt32(match.Groups[1].Value);
                SerialCommunication.get().ComBaudrate = lValue;
            }

            return(new CmdLineResult(true, "", "", true, false));
        }
Ejemplo n.º 5
0
        public override CmdLineResult handleCommand(CmdLineStruct pCmd)
        {
            // Gestion héritée des commandes
            CmdLineResult lCmdLineResult = base.handleCommand(pCmd);

            if (lCmdLineResult.CmdAccepted)
            {
                return(lCmdLineResult);
            }

            /**
             *  Formats acceptés :
             *      q
             *      s
             *      v
             *      +/-
             *      +/- 1
             *      +/- 1.
             *      +/- 1.2
             *      1
             *      1.
             *      1.2
             */

            // Sortie de l'état
            string lResult;

            if (pCmd.Line == "q")
            {
                lResult = String.Format("{0} : {1}", getStateName(), getCurrentValue());
                return(new CmdLineResult(true, "", lResult, true, true));
            }

            // Récupération de la valeur actuelle
            else if (pCmd.Line == "g")
            {
                lResult = String.Format("{0} : {1}", getStateName(), getCurrentValue());
                return(new CmdLineResult(true, lResult, "", true, false));
            }

            // Changement d'action type
            else if (pCmd.Line == "s")
            {
                CurrentActionType = ActionType.Continuous;
                return(new CmdLineResult(true, "", "", true, false));
            }
            else if (pCmd.Line == "v")
            {
                CurrentActionType = ActionType.Once;
                return(new CmdLineResult(true, "", "", true, false));
            }

            // Regex
            Regex regex = new Regex(@"^([\+\-]?)\s*(\d*\,?\d*)$");
            Match match = regex.Match(pCmd.Line);

            // Commande incorrecte
            if ((match.Groups[1].Success == false) && (match.Groups[2].Success == false))
            {
                return(new CmdLineResult(true, "Bad command", "", false, false));
            }

            // De quelle commande s'agit-il ?
            float lValue;

            if (match.Groups[2].Value.Length > 0)
            {
                lValue = (float)Convert.ToDouble(match.Groups[2].Value);
            }
            else
            {
                lValue = getStepValue();
            }

            if (match.Groups[1].Value.Length > 0)
            {
                if (match.Groups[1].Value == "-")
                {
                    lValue = -lValue;
                }
            }

            // Application de la commande
            increateValue(lValue);

            // Affichage du résultat
            lResult = String.Format("{0} : {1}", getStateName(), getCurrentValue());

            lCmdLineResult = new CmdLineResult(true, lResult, "", true, false);

            return(lCmdLineResult);
        }
Ejemplo n.º 6
0
        public void handleCommands()
        {
            /**
             *  Les 3 dernières lignes de la console contiennent :
             *      - le chemin de l'état actuel,
             *      - la commande en cours d'écriture,
             *      - une ligne affichant le retour de l'état en cours, vis-à-vis de la commande en cours d'écriture
             */

            System.Console.WriteLine("Enter your commands.");

            _CurrentConsoleBlockTop = System.Console.CursorTop;
            updateOutput("", "", "");

            System.ConsoleKeyInfo cki = new System.ConsoleKeyInfo();

            // Boucle de traitement infinie
            string lLineBuffer = "";
            bool   lLineDone   = false;
            bool   lDone       = false;

            while (lDone == false)
            {
                if (System.Console.KeyAvailable == true)
                {
                    // On récupère le caractère sans l'afficher
                    cki = System.Console.ReadKey(true);

                    // On traite les caractères spéciaux, notamment la fin de ligne
                    switch (cki.Key)
                    {
                    case ConsoleKey.Enter:
                        lLineDone = true;
                        break;

                    case ConsoleKey.Backspace:
                        if (lLineBuffer.Length > 0)
                        {
                            lLineBuffer = lLineBuffer.Substring(0, lLineBuffer.Length - 1);
                        }
                        break;

                    default:
                        lLineBuffer += cki.KeyChar;
                        break;
                    }

                    string lResultText = "";
                    string lRemarkText = "";

                    if ((_RootState.getStateTreeActionType() == StateBase.ActionType.Continuous) || (lLineDone == true))
                    {
                        // On traite la ligne
                        CmdLineStruct lCmdLine = new CmdLineStruct();
                        lCmdLine.Line = lLineBuffer;

                        if (lLineBuffer.Length > 0)
                        {
                            CmdLineResult lCmdResult = _RootState.handleCommand(lCmdLine);

                            lResultText = lCmdResult.ResultText;
                            lRemarkText = lCmdResult.RemarkText;

                            if (lCmdResult.CmdAccepted)
                            {
                                if (lCmdResult.ResetLine)
                                {
                                    lLineDone = true;
                                }
                            }

                            if (lCmdResult.StateEnded)
                            {
                                lDone = true;
                            }
                        }

                        //
                        if (lLineDone)
                        {
                            lLineBuffer = "";
                            lLineDone   = false;
                        }
                    }

                    // On met à jour les deux dernières lignes
                    updateOutput(lResultText, lLineBuffer, lRemarkText);
                }
                else
                {
                    //if (MessageManager.get().treatMessages() == true)
                    {
                    }
                    System.Threading.Thread.Sleep(1);
                }
            }
        }