private void SyncGpsTimes() { _race.Save(); if (_race.Boats.Count > 1) { DateTime dataStart = _race.Boats[0].GetSensorReadings()[0].datetime; long dataStartTicks = dataStart.Ticks; for (int i = 1; i < _race.Boats.Count; i++) { SkipperDataSet.SensorReadingsDataTable dt = _race.Boats[i].GetSensorReadings(); long difference = dt[0].datetime.Ticks - dataStartTicks; var query = from r in Persistance.Data.BoatFile.AsEnumerable() join f in Persistance.Data.SensorReadings.AsEnumerable() on r.sensorfile_id equals f.sensorfile_id where r.boat_id == _race.Boats[i].Id //&& (/*start==null ||*/ f.datetime >=start) //&& (/*end == null ||*/ f.datetime <= end) orderby f.datetime ascending select f; foreach (SkipperDataSet.SensorReadingsRow r in query) { r.BeginEdit(); r.datetime = r.datetime.Subtract(new TimeSpan(difference)); r.EndEdit(); } } } _race.Save(); }
private void fileLB_SelectedIndexChanged(object sender, EventArgs e) { if (fileLB.SelectedIndex >= 0) { SkipperDataSet.SensorReadingsDataTable srdt = ((SensorFile)fileLB.SelectedItem).SensorReadings; if (srdt.Rows.Count > 0) { DateTime start = ((SkipperDataSet.SensorReadingsRow)srdt.Rows[0]).datetime; DateTime end = ((SkipperDataSet.SensorReadingsRow)srdt.Rows[srdt.Rows.Count - 1]).datetime; fileInfoLBL.Text = start.ToShortTimeString() + " to " + end.ToShortTimeString(); removeFileBTN.Enabled = true; } else { fileInfoLBL.Text = "No Data from this file was imported"; removeFileBTN.Enabled = true; } } else { fileInfoLBL.Text = ""; removeFileBTN.Enabled = false; } }
private ReplayBoat(SkipperDataSet.BoatRow row) { LoadFromRow(row); _currentMarkIndex = new TimeLineStatistic<int>(new Raw<int>("Current Mark", new AmphibianSoftware.VisualSail.Data.Statistics.Calculator.Int32.Calculator(), 0, StatisticType.other, StatisticUnit.other, StatisticUnit.other, "", false)); _currentTackIndex = new TimeLineStatistic<int>(new Raw<int>("Current Tack", new AmphibianSoftware.VisualSail.Data.Statistics.Calculator.Int32.Calculator(), 1, StatisticType.other, StatisticUnit.other, StatisticUnit.other, "", false)); _tacks = new List<Tack>(); _boatDataRows = GetSensorReadings(); InitializeStatistics(); }
public SkipperDataSet.SensorReadingsDataTable GetSensorReadings(DateTime?start, DateTime?end) { SkipperDataSet.SensorReadingsDataTable dt = new SkipperDataSet.SensorReadingsDataTable(); List <SensorFile> files = new List <SensorFile>(); var query = from r in Persistance.Data.BoatFile.AsEnumerable() join f in Persistance.Data.SensorReadings.AsEnumerable() on r.sensorfile_id equals f.sensorfile_id where r.boat_id == _id && (start == null || f.datetime >= start) && (end == null || f.datetime <= end) orderby f.datetime ascending select f; foreach (SkipperDataSet.SensorReadingsRow r in query) { dt.ImportRow(r); } return(dt); }
private void LoadPaths(Race race) { DateTime start = race.UtcStart; DateTime end = race.UtcEnd; _paths = new List <List <ColoredCoordinatePoint> >(); foreach (Boat b in race.Boats) { List <ColoredCoordinatePoint> points = new List <ColoredCoordinatePoint>(); Color c = Color.FromArgb(b.Color); SkipperDataSet.SensorReadingsDataTable dt = b.GetSensorReadings(start, end); for (int i = 0; i < dt.Rows.Count; i++) { CoordinatePoint cp = new CoordinatePoint(new Coordinate(((SkipperDataSet.SensorReadingsRow)dt.Rows[i]).latitude), new Coordinate(((SkipperDataSet.SensorReadingsRow)dt.Rows[i]).longitude), ((SkipperDataSet.SensorReadingsRow)dt.Rows[i]).altitude); points.Add(new ColoredCoordinatePoint(cp, c)); } _paths.Add(points); } }
public SkipperDataSet.SensorReadingsDataTable GetSensorReadings(DateTime? start,DateTime? end) { SkipperDataSet.SensorReadingsDataTable dt = new SkipperDataSet.SensorReadingsDataTable(); List<SensorFile> files = new List<SensorFile>(); var query = from r in Persistance.Data.BoatFile.AsEnumerable() join f in Persistance.Data.SensorReadings.AsEnumerable() on r.sensorfile_id equals f.sensorfile_id where r.boat_id == _id && (start==null || f.datetime >=start) && (end == null || f.datetime <= end) orderby f.datetime ascending select f; foreach (SkipperDataSet.SensorReadingsRow r in query) { dt.ImportRow(r); } return dt; }