コード例 #1
0
        private void SendLevels()
        {
            List <Diga> dighe = Diga.ElencoDighe();

            foreach (Diga diga in dighe)
            {
                router.SendMessage(diga.IDDiga, diga.LivelloArancio + "," + diga.LivelloRosso);
                gridDighe.Rows.Add(diga.IDDiga, diga.Nome, diga.Citta, diga.LivelloArancio, diga.LivelloRosso);
            }
        }
コード例 #2
0
        private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            List <string> messages = router.ReadMessages().Split('\n').ToList();

            List <Message> messaggiLetti = new List <Message>();

            messages.ForEach(new Action <string>((line) =>
            {
                Message message = Message.Parse(line);

                messaggiLetti.Add(message);
            }));

            router.DeleteAll(messaggiLetti);

            foreach (Message message in messaggiLetti)
            {
                Misurazione misurazione = new Misurazione(message.Number, Convert.ToInt32(message.Text), message.Date);
                Diga        diga        = new Diga(message.Number);
                diga.LoadData();
                misurazione.Insert();
                gridMisurazioni.Rows.Add(diga.Nome, misurazione.misurazione, misurazione.Data);
                if (misurazione.misurazione > diga.LivelloArancio || misurazione.misurazione > diga.LivelloRosso)
                {
                    Allarme allarme = new Allarme(misurazione.IDMisurazione, misurazione.misurazione > diga.LivelloRosso);
                    allarme.Insert();
                    gridAllarmi.Rows.Add(diga.Nome, misurazione.misurazione, misurazione.Data, misurazione.misurazione > diga.LivelloRosso);
                    lastAlert = DateTime.Now;
                    if (misurazione.misurazione > diga.LivelloRosso) // IF allarme rosso
                    {
                        ((System.Timers.Timer)sender).Interval = 10 * 60 * 1000;
                    }
                    else   // SE allarme arancione
                    {
                        ((System.Timers.Timer)sender).Interval = 15 * 60 * 1000;
                    }
                }
                if (lastAlert != null && (DateTime.Now - lastAlert).TotalMinutes > 45) // Se sono passati 45 minuti dall'ultimo allarme
                {
                    ((System.Timers.Timer)sender).Interval = 30 * 60 * 1000;
                }
            }

            //if ((lastRead - DateTime.Now).TotalMinutes > 60)
            //{
            //    // BOH
            //}
        }
コード例 #3
0
        public static List <Diga> ElencoDighe()
        {
            List <Diga>   dighe      = new List <Diga>();
            SqlConnection connection = Database.GetConnection();
            SqlCommand    command    = connection.CreateCommand();

            command.CommandText = "SELECT * FROM Dighe";
            using (SqlDataReader reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    Diga diga = new Diga(reader[0].ToString());
                    diga.LivelloArancio = Convert.ToDouble(reader["LivelloArancio"]);
                    diga.LivelloRosso   = Convert.ToDouble(reader["LivelloRosso"]);
                    dighe.Add(diga);
                }
            }
            return(dighe);
        }