private void DataToUi(MeasurementData measurementData)
        {
            Tc1TextBox.Dispatcher.Invoke(() => Tc1TextBox.Text = measurementData.Tc1.ToString("F"));
            Tc2TextBox.Dispatcher.Invoke(() => Tc2TextBox.Text = measurementData.Tc2.ToString("F"));
            Tc3TextBox.Dispatcher.Invoke(() => Tc3TextBox.Text = measurementData.Tc3.ToString("F"));
            Tc4TextBox.Dispatcher.Invoke(() => Tc4TextBox.Text = measurementData.Tc4.ToString("F"));

            TempAirInTextBox.Dispatcher.Invoke(() => TempAirInTextBox.Text   = measurementData.TinA.ToString("F"));
            TempAirOutTextBox.Dispatcher.Invoke(() => TempAirOutTextBox.Text = measurementData.ToutA.ToString("F"));

            TempWaterInTextBox.Dispatcher.Invoke(() => TempWaterInTextBox.Text = measurementData.TinW.ToString("F"));
            TempWaterOutTextBox.Dispatcher.Invoke(() =>
                                                  TempWaterOutTextBox.Text = measurementData.ToutW.ToString("F"));

            WaterTankTemperatureTextBox.Dispatcher.Invoke(() =>
                                                          WaterTankTemperatureTextBox.Text = measurementData.Tvn.ToString("F"));

            WaterVolumeFlowTextBox.Dispatcher.Invoke(() =>
                                                     WaterVolumeFlowTextBox.Text = measurementData.v.ToString("F"));

            UTextBox.Dispatcher.Invoke(() => UTextBox.Text = measurementData.U.ToString("F"));
            ITextBox.Dispatcher.Invoke(() => ITextBox.Text = measurementData.I.ToString("F"));

            COPLoadedTextBox.Dispatcher.Invoke(() => COPLoadedTextBox.Text = measurementData.COP.ToString("F"));
        }
        private void CalculateEvaporator(MeasurementData measurementData)
        {
            var evaporatorVTextBox = EvaporatorVTextBox.Dispatcher.Invoke(() => EvaporatorVTextBox.Text);

            if (!double.TryParse(evaporatorVTextBox, out double evaporatorV))
            {
                _consoleManager.ConsoleWriteMessage("Cannot parse Evaporator volume flow.");
                return;
            }

            var evaporatorHumidity = EvaporatorHumidity.Dispatcher.Invoke(() => EvaporatorHumidity.Text);

            if (!double.TryParse(evaporatorHumidity, out double humidity))
            {
                _consoleManager.ConsoleWriteMessage("Cannot parse humidity.");
                return;
            }

            var heightOverSea = HeightOverSea.Dispatcher.Invoke(() => HeightOverSea.Text);

            if (!double.TryParse(heightOverSea, out double height))
            {
                _consoleManager.ConsoleWriteMessage("Cannot parse height over sea.");
                return;
            }

            _systemCalculation.EvaporatorData =
                new CoilData(null, measurementData.TinA - measurementData.ToutA, measurementData.TinA);
            double?result = _systemCalculation.CalculateEvaporator(humidity, height, evaporatorV);

            EvaporatorPTextBox.Dispatcher.Invoke(() => EvaporatorPTextBox.Text = result.ToString());
        }
        public double AddValue(double timeElapsed, MeasurementData measurementData)
        {
            _callCount += 1;

            double capacity = measurementData.U * measurementData.I;

            _energySum += (capacity / 1000);
            double average = _energySum / _callCount;

            // to kWh
            return(Math.Round(average * (timeElapsed / 3600), 6));
        }
        private void CalculateCOP(MeasurementData measurementData)
        {
            //Condenser
            // loaded volume flow is in cm3 so need to convert it to m3
            double condenserV = measurementData.v * Math.Pow(10, -6);

            _systemCalculation.CondenserData =
                new CoilData(condenserV, null, measurementData.TinW, measurementData.ToutW);

            // Electrical appliances
            _systemCalculation.CompressorData = new ElectricalApplianceData(measurementData.U, measurementData.I);

            if (!_systemCalculation.CalculateSystem().HasValue)
            {
                _consoleManager.ConsoleWriteMessage("COP not calculated.");
                COPCalculatedTextBox.Dispatcher.Invoke(() => COPCalculatedTextBox.Text = "0");
                return;
            }

            COPCalculatedTextBox.Dispatcher.Invoke(() =>
                                                   COPCalculatedTextBox.Text = SystemCalculation.GetSysCOP.ToString("F"));
        }