public DFItem(DFLog _parent, object[] _answer, int lineno) : this() { this.parent = _parent; this.lineno = lineno; this.raw = _answer; if (_answer == null) { this.raw = new object[0]; } else if (_answer.Length > 0) // check we have data { // check this is a gps message and we dont have the current gpsstarttime if (parent.gpsstarttime == DateTime.MinValue && msgtype.StartsWith("GPS")) { if (parent.logformat.ContainsKey(msgtype)) { var indextimems = _parent.FindMessageOffset(msgtype, "T"); var time = parent.GetTimeGPS(String.Join(",", items)); if (time != DateTime.MinValue) { parent.gpsstarttime = time; parent.lasttime = parent.gpsstarttime; indextimems = parent.FindMessageOffset(items[0], "T"); if (indextimems != -1) { try { parent.msoffset = int.Parse(items[indextimems]); } catch { parent.gpsstarttime = DateTime.MinValue; } } int indextimeus = parent.FindMessageOffset(items[0], "TimeUS"); if (indextimeus != -1) { try { parent.msoffset = long.Parse(items[indextimeus]) / 1000; } catch { parent.gpsstarttime = DateTime.MinValue; } } } } } } }
public DFLogBuffer(Stream instream) { dflog = new DFLog(this); for (int a = 0; a < messageindex.Length; a++) { messageindex[a] = new List <uint>(); messageindexline[a] = new List <uint>(); } if (instream.CanSeek) { basestream = instream; } else { Console.WriteLine("DFLogBuffer: not seekable - copying to memorystream"); basestream = new MemoryStream((int)instream.Length); instream.CopyTo(basestream); basestream.Position = 0; instream.Close(); } if (basestream.ReadByte() == BinaryLog.HEAD_BYTE1) { if (basestream.ReadByte() == BinaryLog.HEAD_BYTE2) { binary = true; } } Console.WriteLine("Binary: " + binary); // back to start basestream.Position = 0; DateTime start = DateTime.Now; setlinecount(); Console.WriteLine("DFLogBuffer-linecount: " + Count + " time(ms): " + (DateTime.Now - start).TotalMilliseconds); basestream.Position = 0; }
public DFItem(DFLog _parent, object[] _answer, int lineno) : this() { this.parent = _parent; this.lineno = lineno; this.raw = _answer; if (_answer.Length > 0) { msgtype = _answer[0].ToString(); items = _answer.Select((a) => { if (a.IsNumber()) { return(((IConvertible)a).ToString(CultureInfo.InvariantCulture)); } else { return(a.ToString()); } }).ToArray(); bool timeus = false; if (_parent.logformat.ContainsKey(msgtype)) { int indextimems = _parent.FindMessageOffset(msgtype, "TimeMS"); if (msgtype.StartsWith("GPS")) { indextimems = _parent.FindMessageOffset(msgtype, "T"); if (parent.gpsstarttime == DateTime.MinValue) { var time = parent.GetTimeGPS(String.Join(",", items)); if (time != DateTime.MinValue) { parent.gpsstarttime = time; _parent.lasttime = parent.gpsstarttime; indextimems = _parent.FindMessageOffset(items[0], "T"); if (indextimems != -1) { try { _parent.msoffset = int.Parse(items[indextimems]); } catch { _parent.gpsstarttime = DateTime.MinValue; } } int indextimeus = _parent.FindMessageOffset(items[0], "TimeUS"); if (indextimeus != -1) { try { _parent.msoffset = long.Parse(items[indextimeus]) / 1000; } catch { _parent.gpsstarttime = DateTime.MinValue; } } } } } if (indextimems == -1) { indextimems = _parent.FindMessageOffset(msgtype, "TimeUS"); timeus = true; } if (indextimems != -1) { long ntime = 0; if (long.TryParse(items[indextimems], out ntime)) { if (timeus) { ntime /= 1000; } timems = (int)ntime; if (_parent.gpsstarttime != DateTime.MinValue) { time = _parent.gpsstarttime.AddMilliseconds(timems - _parent.msoffset); _parent.lasttime = time; } } else { time = _parent.lasttime; } } else { time = _parent.lasttime; } } } }