aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/ProcessReader.cs
blob: ef5ef91f81bde79f7826b6163e0c706e9fdfa5a6 (plain)
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;
        }
    }
}