private void GraphUpdate(EventArgs e) { if (_lastGraphUpdate != null && DateTime.Now - _lastGraphUpdate < TimeSpan.FromSeconds(1)) { return; } var eventArgs = (SerialPortEventArgs)e; var moment = _model.DetermineMoment(eventArgs.Left, eventArgs.Right); var t = (DateTime.Now - _t0).TotalSeconds; MomentValues.Add(new MeasureModel(t, moment)); if (MomentValues.Count > 100) { MomentValues.RemoveAt(0); } _model.Training.GenerateTargetAt(t + 50.0, out double target, out double minTarget, out double maxTarget); TargetValues.Add(new MeasureModel(t + 50.0, target)); UpperTargetValues.Add(new MeasureModel(t + 50.0, maxTarget)); LowerTargetValues.Add(new MeasureModel(t + 50.0, minTarget)); if (UpperTargetValues.Count > 100) { TargetValues.RemoveAt(0); LowerTargetValues.RemoveAt(0); UpperTargetValues.RemoveAt(0); } UpdateAxisLimits(t); _lastGraphUpdate = DateTime.Now; }