public static void CollectingMeasurements() { int iterationStart = ConnectHelper.ConnectUniversalClock().GetTimeInMinutes(); int dayStart = ConnectHelper.ConnectUniversalClock().GetDay(); while (true) { int currentMoment = ConnectHelper.ConnectUniversalClock().GetTimeInMinutes(); int currentDay = ConnectHelper.ConnectUniversalClock().GetDay(); if (currentDay > dayStart || currentMoment - iterationStart >= 1) { iterationStart = currentMoment; dayStart = currentDay; } else { continue; } IPowerPrice powerPriceProxy = ConnectHelper.ConnectUtility(); IUniversalClockService universalClockProxy = ConnectHelper.ConnectUniversalClock(); Measurement currentMeasurement = new Measurement { BatteryConsumption = 0, BatteryProduction = 0, ConsumersConsumption = 0, SolarPanelProduction = 0, }; Dictionary <string, Battery> batteries = DBManager.S_Instance.GetAllBatteries(); Dictionary <string, ElectricVehicleCharger> evcs = DBManager.S_Instance.GetAllElectricVehicleChargers(); Dictionary <string, SolarPanel> sps = DBManager.S_Instance.GetAllSolarPanels(); Dictionary <string, Consumer> consumers = DBManager.S_Instance.GetAllConsumers(); Measurement currentConsumptionMeasurement = CalculateCurrentConsumption(batteries, evcs, consumers); currentMeasurement.BatteryConsumption = currentConsumptionMeasurement.BatteryConsumption; currentMeasurement.ConsumersConsumption = currentConsumptionMeasurement.ConsumersConsumption; Measurement currentProductionMeasurement = CalculateCurrentProduction(batteries, evcs, sps); currentMeasurement.SolarPanelProduction = currentProductionMeasurement.SolarPanelProduction; currentMeasurement.BatteryProduction = currentMeasurement.BatteryProduction; currentMeasurement.PowerPrice = powerPriceProxy.GetPowerPrice(universalClockProxy.GetTimeInHours()); currentMeasurement.Day = universalClockProxy.GetDay(); currentMeasurement.HourOfTheDay = universalClockProxy.GetTimeInHours(); DBManager.S_Instance.AddMeasurement(currentMeasurement); //Thread.Sleep(Constants.MILISECONDS_IN_MINUTE); } }
private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e) { while (true) { IUniversalClockService universalClockProxy = ConnectHelper.ConnectUniversalClock(); TotalMinutes = universalClockProxy.GetTimeInMinutes(); TimeSpan ts = TimeSpan.FromMinutes(TotalMinutes); IPowerPrice utilityProxy = ConnectHelper.ConnectUtility(); Dispatcher.BeginInvoke(DispatcherPriority.Render, new Action(() => { CurrentTimeProperty = String.Format($"{ts.Hours} : {ts.Minutes}"); CurrentPriceProperty = String.Format($"Power price: {utilityProxy.GetPowerPrice(universalClockProxy.GetTimeInHours())} [$/kWh]"); Int32 day = universalClockProxy.GetDay(); if (day - 1 != 0) { String newDayString = $"{day - 1}. dan od startovanja aplikacije"; if (!ListOfDays.Contains(newDayString)) { ListOfDays.Add(newDayString); } } else { String newDayString = $"Dan u kojem je startovana aplikacija"; if (!ListOfDays.Contains(newDayString)) { ListOfDays.Add(newDayString); } } })); Thread.Sleep(Constants.MILISECONDS_IN_SECOND); } }