public bool PopulateInfo() { try { string dslogPath = FilePath + "\\" + Name + ".dslog"; DSLOGReader reader = new DSLOGReader(FilePath + "\\" + Name + ".dslog"); reader.OnlyReadMetaData(); if (reader.Version != 4 || reader.StartingPDPType == PDPType.Unknown) { Useless = true; return(false); } SetSeconds(reader.StartingPDPType); if (!SetTime(reader) || !SetFMS() || !SetUseless()) { Useless = true; return(false); } } catch (Exception ex) { Useless = true; return(false); } Live = CheckLive(); return(true); }
public void TestReadLogRev() { var reader = new DSLOGReader("TestFiles\\2022_02_27 15_17_59 Sun.dslog"); reader.Read(); Assert.IsTrue(reader.Version == 4); }
private bool SetUseless() { string dslogPath = FilePath + "\\" + Name + ".dslog"; if (File.Exists(dslogPath)) { if (Seconds <= 20 && !IsFMSMatch) { Useless = true; return(true); } if (IsFMSMatch) { DSLOGReader reader = new DSLOGReader(dslogPath); reader.Read(); foreach (var entry in reader.Entries) { if (entry.RobotAuto || entry.RobotTele || entry.DSAuto || entry.DSTele) { Useless = false; return(true); } } Useless = true; } return(true); } return(false); }
public void TestReadLog() { var reader = new DSLOGReader("TestFiles\\2022_02_25 21_25_39 Fri.dslog"); reader.Read(); Assert.IsTrue(reader.Version == 4); }
private void backgroundWorkerReadMatches_DoWork(object sender, DoWorkEventArgs e) { int num = 0; double matchCount = Matches.Count; foreach (var match in Matches) { DSLOGReader reader = new DSLOGReader($"{FileView.GetPath()}\\{match.Name}.dslog"); try { reader.Read(); } catch (Exception ex) { MatchReaders.Add(null); continue; } MatchReaders.Add(reader); backgroundWorkerReadMatches.ReportProgress((int)((((double)++num) / Matches.Count) * 100.0)); if (backgroundWorkerReadMatches.CancellationPending) { e.Cancel = true; return; } } }
public void TestReadMetadata() { var reader = new DSLOGReader("TestFiles\\2022_02_25 21_25_39 Fri.dslog"); reader.OnlyReadMetaData(); Assert.IsTrue(reader.Version == 4); var expectedTime = TimeZoneInfo.ConvertTimeFromUtc(new DateTime(2022, 02, 26, 2, 25, 39, 855), TimeZoneInfo.Local); Assert.AreEqual(reader.StartTime, expectedTime); }
public void TestReadMultiPdpType() { var reader = new DSLOGReader("TestFiles\\2022_03_19 12_55_56 Sat.dslog"); reader.Read(); Assert.IsTrue(reader.Version == 4); foreach (var entry in reader.Entries) { Assert.IsFalse(entry.Watchdog); Assert.IsFalse(entry.Brownout); } }
private bool SetTime(DSLOGReader reader) { DateTime sTime; if (!DateTime.TryParseExact(Name, "yyyy_MM_dd HH_mm_ss ddd", CultureInfo.InvariantCulture, DateTimeStyles.None, out sTime)) { StartTime = reader.StartTime; } else { StartTime = sTime; } return(true); }
private void backgroundWorkerExport_DoWork(object sender, DoWorkEventArgs e) { var tempDict = new Dictionary <string, DSLOGFileEntry>(); Files.ForEach(en => tempDict.Add(en.Name, en)); TotalExported = 0; Parallel.ForEach(CheckedFiles, (file, state) => { DSLOGFileEntry entry; if (tempDict.TryGetValue(file, out entry)) { DateTime matchTime = DateTime.Now; if (checkBoxLogs.Checked) { string dsFile = $"{entry.FilePath}\\{entry.Name}.dslog"; if (File.Exists(dsFile)) { DSLOGReader reader = new DSLOGReader(dsFile); try { reader.Read(); } catch (Exception ex) { return; } if (entry.IsFMSMatch) { string eventName = entry.EventName; if (!UseFilledInEvents && entry.FMSFilledIn) { eventName = ""; } string data = Util.GetTableFromLogEntries(reader.Entries, Series, IdToPDPGroup, checkBoxMatchTime.Checked && reader.Entries.TryFindMatchStart(out matchTime), matchTime, ","); var dir = $"{FilePath}\\{eventName}{entry.StartTime.Year}"; if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } File.WriteAllText($"{dir}\\{entry.Name} {entry.MatchType}_{entry.FMSMatchNum}.csv", data); } else { string data = Util.GetTableFromLogEntries(reader.Entries, Series, IdToPDPGroup, false, matchTime, ","); var dir = $"{FilePath}\\{entry.StartTime.Year}"; if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } File.WriteAllText($"{dir}\\{entry.Name}.csv", data); } } } if (checkBoxEvents.Checked) { string dsFile = $"{entry.FilePath}\\{entry.Name}.dsevents"; if (File.Exists(dsFile)) { DSEVENTSReader reader = new DSEVENTSReader(dsFile); try { reader.Read(); } catch (Exception ex) { return; } if (entry.IsFMSMatch) { string eventName = entry.EventName; if (!UseFilledInEvents && entry.FMSFilledIn) { eventName = ""; } string data = Util.GetTableFromEvents(reader.Entries, checkBoxMatchTime.Checked && checkBoxLogs.Checked, matchTime, ","); var dir = $"{FilePath}\\{eventName}{entry.StartTime.Year}"; if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } File.WriteAllText($"{dir}\\{entry.Name} {entry.MatchType}_{entry.FMSMatchNum}_Events.csv", data); } else { string data = Util.GetTableFromEvents(reader.Entries, false, matchTime, ","); var dir = $"{FilePath}\\{entry.StartTime.Year}"; if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } File.WriteAllText($"{dir}\\{entry.Name}_Events.csv", data); } } } } if (backgroundWorkerExport.CancellationPending) { e.Cancel = true; state.Break(); } int precent = (int)((double)++TotalExported / CheckedFiles.Count * 100.0); backgroundWorkerExport.ReportProgress(precent); }); }
public void LoadLog(DSLOGFileEntry logInfo) { if (logInfo == null) { return; } WaitForLoadingPlotting(); LoadingLog = true; LogInfo = logInfo; string dslogFile = $"{logInfo.FilePath}\\{logInfo.Name}.dslog"; chart.Invoke((Action)(() => { StopStreaming(); LogStreamer = null; InitChart(); LogEntries = null; ClearInfoLabel(); ProbeView.SetProbe(null); })); if (File.Exists(dslogFile)) { DSLOGReader reader = null; LastEntry = 0; if (logInfo.Live) { LogStreamer = new DSLOGStreamer(dslogFile); reader = LogStreamer; LogStreamer.Stream(); } else { reader = new DSLOGReader(dslogFile); try { reader.Read(); } catch (Exception ex) { MessageBox.Show("Log Corrupted!"); LoadingLog = false; return; } } if (reader.Version != 4) { LoadingLog = false; return; } chart.Invoke((Action)(() => { ChartArea area = chart.ChartAreas[0]; StartTime = reader.StartTime; EndTime = reader.Entries.Last().Time; LogEntries = reader.Entries; area.AxisX.Minimum = StartTime.ToOADate(); area.AxisX.Maximum = EndTime.ToOADate(); area.CursorX.IntervalOffset = reader.StartTime.Millisecond % 20; labelFileInfo.Text = $"{logInfo.Name}.dslog"; if (logInfo.IsFMSMatch) { labelFileInfo.Text = labelFileInfo.Text + $" ({logInfo.EventName} {logInfo.MatchType.ToString()} {logInfo.FMSMatchNum})"; labelFileInfo.BackColor = logInfo.GetMatchTypeColor(); //buttonAnalysis.Enabled = true; SetUpMatchTime(); } else { CanUseMatchTime = false; ChangeUseMatchTime(false); } })); PlotLog(); PointCount = LogEntries.Count; chart.Invoke((Action)(() => { SetEnergy(); chart.ChartAreas[0].AxisX.ScaleView.ZoomReset(); chart.ChartAreas[0].AxisY2.ScaleView.ZoomReset(); this.chart.ChartAreas[0].CursorY.IsUserSelectionEnabled = false; })); LoadingLog = false; labelFileInfo.Invoke((Action)(() => { if (logInfo.Live) { labelFileInfo.BackColor = Color.Lime; BackColor = Color.Lime; timerStream.Start(); } })); SetAutoScrollColor(); } else { LoadingLog = false; MessageBox.Show("Log Corrupted!"); } }