/// <summary> /// Gets a system date/time from a Dynastream date/time. /// </summary> /// <param name="dateTime">Dynastream date/time.</param> /// <returns>System date/time.</returns> public static System.DateTime?GetDateTime(Dynastream.Fit.DateTime dateTime) { if (dateTime != null) { return(dateTime.GetDateTime().ToLocalTime()); } return(null); }
static void OnMesg(object sender, MesgEventArgs e) { string activityType = e.mesg.Name; Console.WriteLine("OnMesg: Received Mesg with global ID#{0}, its name is {1}", e.mesg.Num, activityType); Trackpoint tp = new Trackpoint(); for (byte i = 0; i < e.mesg.GetNumFields(); i++) { foreach (var field in e.mesg.fields) { string fieldValue = field.GetValue().ToString(); string fieldName = field.GetName().ToString(); string recordType = e.mesg.fields[i].Num.ToString(); Console.WriteLine("\tField{0} Index{1} (\"{2}\" Field#{4}) Value: {3}", i, 0, fieldName, fieldValue, recordType); if (activityType == "FileId") { switch (fieldName) { case "TimeCreated": Dynastream.Fit.DateTime dt = new Dynastream.Fit.DateTime(uint.Parse(fieldValue)); tcx.Id = Trackpoint.ConvertDate(dt.GetDateTime()); tcx.StartTime = dt.GetDateTime(); break; default: break; } } if (activityType == "Record") { switch (fieldName) { case "Timestamp": Dynastream.Fit.DateTime dt = new Dynastream.Fit.DateTime(uint.Parse(fieldValue)); tp.Time = dt.GetDateTime(); break; case "HeartRate": tp.HeartRateBpm = int.Parse(fieldValue); break; case "PositionLat": tp.LatitudeDegrees = double.Parse(fieldValue); break; case "PositionLong": tp.LongitudeDegrees = double.Parse(fieldValue); break; case "Altitude": tp.AltitudeMeters = 300; //double.Parse(fieldValue); break; default: break; } } } } if (activityType == "Record") { tcx.TrackpointList.Add(tp); } }