示例#1
0
        private Dictionary<GrandezaDE, AnalogicDataRegisterDE> BuscarAnalogicos(DateTime corrente)
        {
            Dictionary<GrandezaDE, AnalogicDataRegisterDE> ret = new Dictionary<GrandezaDE, AnalogicDataRegisterDE>();

            IntegratedDataRegisterReader reader = new IntegratedDataRegisterReader(corrente, _histFileName, _onlineFileName);

            List<GrandezaDE> listaGrandezas = reader.Grandezas
                //                .Where(g => (new List<string>() { "MW", "MVAR", "KV" }).Contains(g.MeasureUnit))
                .Where(g => (new List<string>() { "KV" }).Contains(g.MeasureUnit))
                .OrderBy(l => l.Name).ToList();

            List<AnalogicDataRegisterDE> listaAnalogicos = reader.GetValues(listaGrandezas.Select(l => l.Name).ToArray(), corrente).ToList();

            listaAnalogicos.ForEach(analogico => ret.Add(listaGrandezas.Find(g => g.Name == analogico.Name), analogico));

            return ret;
        }
示例#2
0
        private Dictionary<GrandezaDE, List<AnalogicDataRegisterDE>> GetAnalogics()
        {
            Dictionary<GrandezaDE, List<AnalogicDataRegisterDE>> ret = new Dictionary<GrandezaDE,
                List<AnalogicDataRegisterDE>>();

            // Para cada data (fora hora, minuto e segundo) o reader será refeito.
            //  Por questão de performance, não fará a cada intervalo.
            DateTime? currentReaderDatetime = null;
            IntegratedDataRegisterReader reader = null;
            List<GrandezaDE> listaGrandezas = null;

            // Fazer loop a cada intervalo a partir do início até o fim
            for (DateTime corrente = start; corrente < end; corrente = corrente.Add(interval))
            {
                // se o reader não estiver na mesma data q a data corrente, gera novo reader
                if (!currentReaderDatetime.HasValue || currentReaderDatetime.Value.Date != corrente.Date)
                {
                    reader = new IntegratedDataRegisterReader(corrente, _histFileName, _onlineFileName);
                    currentReaderDatetime = corrente.Date;
                    listaGrandezas = reader.Grandezas
                        .Where(g => MeasureUnits.Contains(g.MeasureUnit))
                        .OrderBy(l => l.Name).ToList();
                }

                Dictionary<GrandezaDE, AnalogicDataRegisterDE> analogicosCorrente =
                    GetAnalogic(corrente, reader, listaGrandezas);
                foreach (KeyValuePair<GrandezaDE, AnalogicDataRegisterDE> analogico in analogicosCorrente)
                {
                    GrandezaDE grandeza = analogico.Key;
                    if (!ret.ContainsKey(grandeza))
                        ret.Add(grandeza, new List<AnalogicDataRegisterDE>());
                    ret[grandeza].Add(analogico.Value);
                }
            }
            return ret;
        }
示例#3
0
        private Dictionary<GrandezaDE, AnalogicDataRegisterDE> GetAnalogic(DateTime corrente,
            IntegratedDataRegisterReader reader = null, List<GrandezaDE> listaGrandezas = null)
        {
            Dictionary<GrandezaDE, AnalogicDataRegisterDE> ret = new Dictionary<GrandezaDE, AnalogicDataRegisterDE>();

            if (reader == null)
            {
                reader = new IntegratedDataRegisterReader(corrente, _histFileName, _onlineFileName);
                listaGrandezas = reader.Grandezas
                        .Where(g => MeasureUnits.Contains(g.MeasureUnit))
                        .OrderBy(l => l.Name).ToList();
            }

            List<AnalogicDataRegisterDE> listaAnalogicos = reader
                .GetValues(listaGrandezas.Select(l => l.Name).ToArray(), corrente).ToList();
            listaAnalogicos
                .ForEach(analogico => ret.Add(listaGrandezas.Find(g => g.Name == analogico.Name), analogico));

            return ret;
        }
示例#4
0
        private Dictionary<GrandezaDE, List<AnalogicDataRegisterDE>> BuscarPorMedida(string[] medidas, DateTime inicio, DateTime fim, TimeSpan intervalo)
        {
            Dictionary<GrandezaDE, List<AnalogicDataRegisterDE>> ret = new Dictionary<GrandezaDE, List<AnalogicDataRegisterDE>>();

            // Fazer loop a cada intervalo a partir do início até o fim
            for (DateTime corrente = inicio; corrente < fim; corrente = corrente.Add(intervalo))
            {
                IntegratedDataRegisterReader reader = new IntegratedDataRegisterReader(corrente, _histFileName, _onlineFileName);
                foreach (string medida in medidas)
                {
                    GrandezaDE grandeza = reader.Grandezas.ToList().Find(g => g.Name.Trim() == medida.Trim());
                    if (grandeza != null)
                    {
                        if (!ret.ContainsKey(grandeza))
                            ret.Add(grandeza, new List<AnalogicDataRegisterDE>());
                        List<AnalogicDataRegisterDE> listaAnalogicos = reader.GetValues(new string[] { grandeza.Name }, corrente).ToList();
                        ret[grandeza].AddRange(listaAnalogicos);
                    }
                }
            }
            return ret;
        }
示例#5
0
        private void button1_Click(object sender, EventArgs e)
        {
            DateTime horario = new DateTime(2015, 10, 01);
            IntegratedDataRegisterReader reader = new IntegratedDataRegisterReader(horario, _histFileName, _onlineFileName);
            List<GrandezaDE> lista = reader.Grandezas
                .Where(g => (new List<string>() { "MW", "MVAR", "KV" }).Contains(g.MeasureUnit))
                .OrderBy(l => l.Name).ToList();

            List<string> unidades = reader.Grandezas.Select(g => g.MeasureUnit).Distinct().ToList();

            List<AnalogicDataRegisterDE> listaAnalogicos = reader.GetValues(lista.Select(l => l.Name).ToArray(),
                 horario)
                  .ToList();

            string calculosOutput = CalculosTeste(lista, listaAnalogicos);

            using (TextWriter f = File.CreateText(@"outputTeste.txt"))
            {
                f.WriteLine("Nome do arquivo: {0}", reader.FileName);
                f.WriteLine("Data: {0}", reader.LastUpdate);

                f.WriteLine("*******");
                f.WriteLine(calculosOutput);
                f.WriteLine("*******");

                foreach (var item in lista)
                {
                    AnalogicDataRegisterDE analogico = listaAnalogicos.FirstOrDefault(a => a.Name == item.Name);

                    if (analogico == null)
                        continue;

                    f.WriteLine("******************");
                    f.WriteLine(item);

                    f.WriteLine("-----");
                    f.WriteLine(analogico);
                }
            }
            this.Close();
        }