public MeasurementViewModel(Guid id, MeasurementSettings settings, IMeterReader reader) { MinorReadings = new ConcurrentQueue<Tuple<DateTime, ReadingData>>(); MajorReadings = new ConcurrentQueue<Tuple<DateTime, ReadingData>>(); BarMajorValues = new ObservableCollection<Tuple<DateTime, double>>(); BarMinorValues = new ObservableCollection<Tuple<DateTime, double>>(); LineValues = new ObservableCollection<Tuple<DateTime, double>>(); OctaveValues = new ObservableCollection<double>(); MinorSpan = TimeSpan.FromTicks(settings.MinorInterval.Ticks * 15); MajorSpan = TimeSpan.FromTicks(settings.MajorInterval.Ticks * 15); started = DateTime.Now; popOutWindows = new LinkedList<MetroWindow>(); this.engine = new AudioViewEngine(settings.MinorInterval, settings.MajorInterval, reader); this.settings = settings; this.engine.ConnectionStatusEvent += connected => { if(ConnectionStatus == connected) return; // No need Task.Run(() => { ConnectionStatus = connected; DispatcherHelper.CheckBeginInvokeOnUI(() => { OnPropertyChanged(nameof(IsDisconnected)); }); }); }; if (settings.IsLocal) { // Registering the TCP Server for remote connections tcpServer = new TCPServerListener(settings); this.engine.RegisterListener(tcpServer); // Register the data storange unit dataStorage = new DataStorageMeterListener(id, DateTime.Now, settings); this.engine.RegisterListener(dataStorage); } this.engine.RegisterListener(this); this.engine.EngineStartDelayedEvent += (waitTime) => { MinorClock = new AudioViewCountDownViewModel(false, settings.MinorInterval, settings.MinorDBLimit, settings.MinorClockMainItemId, settings.MinorClockSecondaryItemId); MajorClock = new AudioViewCountDownViewModel(true, settings.MajorInterval, settings.MajorDBLimit, settings.MajorClockMainItemId, settings.MajorClockSecondaryItemId); MinorClock.NextMinor(DateTime.Now + waitTime); MinorClock.NextMajor(DateTime.Now + waitTime); MajorClock.NextMinor(DateTime.Now + waitTime); MajorClock.NextMajor(DateTime.Now + waitTime); }; this.engine.EngineStartedEvent += () => { this.engine.RegisterListener(MinorClock); this.engine.RegisterListener(MajorClock); }; this.engine.Start(); Title = settings.ProjectName; }
private Task<bool> TestDevice() { return Task.Run(async () => { logger.Debug("Testing remote device {0}:{1}", RemoteIpAddress, RemotePort); var settings = await RemoteMeterReader.TestConenction(RemoteIpAddress, int.Parse(RemotePort)).ConfigureAwait(false); this.remoteSettings = settings; return settings != null; }); }