Exemplo n.º 1
0
        /// <summary>
        /// Execution des différentes tâches
        /// </summary>
        public void Demarrer(double tempsImparti)
        {
            Timer    timeout;
            DateTime fin        = new DateTime();
            var      thDecompte = new Thread(() =>
            {
                while (GestionStrat.ExecutionPossible && DateTime.Now < fin)
                {
                    //Trac.Ecrire("Temps restant: " + (fin - DateTime.Now).ToString().Substring(3, 5) + ".");
                    Thread.Sleep(10000);
                }
            });
            var thStrat = new Thread(() => EffectuerStrategie());

            InstantDebut = DateTime.Now;
            fin          = InstantDebut.AddSeconds(tempsImparti);

            thDecompte.Start();
            thStrat.Start();

            timeout = new Timer(state =>
            {
                //m_ihm.Ecrire("Fin du temps imparti.");
                if (thStrat.IsAlive)
                {
                    thStrat.Abort();
                }
                m_baseRoulante.stop();
                petitBras.arretUrgenceRoulette();
            }, null, (int)(tempsImparti * 1000), -1);
        }
Exemplo n.º 2
0
        /// <param name="tempsImparti">Temps en secondes au bout du quel l'arrêt du robot est forcé</param>
        public void Demarrer(double tempsImparti)
        {
            Timer    timeout;
            DateTime fin = new DateTime();

            /*
             * var thDecompte = new Thread(() =>
             * {
             *  while (Strategie.ExecutionPossible() && DateTime.Now < fin)
             *  {
             * //      Tracage.Ecrire("Temps restant: " + (fin - DateTime.Now).ToString().Substring(3, 5) + ".");
             *      Thread.Sleep(10000);
             *  }
             * });
             */
            InitialiserStrategie();

            Thread thStrat = new Thread(() => EffectuerStrategie());


            InstantDebut = DateTime.Now;
            fin          = InstantDebut.AddSeconds(tempsImparti);


//            thDecompte.Start();
            thStrat.Start();
            //   if (thStrat.IsAlive) m_ihm.retourPhase(Couleurs.bleu);

            timeout = new Timer(state =>
            {
                m_ihm.retourPhase(Couleurs.orange);

                //    Tracage.Ecrire("Fin du temps imparti.");

                /*if (thRanger.IsAlive)
                 * {
                 *  Debug.Print("plop ran");
                 *  thRanger.Suspend();
                 * }
                 *
                 * if (thReservoir.IsAlive)
                 * {
                 *  Debug.Print("plop res 1");
                 *  thReservoir.Suspend();
                 * }
                 * */



                // reservoir.arretUrgenceRoulette();

/*
 *              Thread thFunny = new Thread(() =>
 *              {
 *                  Thread.Sleep(3000);
 *                  funnyBras.lancer();
 *              });
 *
 *              thFunny.Start();
 */

                funnyBras = new CFunnyBras(controleurAX12, 7);
                Thread.Sleep(2000);
                funnyBras.lancer();

                m_ihm.retourPhase(Couleurs.rouge);

                BaseRoulante.stop();
                m_ihm.retourPhase(Couleurs.vert);

                pince.killPince();
                bras.killBras();
                reservoir.killReservoir();

                if (thStrat.IsAlive)
                {
                    Debug.Print("kill main thread");
                    thStrat.Abort();
                }


                m_ihm.retourPhase(Couleurs.bleu);


                //reservoir.m_rouletteIntelligente.m_ax12Roulette.setMode(AX12Mode.joint);
                //reservoir.m_rouletteIntelligente.m_ax12Roulette.

                /*  var thBase = new Thread(() =>
                 * {
                 * });
                 * thBase.Start();
                 * var thReservoir = new Thread(() =>
                 * {
                 * });
                 * thReservoir.Start();
                 */
            }, null, (int)(tempsImparti * 1000), -1);
        }