void UpdateGpsData(object sender, System.EventArgs args) { if (gps.Opened) { if (position != null && position.LatitudeValid && position.LongitudeValid) { if (position.SatellitesInSolutionValid && position.SatellitesInViewValid && position.SatelliteCountValid) { lbGpsState.Text = string.Format("Satellite(s): {0}", position.SatelliteCount); } string s = string.Format("{0};{1}", position.Latitude.ToString("0.0000"), position.Longitude.ToString("0.0000")); lbGeocode.Text = s; if (done) { if (session.Schedule != null && !session.Schedule[(int)(DateTime.Now.Ticks / TimeSpan.TicksPerHour) % 24]) { return; } done = false; WaypointOperation result = null; if (position.SpeedValid) { result = session.Waypoint(position.Latitude, position.Longitude, (long)position.Speed); } else { result = session.Waypoint(position.Latitude, position.Longitude, 0); } if (result.OK) { log("Waypoint successed: " + result.Result); } else { log(result.Message); } done = true; } } } else { log(string.Format("GPS state: {0}", device.DeviceState)); } }
private void _timerInsert_Tick(object sender, EventArgs e) { if (done) { done = false; if (geocodeQueue.Count > 0 && listGeocode.Items.Count > 0) { Geocode geocode = geocodeQueue.Dequeue(); Console.WriteLine("Milliseconds: " + (DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond)); long time = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond - millisecond; NumberFormatInfo info = new NumberFormatInfo(); info.PercentDecimalSeparator = "."; text.WriteLine(string.Format("\t<waypoint time=\"{0}\" latitude=\"{1}\" longitude=\"{2}\" altitude=\"{3}\" />", time, geocode.Latitude.ToString(info), geocode.Longitude.ToString(info), millisecond % 50)); Invoke(new ListGeocodeRemoveDelegate(listGeocode.Items.RemoveAt), listGeocode.Items.Count - 1); try { WaypointOperation result = session.Waypoint(geocode); if (result.OK) { output("Waypoint: " + result.Result); updateTrackID(result.Result.TrackID + ""); } else { output("Waypoint: failed : " + geocode); } } catch (Exception ex) { output(ex.Message); } millisecond = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond; } done = true; } }