Ejemplo n.º 1
0
        public static GMapMarker getMAVMarker(MAVState MAV)
        {
            PointLatLng portlocation = new PointLatLng(MAV.cs.lat, MAV.cs.lng);

            if (MAV.aptype == MAVLink.MAV_TYPE.FIXED_WING)
            {
                return(new GMapMarkerPlane(portlocation, MAV.cs.yaw,
                                           MAV.cs.groundcourse, MAV.cs.nav_bearing, MAV.cs.target_bearing, MAV.cs.radius)
                {
                    ToolTipText = MAV.cs.alt.ToString("0") + "\n" + MAV.sysid.ToString("sysid: 0"),
                    ToolTipMode = MarkerTooltipMode.Always
                });
            }
            else if (MAV.aptype == MAVLink.MAV_TYPE.COAXIAL)
            {
                return(new GMapMarkerSingle(portlocation, MAV.cs.yaw,
                                            MAV.cs.groundcourse, MAV.cs.nav_bearing, MAV.sysid));
            }
            else
            {
                // unknown type
                return(new GMarkerGoogle(portlocation, GMarkerGoogleType.green_dot));
            }
        }
Ejemplo n.º 2
0
        public void UpdateCurrentSettings(System.Windows.Forms.BindingSource bs, bool updatenow,
                                          LinkInterface mavinterface, MAVState MAV)
        {
            lock (this)
            {
                if (updatenow) //
                {
                    lastupdate = DateTime.Now;

                    //MainV2.comPort.UartDataParser();

                    //check if valid mavinterface
                    //if (parent != null && parent.packetsnotlost != 0)
                    //{
                    //    if ((DateTime.Now - parent.lastvalidpacket).TotalSeconds > 10)
                    //    {
                    //        linkqualitygcs = 0;
                    //    }
                    //    else
                    //    {
                    //        linkqualitygcs =
                    //            (ushort)((parent.packetsnotlost / (parent.packetsnotlost + parent.packetslost)) * 100.0);
                    //    }

                    //    if (linkqualitygcs > 100)
                    //        linkqualitygcs = 100;
                    //}

                    if (datetime.Second != lastsecondcounter.Second)
                    {
                        lastsecondcounter = datetime;

                        if (lastpos.Lat != 0 && lastpos.Lng != 0)
                        {
                            // 应该判断接口打开后初始化distTraveled=0
                            distTraveled += (float)lastpos.GetDistance(new PointLatLngAlt(lat, lng, 0, "")) *
                                            multiplierdist;
                            lastpos = new PointLatLngAlt(lat, lng, 0, "");
                        }
                        else
                        {
                            lastpos = new PointLatLngAlt(lat, lng, 0, "");
                        }
                    }

                    // re-request streams
                }

                try
                {
                    if (csCallBack != null)
                    {
                        csCallBack(this, null);
                    }
                }
                catch
                {
                }

                //Console.Write(DateTime.Now.Millisecond + " start ");
                // update form
                try
                {
                    if (bs != null)
                    {
                        bs.DataSource = this;
                        //bs.DataSource = dataExp.RawDataTable();
                        bs.ResetBindings(false);

                        return;

                        /*
                         *
                         * sw.Start();
                         * bs.SuspendBinding();
                         * bs.Clear();
                         * bs.ResumeBinding();
                         * bs.Add(this);
                         * sw.Stop();
                         * elaps = sw.Elapsed;
                         * Console.WriteLine("2 " + elaps.ToString("0.#####") + " done ");
                         *
                         * sw.Start();
                         * if (bs.Count > 100)
                         *  bs.Clear();
                         * bs.Add(this);
                         * sw.Stop();
                         * elaps = sw.Elapsed;
                         * Console.WriteLine("3 " + elaps.ToString("0.#####") + " done ");
                         */
                    }
                }
                catch
                {
                    log.InfoFormat("CurrentState Binding error");
                }
            }
        }