1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
using OxyPlot;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.CSV;
using Tango.DispenserAnalyzer.UI.Models;
using OxyPlot.Annotations;
using System.Windows.Media;
namespace Tango.DispenserAnalyzer.UI.Analysis
{
public class ProcessReader: IReader<ProcessSample>
{
public List<ProcessSample> ReadScvFile(String filePath, List<OxyPlot.Wpf.LineAnnotation> annotations)
{
List<ProcessSample> samples = new List<ProcessSample>();
try
{
List<ProcessCsvRow> data = CsvFile.Read<ProcessCsvRow>(new CsvSource(filePath)).ToList();
double index = 0;
double delta = 0;
if (data.Count > 2)
{
DateTime time1;
DateTime time2;
if (DateTime.TryParse(data[0].Time, out time1) && DateTime.TryParse(data[1].Time, out time2))
{
int m1 = time1.Millisecond;
int m2 = time2.Millisecond;
delta = (time2 - time1).Milliseconds / 100;
}
}
delta = (double)Settings.GetValueByName(AnalyzerSettingsEnum.TimeInterval);
if(delta == 0)
return samples;
int endPoint = (int)((double)Settings.GetValueByName(AnalyzerSettingsEnum.EndCalculation) / delta);
foreach (var item in data)
{
double dValue = 0;
if (double.TryParse(item.Value, out dValue))
{
DateTime time;
DateTime.TryParse(item.Time, out time);
int mil = time.Millisecond;
samples.Add(new ProcessSample()
{
Time = time,
Value = dValue,
TimeIntervalSec = index,
});
index += delta;
}
}
OxyPlot.Wpf.LineAnnotation _line1 = new OxyPlot.Wpf.LineAnnotation()
{
StrokeThickness = 1,
Color = Color.FromRgb(255, 5, 5),
Type = LineAnnotationType.Vertical,
Text = index.ToString(),
X = (double)Settings.GetValueByName(AnalyzerSettingsEnum.StartCalculation)
};
annotations.Add(_line1);
OxyPlot.Wpf.LineAnnotation _line2 = new OxyPlot.Wpf.LineAnnotation()
{
StrokeThickness = 1,
Color = Color.FromRgb(255, 5, 5),
Type = LineAnnotationType.Vertical,
Text = index.ToString(),
X = (double)Settings.GetValueByName(AnalyzerSettingsEnum.EndCalculation)
};
annotations.Add(_line2);
return samples;
}
catch (Exception ex)
{
Debug.Write("Exception in ProcessReader ReadScvFile" + ex.Message);
return samples;
}
}
public List<string> GetScvColumns(String filePath)
{
try
{
return CsvFile.GetColumns<ProcessCsvRow>(new CsvSource(filePath)).ToList();
}
catch (Exception ex)
{
Debug.Write("Exception in ProcessReader ReadScvFile" + ex.Message);
return null;
}
}
public List<string> GetTitles(String filePath)
{
List<string> columns = GetScvColumns(filePath);
string xAxistitle = "Time [sec]";
string yAxistitle = columns!= null && columns.Count > 1 ? columns[1] : "Values";
return new List<string>() { xAxistitle, yAxistitle };
}
public bool PrintResultsToPDFFile()
{
return false;
}
}
}
|