public void Save(TelemetryLap lap) { try { if (!lap.IsFirstPacketStartLine || !lap.HasLapFinished || string.IsNullOrEmpty(lap.CircuitName)) return; var outputBuffer = new List<string>(); outputBuffer.AddRange(GetHeaderLines(lap)); outputBuffer.AddRange(GetPacketData(lap)); // write to file var directory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); var userFilePath = Path.Combine(directory, "F1Speed", "F1PerfView Data"); if (!fileSystem.DirectoryExists(userFilePath)) fileSystem.CreateDirectory(userFilePath); var fileName = userFilePath + @"\" + FileName(lap); if (fileSystem.FileExists(fileName)) fileSystem.DeleteFile(fileName); fileSystem.WriteAllLines(fileName, outputBuffer); } catch (Exception ex) { logger.Error("Could not retreive binary telemetry lap", ex); throw ex; } }
public override void Save(TelemetryLap lap) { try { if (lap == null) return; var filename = GetFileName(lap); if (File.Exists(filename)) File.Delete(filename); var xmlSer = new XmlSerializer(typeof (TelemetryLap)); using (var memStm = new MemoryStream()) { xmlSer.Serialize(memStm, lap); using (var stmR = new StreamReader(memStm)) { memStm.Position = 0; File.AppendAllText(filename, stmR.ReadToEnd(), Encoding.UTF8); } } } catch (Exception ex) { logger.Error("Could not save xml telemetry lap", ex); throw ex; } }
public void Save(TelemetryLap lap, string fileName) { try { if (lap == null) return; if (File.Exists(fileName)) File.Delete(fileName); using (Stream stream = File.Open(fileName, FileMode.Create)) { var binFormatter = new BinaryFormatter(); binFormatter.Serialize(stream, lap); stream.Close(); } } catch (Exception ex) { #if DEBUG logger.Error("Count not save binary telemetry lap", ex); #endif throw ex; } }
public void Save(TelemetryLap lap, string fileName) { try { if (lap == null) return; var outputBuffer = new List<string>(); outputBuffer.AddRange(GetHeaderLines(lap)); outputBuffer.AddRange(GetPacketData(lap)); if (!fileSystem.DirectoryExists(DataFolder())) fileSystem.CreateDirectory(DataFolder()); if (fileSystem.FileExists(fileName)) fileSystem.DeleteFile(fileName); fileSystem.WriteAllLines(fileName, outputBuffer); } catch (Exception ex) { #if DEBUG logger.Error("Could not save csv telemetry lap", ex); #endif throw ex; } }
private IEnumerable <string> GetPacketData(TelemetryLap lap) { var data = new List <string>(); foreach (var packet in lap.Packets) { string dataLine = packet.LapTime.ToString("0.000") + ", " + packet.LapDistance.ToString("0.000") + ", " + packet.Speed.ToString("0.0000") + ", " + packet.LongitudinalAcceleration.ToString("0.000") + ", " + packet.LateralAcceleration.ToString("0.000") + ", " + packet.EngineRevs.ToString("0.000") + ", " + (Math.Truncate(packet.Throttle * 100000) / 1000).ToString("0.000") + ", " + (Math.Truncate(packet.Brake * 100000) / 1000).ToString("0.000") + ", " + packet.Steer.ToString("0.000") + ", " + packet.Gear.ToString("0") + ", " + packet.SuspensionPositionRearLeft.ToString("0.000000") + ", " + packet.SuspensionPositionRearRight.ToString("0.000000") + ", " + packet.SuspensionPositionFrontLeft.ToString("0.000000") + ", " + packet.SuspensionPositionFrontRight.ToString("0.000000") + ", " + packet.WheelSpeedBackLeft.ToString("0.0000") + ", " + packet.WheelSpeedBackRight.ToString("0.0000") + ", " + packet.WheelSpeedFrontLeft.ToString("0.0000") + ", " + packet.WheelSpeedFrontRight.ToString("0.0000") + ", " + packet.Z.ToString("0.000") + ", " + packet.X.ToString("0.000"); data.Add(dataLine); } return(data); }
public void Save(TelemetryLap lap, string fileName) { try { if (lap == null) { return; } if (File.Exists(fileName)) { File.Delete(fileName); } using (Stream stream = File.Open(fileName, FileMode.Create)) { var binFormatter = new BinaryFormatter(); binFormatter.Serialize(stream, lap); stream.Close(); } } catch (Exception ex) { logger.Error("Count not save binary telemetry lap", ex); throw ex; } }
public void Save(TelemetryLap lap, string fileName) { try { if (lap == null) { return; } var outputBuffer = new List <string>(); outputBuffer.AddRange(GetHeaderLines(lap)); outputBuffer.AddRange(GetPacketData(lap)); if (!fileSystem.DirectoryExists(DataFolder())) { fileSystem.CreateDirectory(DataFolder()); } if (fileSystem.FileExists(fileName)) { fileSystem.DeleteFile(fileName); } fileSystem.WriteAllLines(fileName, outputBuffer); } catch (Exception ex) { logger.Error("Could not save csv telemetry lap", ex); throw ex; } }
public override void Save(TelemetryLap lap) { try { if (lap == null) { return; } var filename = GetFileName(lap); if (File.Exists(filename)) { File.Delete(filename); } var xmlSer = new XmlSerializer(typeof(TelemetryLap)); using (var memStm = new MemoryStream()) { xmlSer.Serialize(memStm, lap); using (var stmR = new StreamReader(memStm)) { memStm.Position = 0; File.AppendAllText(filename, stmR.ReadToEnd(), Encoding.UTF8); } } } catch (Exception ex) { logger.Error("Could not save xml telemetry lap", ex); throw ex; } }
public void GetPacketClosestTo_returns_packet_closest_to_supplied_packet() { var tLap = new TelemetryLap(Circuit.NullCircuit, "LapType"); tLap.AddPacket(new TelemetryPacket { LapDistance = 0.529f }); tLap.AddPacket(new TelemetryPacket { LapDistance = 1.875f }); tLap.AddPacket(new TelemetryPacket { LapDistance = 3.221f }); tLap.AddPacket(new TelemetryPacket { LapDistance = 4.567f }); tLap.AddPacket(new TelemetryPacket { LapDistance = 5.931f }); tLap.AddPacket(new TelemetryPacket { LapDistance = 7.262f }); // should be closest to this tLap.AddPacket(new TelemetryPacket { LapDistance = 8.611f }); tLap.AddPacket(new TelemetryPacket { LapDistance = 9.961f }); tLap.AddPacket(new TelemetryPacket { LapDistance = 11.311f }); tLap.AddPacket(new TelemetryPacket { LapDistance = 12.661f }); tLap.AddPacket(new TelemetryPacket { LapDistance = 14.013f }); tLap.AddPacket(new TelemetryPacket { LapDistance = 15.365f }); tLap.AddPacket(new TelemetryPacket { LapDistance = 16.715f }); tLap.AddPacket(new TelemetryPacket { LapDistance = 18.067f }); tLap.AddPacket(new TelemetryPacket { LapDistance = 19.419f }); var tPacketCompare = new TelemetryPacket { LapDistance = 7.811f }; var foundPacket = tLap.GetPacketClosestTo(tPacketCompare); Assert.AreEqual(7.262f, foundPacket.LapDistance); }
private IEnumerable <string> GetHeaderLines(TelemetryLap lap) { return(new [] { string.Format("\"F1Speed Export - {0}\",\"{1:yyyy-MM-dd HH:mm}\", {2}, {3}, {4}", lap.CircuitName, DateTime.Now, lap.LapTime, GetTrackNumber(lap), lap.LapNumber), "\"time\",\"dist\",\"speed\",\"acc_long\",\"acc_lat\",\"revs\",\"throttle\",\"brake\",\"steer\",\"gear\",\"st_lr\",\"st_rr\",\"st_lf\",\"st_rf\",\"ws_lr\",\"ws_rr\",\"ws_lf\",\"ws_rf\",\"pos_x\",\"pos_y\"" }); }
public void AddPacket_adds_packets() { var tLap = new TelemetryLap(Circuit.NullCircuit, "LapType"); var origCount = tLap.Packets.Count(); tLap.AddPacket(new TelemetryPacket()); var newCount = tLap.Packets.Count(); Assert.AreEqual(origCount + 1, newCount); }
private IEnumerable<string> GetHeaderLines(TelemetryLap lap) { return new[] { "\"time\",\"laptime\",\"lapdistance\",\"distance\",\"x\",\"y\",\"z\",\"speed\",\"worldspeedx\",\"worldspeedy\",\"worldspeedz\",\"xr\",\"roll\",\"zr\",\"xd\",\"pitch\","+ "\"zd\",\"suspensionpositionrearleft\"," + "\"suspensionpositionrearright\",\"suspensionpositionfrontleft\",\"suspensionpositionfrontright\",\"suspensionvelocityrearleft\",\"suspensionvelocityrearright\"," + "\"suspensionvelocityfrontleft\",\"suspensionvelocityfrontright\",\"wheelspeedrearleft\",\"wheelspeedrearright\",\"wheelspeedfrontleft\",\"wheelspeedfrontright\"," + "\"throttle\",\"steer\",\"brake\",\"clutch\",\"gear\",\"lateralacceleration\",\"longitudinalacceleration\",\"lap\",\"enginerevs\"" }; }
private IEnumerable <string> GetHeaderLines(TelemetryLap lap) { return(new[] { "\"time\",\"laptime\",\"lapdistance\",\"distance\",\"x\",\"y\",\"z\",\"speed\",\"worldspeedx\",\"worldspeedy\",\"worldspeedz\",\"xr\",\"roll\",\"zr\",\"xd\",\"pitch\"," + "\"zd\",\"suspensionpositionrearleft\"," + "\"suspensionpositionrearright\",\"suspensionpositionfrontleft\",\"suspensionpositionfrontright\",\"suspensionvelocityrearleft\",\"suspensionvelocityrearright\"," + "\"suspensionvelocityfrontleft\",\"suspensionvelocityfrontright\",\"wheelspeedrearleft\",\"wheelspeedrearright\",\"wheelspeedfrontleft\",\"wheelspeedfrontright\"," + "\"throttle\",\"steer\",\"brake\",\"clutch\",\"gear\",\"lateralacceleration\",\"longitudinalacceleration\",\"lap\",\"enginerevs\"" }); }
public void Delete(TelemetryLap lap) { try { var fileName = FileName(lap); if (fileSystem.FileExists(fileName)) fileSystem.DeleteFile(fileName); } catch (Exception ex) { logger.Error("Could not delete f1perfview telemetry lap", ex); throw ex; } }
public void Delete(TelemetryLap lap) { try { var filename = GetFileName(lap); if (File.Exists(filename)) File.Delete(filename); } catch (Exception ex) { logger.Error("Count not delete Telemetry Lap", ex); throw ex; } }
private IEnumerable <string> GetPacketData(TelemetryLap lap) { var data = new List <string>(); foreach (var packet in lap.Packets) { data.Add( packet.Time + ", " + packet.LapTime + ", " + packet.LapDistance + ", " + packet.Distance + ", " + packet.X + ", " + packet.Y + ", " + packet.Z + ", " + packet.Speed + ", " + packet.WorldSpeedX + ", " + packet.WorldSpeedY + ", " + packet.WorldSpeedZ + ", " + packet.XR + ", " + packet.Roll + ", " + packet.ZR + ", " + packet.XD + ", " + packet.Pitch + ", " + packet.ZD + ", " + packet.SuspensionPositionRearLeft + ", " + packet.SuspensionPositionRearRight + ", " + packet.SuspensionPositionFrontLeft + ", " + packet.SuspensionPositionFrontRight + ", " + packet.SuspensionVelocityRearLeft + ", " + packet.SuspensionVelocityRearRight + ", " + packet.SuspensionVelocityFrontLeft + ", " + packet.SuspensionVelocityFrontRight + ", " + packet.WheelSpeedBackLeft + ", " + packet.WheelSpeedBackRight + ", " + packet.WheelSpeedFrontLeft + ", " + packet.WheelSpeedFrontRight + ", " + packet.Throttle + ", " + packet.Steer + ", " + packet.Brake + ", " + packet.Clutch + ", " + packet.Gear + ", " + packet.LateralAcceleration + ", " + packet.LongitudinalAcceleration + ", " + packet.Lap + ", " + packet.EngineRevs ); } return(data); }
public void Delete(TelemetryLap lap) { try { var fileName = FileName(lap); if (fileSystem.FileExists(fileName)) { fileSystem.DeleteFile(fileName); } } catch (Exception ex) { logger.Error("Could not delete f1perfview telemetry lap", ex); throw ex; } }
public void HasStartLinePacket_is_false_when_first_packet_time_is_greater_than_one_sixtieth_of_second() { const float cutoff = (1000 / 60000f) + 0.001f; // Samples are taken every 0.017 seconds, so first sample must be < 0.018 into the lap. // time differs slightly because last sample of last lap might have been nearly 0.017 before end of that lap. var tPacket = new TelemetryPacket() { LapTime = cutoff * 1.1f }; var tLap = new TelemetryLap(Circuit.NullCircuit, "LapType"); tLap.AddPacket(tPacket); Assert.IsFalse(tLap.IsFirstPacketStartLine); }
public void Delete(TelemetryLap lap) { try { var filename = GetFileName(lap); if (File.Exists(filename)) { File.Delete(filename); } } catch (Exception ex) { logger.Error("Count not delete Telemetry Lap", ex); throw ex; } }
public static TelemetryLap CreatePopulatedLap(float lapNumber, bool completeLap) { var tLap = new TelemetryLap(Circuit.NullCircuit, "Test"); const float SampleRate = (1000 / 60000f); for (var index = 0; index < lapDistances.Length; index++) { if (completeLap || index > 0) { tLap.AddPacket(new TelemetryPacket { Lap = lapNumber, LapDistance = lapDistances[index], Speed = speeds[index], LapTime = (SampleRate * (index + 1) - 0.0001f) }); } } return(tLap); }
public static TelemetryLap CreateOutLap() { var tLap = new TelemetryLap(Circuit.NullCircuit, "Test"); const float SampleRate = (1000 / 60000f); for (var index = 0; index < lapDistances.Length; index++) { if (index > 0) { tLap.AddPacket(new TelemetryPacket { Lap = 0f, LapDistance = -((20 - lapDistances[index]) / 20), Speed = speeds[lapDistances.Length - 1 - index], LapTime = (SampleRate * (index + 1) - 0.0001f) }); } } return(tLap); }
public void Save(TelemetryLap lap, string fileName) { if (!lap.IsFirstPacketStartLine || !lap.HasLapFinished || string.IsNullOrEmpty(lap.CircuitName)) { return; } var outputBuffer = new List <string>(); outputBuffer.AddRange(GetHeaderLines(lap)); outputBuffer.AddRange(GetPacketData(lap)); if (fileSystem.FileExists(fileName)) { fileSystem.DeleteFile(fileName); } fileSystem.WriteAllLines(fileName, outputBuffer); }
public void Save(TelemetryLap lap) { try { if (!lap.IsFirstPacketStartLine || !lap.HasLapFinished || string.IsNullOrEmpty(lap.CircuitName)) { return; } var outputBuffer = new List <string>(); outputBuffer.AddRange(GetHeaderLines(lap)); outputBuffer.AddRange(GetPacketData(lap)); // write to file var directory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); var userFilePath = Path.Combine(directory, "F1Speed", "F1PerfView Data"); if (!fileSystem.DirectoryExists(userFilePath)) { fileSystem.CreateDirectory(userFilePath); } var fileName = userFilePath + @"\" + FileName(lap); if (fileSystem.FileExists(fileName)) { fileSystem.DeleteFile(fileName); } fileSystem.WriteAllLines(fileName, outputBuffer); } catch (Exception ex) { logger.Error("Could not retreive binary telemetry lap", ex); throw ex; } }
private string GetTrackNumber(TelemetryLap lap) { return Tracks[lap.CircuitName]; }
private string FileName(TelemetryLap lap) { return string.Format("{0}_{1}.csv", lap.CircuitName, lap.LapTime.ToString("#.000")); }
protected override string GetFileName(TelemetryLap lap) { return(string.Format(@"{0}\{1}_{2}_{3:0.000}.{4}", DataFolder(), lap.CircuitName, lap.LapType, lap.LapTime, GetFileExtension())); }
public override void Save(TelemetryLap lap) { Save(lap, GetFileName(lap)); }
private IEnumerable<string> GetHeaderLines(TelemetryLap lap) { return new [] { string.Format("\"F1Speed Export - {0}\",\"{1:yyyy-MM-dd HH:mm}\", {2}, {3}, {4}", lap.CircuitName, DateTime.Now, lap.LapTime, GetTrackNumber(lap), lap.LapNumber), "\"time\",\"dist\",\"speed\",\"acc_long\",\"acc_lat\",\"revs\",\"throttle\",\"brake\",\"steer\",\"gear\",\"st_lr\",\"st_rr\",\"st_lf\",\"st_rf\",\"ws_lr\",\"ws_rr\",\"ws_lf\",\"ws_rf\",\"pos_x\",\"pos_y\"" }; }
protected override string GetFileName(TelemetryLap lap) { return string.Format(@"{0}\{1}_{2}_{3:0.000}.{4}", DataFolder(), lap.CircuitName, lap.LapType, lap.LapTime, GetFileExtension()); }
public override void Save(TelemetryLap lap) { Save(lap, GetFileName(lap.CircuitName, lap.LapType)); }
private IEnumerable<string> GetPacketData(TelemetryLap lap) { var data = new List<string>(); foreach(var packet in lap.Packets) { data.Add( packet.Time + ", " + packet.LapTime + ", " + packet.LapDistance + ", " + packet.Distance + ", " + packet.X + ", " + packet.Y + ", " + packet.Z + ", " + packet.Speed + ", " + packet.WorldSpeedX + ", " + packet.WorldSpeedY + ", " + packet.WorldSpeedZ + ", " + packet.XR + ", " + packet.Roll + ", " + packet.ZR + ", " + packet.XD + ", " + packet.Pitch + ", " + packet.ZD + ", " + packet.SuspensionPositionRearLeft + ", " + packet.SuspensionPositionRearRight + ", " + packet.SuspensionPositionFrontLeft + ", " + packet.SuspensionPositionFrontRight + ", " + packet.SuspensionVelocityRearLeft + ", " + packet.SuspensionVelocityRearRight + ", " + packet.SuspensionVelocityFrontLeft + ", " + packet.SuspensionVelocityFrontRight + ", " + packet.WheelSpeedBackLeft + ", " + packet.WheelSpeedBackRight + ", " + packet.WheelSpeedFrontLeft + ", " + packet.WheelSpeedFrontRight + ", " + packet.Throttle + ", " + packet.Steer + ", " + packet.Brake + ", " + packet.Clutch + ", " + packet.Gear + ", " + packet.LateralAcceleration + ", " + packet.LongitudinalAcceleration + ", " + packet.Lap + ", " + packet.EngineRevs ); } return data; }
private IEnumerable<string> GetPacketData(TelemetryLap lap) { var data = new List<string>(); foreach(var packet in lap.Packets) { string dataLine = packet.LapTime.ToString("0.000") + ", " + packet.LapDistance.ToString("0.000") + ", " + packet.Speed.ToString("0.0000") + ", " + packet.LongitudinalAcceleration.ToString("0.000") + ", " + packet.LateralAcceleration.ToString("0.000") + ", " + packet.EngineRevs.ToString("0.000") + ", " + (Math.Truncate(packet.Throttle * 100000) / 1000).ToString("0.000") + ", " + (Math.Truncate(packet.Brake * 100000) / 1000).ToString("0.000") + ", " + packet.Steer.ToString("0.000") + ", " + packet.Gear.ToString("0") + ", " + packet.SuspensionPositionRearLeft.ToString("0.000000") + ", " + packet.SuspensionPositionRearRight.ToString("0.000000") + ", " + packet.SuspensionPositionFrontLeft.ToString("0.000000") + ", " + packet.SuspensionPositionFrontRight.ToString("0.000000") + ", " + packet.WheelSpeedBackLeft.ToString("0.0000") + ", " + packet.WheelSpeedBackRight.ToString("0.0000") + ", " + packet.WheelSpeedFrontLeft.ToString("0.0000") + ", " + packet.WheelSpeedFrontRight.ToString("0.0000") + ", " + packet.Z.ToString("0.000") + ", " + packet.X.ToString("0.000"); data.Add(dataLine); } return data; }
public void Save(TelemetryLap lap, string fileName) { if (!lap.IsFirstPacketStartLine || !lap.HasLapFinished || string.IsNullOrEmpty(lap.CircuitName)) return; var outputBuffer = new List<string>(); outputBuffer.AddRange(GetHeaderLines(lap)); outputBuffer.AddRange(GetPacketData(lap)); if (fileSystem.FileExists(fileName)) fileSystem.DeleteFile(fileName); fileSystem.WriteAllLines(fileName, outputBuffer); }
public abstract void Save(TelemetryLap lap);
protected virtual string GetFileName(TelemetryLap lap) { return GetFileName(lap.Circuit, lap.LapType); }
protected virtual string GetFileName(TelemetryLap lap) { return(GetFileName(lap.Circuit, lap.LapType)); }
public override void Save(TelemetryLap lap) { Save(lap, GetFileName(lap.Circuit, lap.LapType)); }
private string GetTrackNumber(TelemetryLap lap) { return(Tracks[lap.CircuitName]); }
private string GetTrackNumber(TelemetryLap lap) { return(lap.Circuit.Order.ToString()); }
private string FileName(TelemetryLap lap) { return(string.Format("{0}_{1}.csv", lap.CircuitName, lap.LapTime.ToString("#.000"))); }
private string GetTrackNumber(TelemetryLap lap) { return lap.Circuit.Order.ToString(); }