public DFItem GetDFItemFromLine(string line, int lineno) { //line = line.Replace(",", ","); //line = line.Replace(":", ":"); string[] items = line.Trim().Split(new char[] { ',', ':' }, StringSplitOptions.RemoveEmptyEntries); if (line.StartsWith("FMT")) { FMTLine(line); } else if (line.StartsWith("GPS")) { if (line.StartsWith("GPS") && gpsstarttime == DateTime.MinValue) { var time = GetTimeGPS(line); if (time != DateTime.MinValue) { gpsstarttime = time; lasttime = gpsstarttime; int indextimems = FindMessageOffset(items[0], "T"); if (indextimems != -1) { try { msoffset = int.Parse(items[indextimems]); } catch { gpsstarttime = DateTime.MinValue; } } int indextimeus = FindMessageOffset(items[0], "TimeUS"); if (indextimeus != -1) { try { msoffset = int.Parse(items[indextimeus]) / 1000; } catch { gpsstarttime = DateTime.MinValue; } } } } } else if (line.StartsWith("ERR")) { Array.Resize(ref items, items.Length + 2); try { int index = FindMessageOffset("ERR", "Subsys"); if (index == -1) { throw new ArgumentNullException(); } int index2 = FindMessageOffset("ERR", "ECode"); if (index2 == -1) { throw new ArgumentNullException(); } items[items.Length - 2] = "" + (DFLog.error_subsystem)int.Parse(items[index]); } catch { } } else if (line.StartsWith("EV")) { Array.Resize(ref items, items.Length + 1); try { int index = FindMessageOffset("EV", "Id"); if (index == -1) { throw new ArgumentNullException(); } items[items.Length - 1] = "" + (DFLog.events)int.Parse(items[index]); } catch { } } else if (line.StartsWith("MAG")) { } DFItem item = new DFItem(); try { item.lineno = lineno; if (items.Length > 0) { item.msgtype = items[0]; item.items = items; bool timeus = false; if (logformat.ContainsKey(item.msgtype)) { int indextimems = FindMessageOffset(item.msgtype, "TimeMS"); if (item.msgtype.StartsWith("GPS")) { indextimems = FindMessageOffset(item.msgtype, "T"); } if (indextimems == -1) { indextimems = FindMessageOffset(item.msgtype, "TimeUS"); timeus = true; } if (indextimems != -1) { var ntime = long.Parse(items[indextimems]); if (timeus) ntime /= 1000; item.timems = (int)ntime; if (gpsstarttime != DateTime.MinValue) { item.time = gpsstarttime.AddMilliseconds(item.timems - msoffset); lasttime = item.time; } } else { item.time = lasttime; } } } } catch { } return item; }
public static List<DFItem> ReadLog(Stream fn) { Clear(); List<DFItem> answer = new List<DFItem>(); // current gps time DateTime gpstime = DateTime.MinValue; // last time of message DateTime lasttime = DateTime.MinValue; // first valid gpstime DateTime gpsstarttime = DateTime.MinValue; int lineno = 0; int msoffset = 0; log.Info("loading log " + (GC.GetTotalMemory(false) / 1024.0)); using (StreamReader sr = new StreamReader(fn)) { while (!sr.EndOfStream) { try { string line = sr.ReadLine(); lineno++; line = line.Replace(",", ","); line = line.Replace(":", ":"); string[] items = line.Split(new char[] { ',', ':' }, StringSplitOptions.RemoveEmptyEntries); if (line.StartsWith("FMT")) { FMTLine(line); } else if (line.StartsWith("GPS")) { // if (gpsstarttime == DateTime.MinValue) { gpsstarttime = GetTimeGPS(line); lasttime = gpsstarttime; int indextimems = FindMessageOffset("GPS", "T"); if (indextimems != -1) { try { msoffset = int.Parse(items[indextimems]); } catch { } } } } else if (line.StartsWith("ERR")) { Array.Resize(ref items, items.Length + 2); try { int index = FindMessageOffset("ERR", "Subsys"); if (index == -1) { throw new ArgumentNullException(); } int index2 = FindMessageOffset("ERR", "ECode"); if (index2 == -1) { throw new ArgumentNullException(); } items[items.Length - 2] = ""+(DFLog.error_subsystem)int.Parse(items[index]); } catch { } } else if (line.StartsWith("EV")) { Array.Resize(ref items, items.Length + 1); try { int index = FindMessageOffset("EV", "Id"); if (index == -1) { throw new ArgumentNullException(); } items[items.Length - 1] = "" + (DFLog.events)int.Parse(items[index]); } catch { } } DFItem item = new DFItem(); try { item.lineno = lineno; if (items.Length > 0) { item.msgtype = items[0]; item.items = items; if (line.StartsWith("GPS")) { item.time = GetTimeGPS(line); } else { if (logformat.ContainsKey(item.msgtype)) { int indextimems = FindMessageOffset(item.msgtype, "TimeMS"); if (indextimems != -1) { item.timems = int.Parse(items[indextimems]); item.time = gpsstarttime.AddMilliseconds(item.timems - msoffset); lasttime = item.time; } else { item.time = lasttime; } } } } } catch { } answer.Add(item); } catch { } } } log.Info("loaded log " + (GC.GetTotalMemory(false) / 1024.0)); return answer; }
public static List<DFItem> ReadLog(Stream fn) { Clear(); List<DFItem> answer = new List<DFItem>(); // current gps time DateTime gpstime = DateTime.MinValue; // last time of message DateTime lasttime = DateTime.MinValue; // first valid gpstime DateTime gpsstarttime = DateTime.MinValue; int lineno = 0; int msoffset = 0; log.Info("loading log"); using (StreamReader sr = new StreamReader(fn)) { while (!sr.EndOfStream) { try { string line = sr.ReadLine(); lineno++; line = line.Replace(",", ","); line = line.Replace(":", ":"); string[] items = line.Split(new char[] { ',', ':' }, StringSplitOptions.RemoveEmptyEntries); if (line.StartsWith("FMT")) { FMTLine(line); } else if (line.StartsWith("GPS")) { // if (gpsstarttime == DateTime.MinValue) { gpsstarttime = GetTimeGPS(line); lasttime = gpsstarttime; int indextimems = FindInArray(logformat["GPS"].FieldNames, "T"); if (indextimems != -1) { try { msoffset = int.Parse(items[indextimems]); } catch { } } } } DFItem item = new DFItem(); try { item.lineno = lineno; if (items.Length > 0) { item.msgtype = items[0]; item.items = items; if (line.StartsWith("GPS")) { item.time = GetTimeGPS(line); } else { int indextimems = FindInArray(logformat[item.msgtype].FieldNames, "TimeMS"); if (indextimems != -1) { item.timems = int.Parse(items[indextimems]); item.time = gpsstarttime.AddMilliseconds(item.timems - msoffset); lasttime = item.time; } else { item.time = lasttime; } } } } catch { } answer.Add(item); } catch { } } } log.Info("loaded log"); return answer; }
public DFItem GetDFItemFromLine(string line, int lineno) { //line = line.Replace(",", ","); //line = line.Replace(":", ":"); string[] items = line.Trim().Split(new char[] { ',', ':' }, StringSplitOptions.RemoveEmptyEntries); if (line.StartsWith("FMT")) { FMTLine(line); } else if (line.StartsWith("GPS")) { if (line.StartsWith("GPS") && gpsstarttime == DateTime.MinValue) { var time = GetTimeGPS(line); if (time != DateTime.MinValue) { gpsstarttime = time; lasttime = gpsstarttime; int indextimems = FindMessageOffset(items[0], "T"); if (indextimems != -1) { try { msoffset = int.Parse(items[indextimems]); } catch { gpsstarttime = DateTime.MinValue; } } int indextimeus = FindMessageOffset(items[0], "TimeUS"); if (indextimeus != -1) { try { msoffset = int.Parse(items[indextimeus]) / 1000; } catch { gpsstarttime = DateTime.MinValue; } } } } } else if (line.StartsWith("ERR")) { Array.Resize(ref items, items.Length + 2); try { int index = FindMessageOffset("ERR", "Subsys"); if (index == -1) { throw new ArgumentNullException(); } int index2 = FindMessageOffset("ERR", "ECode"); if (index2 == -1) { throw new ArgumentNullException(); } items[items.Length - 2] = "" + (DFLog.error_subsystem) int.Parse(items[index]); } catch { } } else if (line.StartsWith("EV")) { Array.Resize(ref items, items.Length + 1); try { int index = FindMessageOffset("EV", "Id"); if (index == -1) { throw new ArgumentNullException(); } items[items.Length - 1] = "" + (DFLog.events) int.Parse(items[index]); } catch { } } else if (line.StartsWith("MAG")) { } DFItem item = new DFItem(); try { item.lineno = lineno; if (items.Length > 0) { item.msgtype = items[0]; item.items = items; bool timeus = false; if (logformat.ContainsKey(item.msgtype)) { int indextimems = FindMessageOffset(item.msgtype, "TimeMS"); if (item.msgtype.StartsWith("GPS")) { indextimems = FindMessageOffset(item.msgtype, "T"); } if (indextimems == -1) { indextimems = FindMessageOffset(item.msgtype, "TimeUS"); timeus = true; } if (indextimems != -1) { var ntime = long.Parse(items[indextimems]); if (timeus) { ntime /= 1000; } item.timems = (int)ntime; if (gpsstarttime != DateTime.MinValue) { item.time = gpsstarttime.AddMilliseconds(item.timems - msoffset); lasttime = item.time; } } else { item.time = lasttime; } } } } catch { } return(item); }
public static List <DFItem> ReadLog(Stream fn) { Clear(); List <DFItem> answer = new List <DFItem>(); // current gps time DateTime gpstime = DateTime.MinValue; // last time of message DateTime lasttime = DateTime.MinValue; // first valid gpstime DateTime gpsstarttime = DateTime.MinValue; int lineno = 0; int msoffset = 0; log.Info("loading log " + (GC.GetTotalMemory(false) / 1024.0)); using (StreamReader sr = new StreamReader(fn)) { while (!sr.EndOfStream) { try { string line = sr.ReadLine(); lineno++; line = line.Replace(",", ","); line = line.Replace(":", ":"); string[] items = line.Split(new char[] { ',', ':' }, StringSplitOptions.RemoveEmptyEntries); if (line.StartsWith("FMT")) { FMTLine(line); } else if (line.StartsWith("GPS")) { // if (gpsstarttime == DateTime.MinValue) { gpsstarttime = GetTimeGPS(line); lasttime = gpsstarttime; int indextimems = FindInArray(logformat["GPS"].FieldNames, "T"); if (indextimems != -1) { try { msoffset = int.Parse(items[indextimems]); } catch { } } } } else if (line.StartsWith("ERR")) { Array.Resize(ref items, items.Length + 2); try { int index = FindInArray(DFLog.logformat["ERR"].FieldNames, "Subsys"); if (index == -1) { throw new ArgumentNullException(); } int index2 = FindInArray(DFLog.logformat["ERR"].FieldNames, "ECode"); if (index2 == -1) { throw new ArgumentNullException(); } items[items.Length - 2] = "" + (DFLog.error_subsystem) int.Parse(items[index]); } catch { } } else if (line.StartsWith("EV")) { Array.Resize(ref items, items.Length + 1); try { int index = FindInArray(DFLog.logformat["EV"].FieldNames, "Id"); if (index == -1) { throw new ArgumentNullException(); } items[items.Length - 1] = "" + (DFLog.events) int.Parse(items[index]); } catch { } } DFItem item = new DFItem(); try { item.lineno = lineno; if (items.Length > 0) { item.msgtype = items[0]; item.items = items; if (line.StartsWith("GPS")) { item.time = GetTimeGPS(line); } else { if (logformat.ContainsKey(item.msgtype)) { int indextimems = FindInArray(logformat[item.msgtype].FieldNames, "TimeMS"); if (indextimems != -1) { item.timems = int.Parse(items[indextimems]); item.time = gpsstarttime.AddMilliseconds(item.timems - msoffset); lasttime = item.time; } else { item.time = lasttime; } } } } } catch { } answer.Add(item); } catch { } } } log.Info("loaded log " + (GC.GetTotalMemory(false) / 1024.0)); return(answer); }
public DFItem GetDFItemFromLine(string line, int lineno) { //line = line.Replace(",", ","); //line = line.Replace(":", ":"); string[] items = line.Trim().Split(new char[] { ',', ':' }, StringSplitOptions.RemoveEmptyEntries); if (line.StartsWith("FMT")) { FMTLine(line); } else if (line.StartsWith("GPS")) { } else if (line.StartsWith("ERR")) { Array.Resize(ref items, items.Length + 2); try { int index = FindMessageOffset("ERR", "Subsys"); if (index == -1) { throw new ArgumentNullException(); } int index2 = FindMessageOffset("ERR", "ECode"); if (index2 == -1) { throw new ArgumentNullException(); } items[items.Length - 2] = "" + (DFLog.LogErrorSubsystem) int.Parse(items[index]); } catch { } } else if (line.StartsWith("EV")) { Array.Resize(ref items, items.Length + 1); try { int index = FindMessageOffset("EV", "Id"); if (index == -1) { throw new ArgumentNullException(); } items[items.Length - 1] = "" + (DFLog.Log_Event) int.Parse(items[index]); } catch { } } else if (line.StartsWith("MAG")) { } DFItem item = new DFItem(this, items, lineno); return(item); }