diff options
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.cs | 116 |
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; + } + } +} |
