Ejemplo n.º 1
0
            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;
                                    }
                                }
                            }
                        }
                    }
                }
            }
Ejemplo n.º 2
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;
                        }
                    }
                }
            }