/// <summary> /// This function reads the .csv part of the data folder /// </summary> /// <param name="Data">A DataProvider object to store the ingested data in</param> /// <param name="Path">A path to the folder to the .csv file</param> /// <param name="Read">An object implementing the IRead interface</param> /// <param name="Main">A MainWindowViewModel object to toggle the buttons from</param> public async Task ReadCSV(DataProvider Data, string Path, IRead Read, MainWindowViewModel Main) { logger.Debug("Starting CSV ingestion."); try { Main.ButtonState(false); await Task.Run(() => { string[] lines = Read.ReadLinesCsv(Path); List <Tuple <float, float> > DataLsb = new List <Tuple <float, float> >(); foreach (string line in lines) { string[] split = line.Split(';'); if (split[0] == "Inf") { try { Data.RouteDate = Convert.ToDateTime(split[1]); } catch (Exception ex) { logger.Error(ex, "Couldn't convert to DateTime"); } Data.RouteName = split[2]; } if (split[0] == "Dat") { try { var tp = new Tuple <float, float, float>(float.Parse(split[1], CultureInfo.InvariantCulture), float.Parse(split[2], CultureInfo.InvariantCulture), float.Parse(split[3], CultureInfo.InvariantCulture)); Data.XAcceleration.Add(tp.Item1); Data.YAcceleration.Add(tp.Item2); Data.ZAcceleration.Add(tp.Item3); } catch (Exception ex) { logger.Error(ex, "Couldn't convert to touple"); } try { var tp = new Tuple <float, float, float>(float.Parse(split[4], CultureInfo.InvariantCulture), float.Parse(split[5], CultureInfo.InvariantCulture), float.Parse(split[6], CultureInfo.InvariantCulture)); Data.Roll.Add(tp.Item1); Data.Pitch.Add(tp.Item2); Data.Yaw.Add(tp.Item3); Data.Heading.Add(tp.Item3); } catch (Exception ex) { logger.Error(ex, "Couldn't convert to touple"); } try { Data.Height.Add(float.Parse(split[7], CultureInfo.InvariantCulture)); } catch (Exception ex) { logger.Error(ex, "Couldn't Convert to float"); } try { Data.Pressure.Add(float.Parse(split[8], CultureInfo.InvariantCulture)); } catch (Exception ex) { logger.Error(ex, "Couldn't Convert to float"); } } } Data.DataPointsAcceleration = Math.Min(Data.XAcceleration.Count, Data.YAcceleration.Count); Data.DataPointsAcceleration = Math.Min(Data.DataPointsAcceleration, Data.ZAcceleration.Count); }); Data.DataPointsAngle = Math.Min(Data.Roll.Count, Data.Pitch.Count); Data.DataPointsAngle = Math.Min(Data.DataPointsAngle, Data.Yaw.Count); } catch (Exception ex) { logger.Error(ex, "Error reading File"); } logger.Debug("CSV ingestion finished."); }