コード例 #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;
                                    }
                                }
                            }
                        }
                    }
                }
            }
コード例 #2
0
        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;
        }
コード例 #3
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;
                        }
                    }
                }
            }