private void ThreadLoop() { points = new Calc_Points(); DateTime datahora_atual = DateTime.MinValue; bool started = false; while (true) { DadosMemory memory = Simulation.Memory.Get(); var Dados_A = Simulation.Input.Termostato_A(); var Dados_D = Simulation.Input.Termostato_D(); var Dados_E = Simulation.Input.Termostato_E(); var Dados_G = Simulation.Input.Termostato_G(); if (memory.dmDateTime.DataHora.Hour == 0 && memory.dmDateTime.DataHora.Minute == 0 && memory.dmDateTime.DataHora.Second > 0 && !started) { started = true; } else if (memory.dmDateTime.DataHora.Hour == 23 && memory.dmDateTime.DataHora.Minute == 59 && memory.dmDateTime.DataHora.Second > 0 && started) { started = false; break; } if (started == true) { if (memory.dmDateTime.DataHora >= datahora_atual.AddSeconds(86.4)) // 1000 pontos de dados colhidos 1 dia { datahora_atual = memory.dmDateTime.DataHora; points.points.Add(new DataSensors { TempA = Dados_A.TemperaturaReal, SetA = Dados_A.SetPointReal, TempD = Dados_D.TemperaturaReal, SetD = Dados_D.SetPointReal, TempE = Dados_E.TemperaturaReal, SetE = Dados_E.SetPointReal, TempG = Dados_G.TemperaturaReal, SetG = Dados_G.SetPointReal }); points.WattsTotal = memory.dmEnergia.gastoAtual; this.SetText(points.points.Count.ToString()); } } } points.Processa(); SetText($"\n Pontos: {points.points.Count} " + $"\n MEDIA: A: {points.media_comodo_A} | D: {points.media_comodo_D} | E: {points.media_comodo_E} | G: {points.media_comodo_G} " + $"\n Desvio Maior: A: {points.maiordesvio_comodo_A} | D: {points.maiordesvio_comodo_D} | E: {points.maiordesvio_comodo_E} | G: {points.maiordesvio_comodo_G} "); }
public void Dispose() { _last_dm = null; _dateTimeHouse = DateTime.MinValue; }
public DadosMemory Get(int milisegundosIntervalo = 100) { bool datacorrect = false; do { //update dos registros MemoryMap.Instance.Update(); //verificacao de validacao de dados vindos do simulador if (MemoryMap.Instance.UpdateElapsedTime == 0) { continue; } else { datacorrect = true; } //dados memory MemoryDateTime datahora = MemoryMap.Instance.GetDateTime(65, MemoryType.Memory); _dateTimeHouse = datahora.Value; if (_last_dm == null || _last_dm.dmDateTime.DataHora.AddMilliseconds(milisegundosIntervalo) <= DateTimeHouse) { MemoryFloat latitude = MemoryMap.Instance.GetFloat(130, MemoryType.Memory); MemoryFloat longitude = MemoryMap.Instance.GetFloat(131, MemoryType.Memory); MemoryFloat temperatura = MemoryMap.Instance.GetFloat(132, MemoryType.Memory); MemoryFloat humidade = MemoryMap.Instance.GetFloat(133, MemoryType.Memory); MemoryFloat tempmin = MemoryMap.Instance.GetFloat(134, MemoryType.Memory); MemoryFloat tempmax = MemoryMap.Instance.GetFloat(135, MemoryType.Memory); MemoryFloat dewpoint = MemoryMap.Instance.GetFloat(136, MemoryType.Memory); MemoryFloat windms = MemoryMap.Instance.GetFloat(137, MemoryType.Memory); MemoryFloat cloudiness = MemoryMap.Instance.GetFloat(138, MemoryType.Memory); MemoryFloat energiaatual = MemoryMap.Instance.GetFloat(141, MemoryType.Memory); MemoryFloat tempA = MemoryMap.Instance.GetFloat(150, MemoryType.Memory); MemoryFloat tempB = MemoryMap.Instance.GetFloat(151, MemoryType.Memory); MemoryFloat tempC = MemoryMap.Instance.GetFloat(152, MemoryType.Memory); MemoryFloat tempD = MemoryMap.Instance.GetFloat(153, MemoryType.Memory); MemoryFloat tempE = MemoryMap.Instance.GetFloat(154, MemoryType.Memory); MemoryFloat tempF = MemoryMap.Instance.GetFloat(155, MemoryType.Memory); MemoryFloat tempG = MemoryMap.Instance.GetFloat(156, MemoryType.Memory); MemoryFloat tempH = MemoryMap.Instance.GetFloat(157, MemoryType.Memory); MemoryFloat tempI = MemoryMap.Instance.GetFloat(158, MemoryType.Memory); MemoryFloat tempJ = MemoryMap.Instance.GetFloat(159, MemoryType.Memory); MemoryFloat tempK = MemoryMap.Instance.GetFloat(160, MemoryType.Memory); MemoryFloat tempL = MemoryMap.Instance.GetFloat(161, MemoryType.Memory); MemoryFloat tempM = MemoryMap.Instance.GetFloat(162, MemoryType.Memory); MemoryFloat tempN = MemoryMap.Instance.GetFloat(163, MemoryType.Memory); DadosMemoryDateTime m_datetime = FactoryDateTime.UpdateValueDateTime(datahora.Value); DadosMemoryClima m_clima = FactoryClima.UpdateValueClima(latitude.Value, longitude.Value, temperatura.Value, humidade.Value, tempmin.Value, tempmax.Value, dewpoint.Value, windms.Value, cloudiness.Value); DadosMemoryEnergia m_energia = FactoryEnergia.UpdateValueEnergia(energiaatual.Value); DadosMemoryTemperatura m_temperatura = FactoryTemperatura.UpdateValueTemperatura(tempA.Value, tempB.Value, tempC.Value, tempD.Value, tempE.Value, tempF.Value, tempG.Value, tempH.Value, tempI.Value, tempJ.Value, tempK.Value, tempL.Value, tempM.Value, tempN.Value); DadosMemory dm = new DadosMemory(m_datetime, m_clima, m_energia, m_temperatura); _last_dm = dm; return(dm); } }while (datacorrect == false); return(_last_dm); }