|
|
|
@ -10,6 +10,7 @@ using System.Threading.Tasks; |
|
|
|
|
using System.Timers; |
|
|
|
|
using System.Windows; |
|
|
|
|
using OxyPlot.Axes; |
|
|
|
|
using GettingStarted.Filter; |
|
|
|
|
|
|
|
|
|
namespace GettingStarted.ViewModels |
|
|
|
|
{ |
|
|
|
@ -24,14 +25,22 @@ namespace GettingStarted.ViewModels |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[ObservableProperty] |
|
|
|
|
private double _cutOffSecond; |
|
|
|
|
private LineSeries _lpfSeries; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[ObservableProperty] |
|
|
|
|
private double _cutOffSecond; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private IFilter _filter; |
|
|
|
|
public MainViewModel3() |
|
|
|
|
{ |
|
|
|
|
MyModel = new PlotModel() { Title = "Getting Started with RT Plot", PlotMargins = new OxyThickness(50, 10, 50, 50) }; |
|
|
|
|
LineSeries = new LineSeries() { Title = "Dynamic Data" }; |
|
|
|
|
LpfSeries = new LineSeries() { Title = "Filtered" }; |
|
|
|
|
|
|
|
|
|
_filter = new HighPassFilter(0.5); |
|
|
|
|
|
|
|
|
|
DateTimeAxis timeAxis = new DateTimeAxis() |
|
|
|
|
{ |
|
|
|
@ -53,6 +62,7 @@ namespace GettingStarted.ViewModels |
|
|
|
|
MyModel.Axes.Add(linearAxis); |
|
|
|
|
|
|
|
|
|
MyModel.Series.Add(LineSeries); |
|
|
|
|
MyModel.Series.Add(LpfSeries); |
|
|
|
|
|
|
|
|
|
CutOffSecond = 10d; |
|
|
|
|
|
|
|
|
@ -72,11 +82,13 @@ namespace GettingStarted.ViewModels |
|
|
|
|
DateTime now = DateTime.Now; |
|
|
|
|
|
|
|
|
|
double noise = (_rand.NextDouble() - 0.5) * _noiseLevel; |
|
|
|
|
//LineSeries.Points.Add(new DataPoint(_lastX, Math.Sin(_lastX * 0.1) + noise)); |
|
|
|
|
LineSeries.Points.Add(new DataPoint(DateTimeAxis.ToDouble(DateTime.Now), Math.Sin(_lastX * 0.1) + noise)); |
|
|
|
|
double value = Math.Sin(_lastX * 0.1) + noise; |
|
|
|
|
LineSeries.Points.Add(new DataPoint(DateTimeAxis.ToDouble(DateTime.Now), value)); |
|
|
|
|
LpfSeries.Points.Add(new DataPoint(DateTimeAxis.ToDouble(DateTime.Now), _filter.Filter(value))); |
|
|
|
|
|
|
|
|
|
DateTime cutOff = now.AddSeconds(-1 * CutOffSecond); |
|
|
|
|
LineSeries.Points.RemoveAll(d => DateTimeAxis.ToDateTime(d.X) < cutOff); |
|
|
|
|
LpfSeries.Points.RemoveAll(d => DateTimeAxis.ToDateTime(d.X) < cutOff); |
|
|
|
|
|
|
|
|
|
if (MyModel.Axes[0] is DateTimeAxis timeAxis) |
|
|
|
|
{ |
|
|
|
|