aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/ProcessReader.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/ProcessReader.cs')
-rw-r--r--Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/ProcessReader.cs116
1 files changed, 116 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/ProcessReader.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/ProcessReader.cs
new file mode 100644
index 000000000..b2e6f0388
--- /dev/null
+++ b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/ProcessReader.cs
@@ -0,0 +1,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 = Settings.GetValueByName(AnalyzerSettingsEnum.TimeInterval);
+ if(delta == 0)
+ return samples;
+
+ int endPoint = (int)(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 = 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 = 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;
+ }
+ }
+}