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)); } }
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"); } } }