Exemplo n.º 1
0
        public void loop()
        {
            while (!Program.Terminated)
            {
                if (q.Count == 0)
                {
                    Console.WriteLine("fim do agendamento");
                    break;
                }

                Business.Agendamento nextAgendamento = q.Dequeue();
                int   nexHour  = nextAgendamento.horaDoDia;
                float abertura = nextAgendamento.value;

                int horaAgora = -1;

                Console.WriteLine("///////////////////////continue agora vale {0}", CONTINUE);

                while ((!Program.Terminated) && (horaAgora != nexHour))
                {
                    horaAgora = Natureza.Tempo.Instance.HoraDoDia();
                    Natureza.Tempo.Instance.inserePequenoDelay();
                }

                //se saiu do loop eh pq ta na hora de fazer o negocio
                setAbertura(abertura);
            }
        }
Exemplo n.º 2
0
        private void configurarSistemaCortes()
        {
            /*
             *
             * se ha um corte agendado para amanha, o sistema agenda o corte
             *
             */

            return;

            DateTime tomorrow = Natureza.Tempo.Instance.Now.AddDays(1);

            this.agendamentosCorte.Sort();
            foreach (AgendamentoCorte agendamentoCorte in this.agendamentosCorte)
            {
                //TO-DO verificar se                 agendamentoCorte.getDate() é para amanha
                // se for, entao criamos um novo agendamento
                Business.Agendamento a = new Business.Agendamento(agendamentoCorte.getDate().Hour, agendamentoCorte.getAltura());
                sistemaCorte.agendarCorte(a);

                //remove esse agendamento da lista

                //quando nao for mais amanha, ai break.
            }
        }
Exemplo n.º 3
0
        private Queue <Business.Agendamento> createCronogramaHorasSol(int horaInicial)
        {
            if (horaInicial > 24 || horaInicial < 0)
            {
                throw new Exception("hora invalida");
            }

            DateTime today = Natureza.Tempo.Instance.Now;

            Sistema_de_Previsão_do_Tempo.Previsao prev = new Sistema_de_Previsão_do_Tempo.Previsao(today);
            Queue <Business.Agendamento>          q    = new Queue <Business.Agendamento>();

            if (prev.iraChover())
            {
                for (int i = horaInicial; i < 24; i++)
                {
                    float p = 30; //como vai chover matenho a abertura em 30% para nao molhar demais a grama
                    Business.Agendamento a = new Business.Agendamento(i, p);
                    q.Enqueue(a);
                }
            }
            else
            {
                for (int i = horaInicial; i < 24; i++)
                {
                    float p;
                    //50% eh o padrao, mas entre as 14 e as 18, abro em 100 pra pegar sol%
                    if (i >= 14 && i <= 18)
                    {
                        p = 100;
                    }
                    else
                    {
                        p = 50;
                    }
                    Business.Agendamento a = new Business.Agendamento(i, p);
                    q.Enqueue(a);
                }
            }
            return(q);
        }
Exemplo n.º 4
0
        /*
         * cronograma de horas de sol. precisa saber se vai chover
         *
         */


        private Queue <Business.Agendamento> createCronogramaHorasSol()
        {
            Queue <Business.Agendamento> q = new Queue <Business.Agendamento>();

            Previsao prev = new Previsao(Natureza.Tempo.Instance.Now);

            if (prev.iraChover())
            {
                for (int i = 0; i < 24; i++)
                {
                    float p = 30;  //como vai chover matenho a abertura em 30% para nao molhar demais a grama
                    Business.Agendamento a = new Business.Agendamento(i, p);
                    q.Enqueue(a);
                }
            }
            else
            {
                for (int i = 0; i < 24; i++)
                {
                    //fake total
                    float p;
                    //50% eh o padrao, mas entre as 14 e as 18, abro em 100 pra pegar sol%
                    if (i >= 14 && i <= 18)
                    {
                        p = 100;
                    }
                    else
                    {
                        p = 50;
                    }
                    Business.Agendamento a = new Business.Agendamento(i, p);
                    q.Enqueue(a);
                }
            }
            return(q);
        }
Exemplo n.º 5
0
 public TimeMonitor(Action cortarGrama, Action <float> setarAlturaGrama, Business.Agendamento agendamento)
 {
     this.cortarGrama      = cortarGrama;
     this.setarAlturaGrama = setarAlturaGrama;
     this.agendamento      = agendamento;
 }