//[DebuggerHidden]
        public override bool Init()
        {
            loopratehz = 1;

            if (File.Exists(statsfile))
            {
                try
                {
                    System.Xml.Serialization.XmlSerializer reader = new System.Xml.Serialization.XmlSerializer(statsoverall.GetType());

                    var file = new System.IO.StreamReader(statsfile);

                    statsoverall = (whattostat)reader.Deserialize(file);

                    file.Close();
                }
                catch { }
            }

            MainV2.instance.Invoke((Action)
                                   delegate
            {
                System.Windows.Forms.ToolStripMenuItem men = new System.Windows.Forms.ToolStripMenuItem()
                {
                    Text = "Stats"
                };
                men.Click += men_Click;
                Host.FDMenuMap.Items.Add(men);
            });

            statsoverall.appstarts++;

            return(true);
        }
示例#2
0
        //[DebuggerHidden]
        public override bool Init()
        {
            loopratehz = 1;

            if (File.Exists(statsfile))
            {
                try
                {
                    System.Xml.Serialization.XmlSerializer reader = new System.Xml.Serialization.XmlSerializer(statsoverall.GetType());

                    var file = new System.IO.StreamReader(statsfile);

                    statsoverall = (whattostat)reader.Deserialize(file);

                    file.Close();
                }
                catch { }
            }

            MainV2.instance.Invoke((Action)
                delegate
                {

            System.Windows.Forms.ToolStripMenuItem men = new System.Windows.Forms.ToolStripMenuItem() { Text = "Stats" };
            men.Click += men_Click;
            Host.FDMenuMap.Items.Add(men);
            });

            statsoverall.appstarts++;

            return true;
        }
        void dostats(whattostat stats)
        {
            // connects
            if (connectedstate != Host.comPort.BaseStream.IsOpen)
            {
                if (Host.comPort.BaseStream.IsOpen == true)
                {
                    stats.lastconnect = DateTime.Now;
                    stats.connects++;
                    connectedstate = true;
                }
                else
                {
                    stats.lastdisconnect = DateTime.Now;
                    connectedstate       = false;
                }
            }

            // if we are not connected, dont do anything
            if (!Host.comPort.BaseStream.IsOpen)
            {
                return;
            }

            // armed time
            if (Host.cs.armed)
            {
                stats.armedtime++;
            }

            // distance traveled
            if (Host.cs.armed && Host.cs.gpsstatus >= 3 && (Host.cs.ch3percent > 12 || Host.cs.groundspeed > 3.0))
            {
                stats.timeInAir++;

                if (lastpos != null && lastpos.Lat != 0 && lastpos.Lng != 0)
                {
                    double dist = lastpos.GetDistance(new PointLatLngAlt(Host.cs.lat, Host.cs.lng, Host.cs.altasl, ""));
                    // max jump size is 400 m
                    if (dist < 400)
                    {
                        stats.distTraveledmeters += dist;
                    }
                    lastpos = new PointLatLngAlt(Host.cs.lat, Host.cs.lng, Host.cs.altasl, "");
                }
                else
                {
                    lastpos = new PointLatLngAlt(Host.cs.lat, Host.cs.lng, Host.cs.altasl, "");
                }
            }

            // altitude gained
            if (Host.cs.armed && Host.cs.gpsstatus >= 3)
            {
                stats.maxalt = Math.Max(Host.cs.altasl, stats.maxalt);

                stats.minalt = Math.Min(Host.cs.altasl, stats.minalt);

                stats.maxspeed = Math.Max(Host.cs.groundspeed, stats.maxspeed);

                stats.avgspeed = Host.cs.groundspeed;
            }

            // gps lock time
            if (Host.cs.gpsstatus >= 3)
            {
                stats.gpslocktime++;
            }

            if (Host.cs.battery_usedmah > 0)
            {
                stats.mahused += Host.cs.battery_usedmah - lastmahused;
                lastmahused    = Host.cs.battery_usedmah;
            }
            else
            {
                lastmahused = 0;
            }

            // bytes received
            //stats["bytesreceived"] += Host.comPort.BytesReceived.Buffer(TimeSpan.FromSeconds(1)).Select(bytes => bytes.Sum());

            // bytes sent
            //stats["bytessent"] += Host.comPort.BytesSent.Buffer(TimeSpan.FromSeconds(1)).Select(bytes => bytes.Sum());

            // connect time
            if (Host.comPort.BaseStream.IsOpen)
            {
                stats.connectedtime++;
            }
            return;
        }
示例#4
0
        void dostats(whattostat stats)
        {
            // connects
            if (connectedstate != Host.comPort.BaseStream.IsOpen)
            {
                if (Host.comPort.BaseStream.IsOpen == true)
                {
                    stats.lastconnect = DateTime.Now;
                    stats.connects++;
                    connectedstate = true;
                }
                else
                {
                    stats.lastdisconnect = DateTime.Now;
                    connectedstate = false;
                }
            }

            // if we are not connected, dont do anything
            if (!Host.comPort.BaseStream.IsOpen)
                return;

            // armed time
            if (Host.cs.armed)
            {
                stats.armedtime++;
            }

            // distance traveled
            if (Host.cs.armed && Host.cs.gpsstatus == 3 && (Host.cs.ch3percent > 12 || Host.cs.groundspeed > 3.0))
            {
                stats.timeInAir++;

                if (lastpos != null && lastpos.Lat != 0 && lastpos.Lng != 0)
                {
                    double dist = lastpos.GetDistance(new PointLatLngAlt(Host.cs.lat, Host.cs.lng, Host.cs.altasl, ""));
                    // max jump size is 400 m
                    if (dist < 400)
                    {
                        stats.distTraveledmeters += dist;
                    }
                    lastpos = new PointLatLngAlt(Host.cs.lat, Host.cs.lng, Host.cs.altasl, "");
                }
                else
                {
                    lastpos = new PointLatLngAlt(Host.cs.lat, Host.cs.lng, Host.cs.altasl, "");
                }
            }

            // altitude gained
            if (Host.cs.armed && Host.cs.gpsstatus == 3)
            {
                stats.maxalt = Math.Max(Host.cs.altasl,stats.maxalt);

                stats.minalt = Math.Min(Host.cs.altasl,stats.minalt);

                stats.maxspeed = Math.Max(Host.cs.groundspeed, stats.maxspeed);

                stats.avgspeed = Host.cs.groundspeed;
            }

            // gps lock time
            if (Host.cs.gpsstatus == 3) {
                stats.gpslocktime++;
            }

            if (Host.cs.battery_usedmah > 0)
            {
                stats.mahused += Host.cs.battery_usedmah - lastmahused;
                lastmahused = Host.cs.battery_usedmah;
            }
            else
            {
                lastmahused = 0;
            }

            // bytes received
             //stats["bytesreceived"] += Host.comPort.BytesReceived.Buffer(TimeSpan.FromSeconds(1)).Select(bytes => bytes.Sum());

            // bytes sent
              //stats["bytessent"] += Host.comPort.BytesSent.Buffer(TimeSpan.FromSeconds(1)).Select(bytes => bytes.Sum());

            // connect time
            if (Host.comPort.BaseStream.IsOpen)
            {
                stats.connectedtime++;
            }
            return;
        }