public override void WriteMetadata(ILogger writer, CancellationToken cancelletionToken = default(CancellationToken)) { base.WriteMetadata(writer); String subFolder = this.project.Folder + "\\" + this.SubFolder; if (Directory.Exists(subFolder) == false) { writer.WriteLineInfo("!!! Folder does not exist! Data stream is missing!"); writer.WriteLineWarning(this.Name + ": Folder does not exist! Data stream is missing!"); return; } // MARKERTIME logs string[] files2 = Directory.GetFiles(project.Folder + "\\" + this.SubFolder, "*.txt"); if (files2.Count() > 0) { MarkerEvents.Clear(); foreach (string fpath in files2) { using (StreamReader reader = File.OpenText(fpath)) { string line = ""; int line_num = 1; while ((line = reader.ReadLine()) != null) { cancelletionToken.ThrowIfCancellationRequested(); String[] linesp = line.Split(','); if (linesp.Count() < 6) { writer.WriteLineInfo("\tMarker TXT file is invalid : " + fpath + " line: " + line_num); writer.WriteLineWarning(this.Name + ":Marker TXT file is invalid: " + fpath + " line: " + line_num); continue; } String tss = linesp[5]; double tow; if (Double.TryParse(tss, out tow) == false) { writer.WriteLineInfo("\tMarker TXT file is invalid : " + fpath + " line: " + line_num); writer.WriteLineWarning(this.Name + ":Marker TXT file is invalid: " + fpath + " line: " + line_num); break; } //if (Convert.ToDouble(linesp[4]) < 0.00015) continue; double days = Math.Floor(tow / 3600.00 / 24.0); TimeSpan tod = TimeSpan.FromSeconds(tow - days * 24.0 * 3600.0); DateTime ts = this.StartTime.Date + tod; EvenMarkerDataLine evnt = new EvenMarkerDataLine(ts, TimeType.GPS); if (linesp[2] == "EventA") { evnt.Port = EvenMarkerDataLine.MarkerEventPort.EventA; } else if (linesp[2] == "EventB") { evnt.Port = EvenMarkerDataLine.MarkerEventPort.EventB; } else { evnt.Port = EvenMarkerDataLine.MarkerEventPort.Unknown; } MarkerEvents.Add(evnt); line_num++; } } } //writer.WriteLineInfo("\t Length of observ. : " + (new TimeSpan(endTime.Ticks - startTime.Ticks)).ToString(@"hh\:mm\:ss")); writer.WriteLineInfo("\t Number of #MARKTIMEA events : " + MarkerEvents.Count()); writer.WriteLineInfo("\t First event time : " + MarkerEvents.Min(m => m.TimeStamp).ToString("yyyy-MM-dd HH:mm:ss")); writer.WriteLineInfo("\t Last event time : " + MarkerEvents.Max(m => m.TimeStamp).ToString("yyyy-MM-dd HH:mm:ss")); // check event consistency for (int i = 1; i < this.MarkerEvents.Count(); i++) { TimeSpan dt = this.MarkerEvents[i].TimeStamp - this.MarkerEvents[i - 1].TimeStamp; if (dt.TotalSeconds > 10) { writer.WriteLineWarning("-- Event time jump in " + this.ShortName + " between " + this.MarkerEvents[i - 1].TimeStamp.ToString("HH:mm:ss") + " and " + this.MarkerEvents[i].TimeStamp.ToString("HH:mm:ss") + " dt =" + dt.TotalSeconds); } } this.OrderDataLines(); } else { writer.WriteLineInfo("\tNo marker TXT file!"); writer.WriteLineWarning(this.Name + ":No marker TXT file!"); } }
public void SetAnchorEvent(MarkerEvents anchorEvent) { this._markerEvent = anchorEvent; }