Example #1
0
        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;
        }
Example #2
0
        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;
        }
Example #3
0
        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;
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }