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 { public List ReadScvFile(String filePath, List annotations) { List samples = new List(); try { List data = CsvFile.Read(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 GetScvColumns(String filePath) { try { return CsvFile.GetColumns(new CsvSource(filePath)).ToList(); } catch (Exception ex) { Debug.Write("Exception in ProcessReader ReadScvFile" + ex.Message); return null; } } public List GetTitles(String filePath) { List columns = GetScvColumns(filePath); string xAxistitle = "Time [sec]"; string yAxistitle = columns!= null && columns.Count > 1 ? columns[1] : "Values"; return new List() { xAxistitle, yAxistitle }; } public bool PrintResultsToPDFFile() { return false; } } }