コード例 #1
0
ファイル: DisplayVariables.cs プロジェクト: kidBrazil/iRduino
        public static string BuildDisplayString(SdkWrapper.TelemetryUpdatedEventArgs e, List <string> variables, Dictionarys dictionarys, SavedTelemetryValues savedTelemetry, int currentDeltaType)
        {
            var displayString = "";

            foreach (string dvString in variables)
            {
                DisplayVarsEnum dv;
                if (!Enum.TryParse(dvString, out dv))
                {
                    continue;
                }
                switch (dv)
                {
                case DisplayVarsEnum.Speed:
                    float speedtemp = e.TelemetryInfo.Speed.Value * 3.6f;
                    if (speedtemp > 1)
                    {
                        displayString += RightJustify((e.TelemetryInfo.Speed.Value * 3.6f).ToString("0"),
                                                      dictionarys.DisplayVariables[dv].Length);
                    }
                    else
                    {
                        displayString += RightJustify("0", dictionarys.DisplayVariables[dv].Length);
                    }
                    break;

                case DisplayVarsEnum.SpeedMiles:
                    float speedtemp2 = e.TelemetryInfo.Speed.Value * 2.236f;
                    if (speedtemp2 > 1)
                    {
                        displayString += RightJustify((e.TelemetryInfo.Speed.Value * 2.236f).ToString("0"),
                                                      dictionarys.DisplayVariables[dv].Length);
                    }
                    else
                    {
                        displayString += RightJustify("0", dictionarys.DisplayVariables[dv].Length);
                    }
                    break;

                case DisplayVarsEnum.Gear:
                    if (e.TelemetryInfo.Gear.Value > 0)
                    {
                        displayString += e.TelemetryInfo.Gear.Value.ToString(CultureInfo.InvariantCulture);
                    }
                    else if (e.TelemetryInfo.Gear.Value == 0)
                    {
                        displayString += "n";
                    }
                    else
                    {
                        displayString += "r";
                    }
                    break;

                case DisplayVarsEnum.RPM5:
                    displayString += RightJustify(e.TelemetryInfo.RPM.Value.ToString("0"),
                                                  dictionarys.DisplayVariables[dv].Length);
                    break;

                case DisplayVarsEnum.RPM4:
                    if (e.TelemetryInfo.RPM.Value >= 10000)
                    {
                        displayString += RightJustify((e.TelemetryInfo.RPM.Value / 1000f).ToString("0.00"),
                                                      dictionarys.DisplayVariables[dv].Length + 1);
                    }
                    else
                    {
                        displayString += RightJustify(e.TelemetryInfo.RPM.Value.ToString("0"),
                                                      dictionarys.DisplayVariables[dv].Length);
                    }
                    break;

                case DisplayVarsEnum.RPM3:
                    if (e.TelemetryInfo.RPM.Value >= 10000)
                    {
                        displayString += RightJustify((e.TelemetryInfo.RPM.Value / 1000f).ToString("0.0"),
                                                      dictionarys.DisplayVariables[dv].Length + 1);
                    }
                    else
                    {
                        displayString += RightJustify((e.TelemetryInfo.RPM.Value / 1000f).ToString("0.00"),
                                                      dictionarys.DisplayVariables[dv].Length + 1);
                    }
                    break;

                case DisplayVarsEnum.Throttle:
                    displayString += RightJustify((e.TelemetryInfo.Throttle.Value * 100).ToString("0"),
                                                  dictionarys.DisplayVariables[dv].Length);
                    break;

                case DisplayVarsEnum.Brake:
                    displayString += RightJustify((e.TelemetryInfo.Brake.Value * 100).ToString("0"),
                                                  dictionarys.DisplayVariables[dv].Length);
                    break;

                case DisplayVarsEnum.Clutch:
                    displayString += RightJustify((e.TelemetryInfo.Clutch.Value * 100).ToString("0"),
                                                  dictionarys.DisplayVariables[dv].Length);
                    break;

                case DisplayVarsEnum.RaceLaps3:
                    displayString +=
                        RightJustify(e.TelemetryInfo.RaceLaps.Value.ToString(CultureInfo.InvariantCulture),
                                     dictionarys.DisplayVariables[dv].Length);
                    break;

                case DisplayVarsEnum.RaceLaps2:
                    displayString +=
                        RightJustify(e.TelemetryInfo.RaceLaps.Value.ToString(CultureInfo.InvariantCulture),
                                     dictionarys.DisplayVariables[dv].Length);
                    break;

                case DisplayVarsEnum.Laps3:
                    displayString +=
                        RightJustify(e.TelemetryInfo.Lap.Value.ToString(CultureInfo.InvariantCulture),
                                     dictionarys.DisplayVariables[dv].Length);
                    break;

                case DisplayVarsEnum.Laps2:
                    displayString +=
                        RightJustify(e.TelemetryInfo.Lap.Value.ToString(CultureInfo.InvariantCulture),
                                     dictionarys.DisplayVariables[dv].Length);
                    break;

                case DisplayVarsEnum.CurrentLapTime:
                    if (e.TelemetryInfo.LapCurrentLapTime.Value > 1)
                    {
                        TimeSpan t = TimeSpan.FromSeconds(Convert.ToDouble(e.TelemetryInfo.LapCurrentLapTime.Value));
                        displayString += t.ToString("m\\-ss\\.ff");
                    }
                    else
                    {
                        displayString += "_-__.__";
                    }
                    break;

                case DisplayVarsEnum.SelectableLapDelta:
                    switch (currentDeltaType)
                    {
                    case 0:
                        if (e.TelemetryInfo.LapDeltaToBestLap_OK.Value)
                        {
                            displayString += DeltaDisplay(e.TelemetryInfo.LapDeltaToBestLap.Value);
                        }
                        else
                        {
                            displayString += " _._";
                        }
                        break;

                    case 1:
                        if (e.TelemetryInfo.LapDeltaToOptimalLap_OK.Value)
                        {
                            displayString += DeltaDisplay(e.TelemetryInfo.LapDeltaToOptimalLap.Value);
                        }
                        else
                        {
                            displayString += " _._";
                        }

                        break;

                    case 2:
                        if (e.TelemetryInfo.LapDeltaToSessionBestLap_OK.Value)
                        {
                            displayString += DeltaDisplay(e.TelemetryInfo.LapDeltaToSessionBestLap.Value);
                        }
                        else
                        {
                            displayString += " _._";
                        }

                        break;

                    case 3:
                        if (e.TelemetryInfo.LapDeltaToSessionOptimalLap_OK.Value)
                        {
                            displayString += DeltaDisplay(e.TelemetryInfo.LapDeltaToSessionOptimalLap.Value);
                        }
                        else
                        {
                            displayString += " _._";
                        }
                        break;

                    default:
                        displayString += " _._";
                        break;
                    }
                    break;

                case DisplayVarsEnum.LapDeltaBest:
                    if (e.TelemetryInfo.LapDeltaToBestLap_OK.Value)
                    {
                        displayString += DeltaDisplay(e.TelemetryInfo.LapDeltaToBestLap.Value);
                    }
                    else
                    {
                        displayString += " _._";
                    }
                    break;

                case DisplayVarsEnum.LapDeltaOptimal:
                    if (e.TelemetryInfo.LapDeltaToOptimalLap_OK.Value)
                    {
                        displayString += DeltaDisplay(e.TelemetryInfo.LapDeltaToOptimalLap.Value);
                    }
                    else
                    {
                        displayString += " _._";
                    }
                    break;

                case DisplayVarsEnum.LapDeltaSessionBest:
                    if (e.TelemetryInfo.LapDeltaToSessionBestLap_OK.Value)
                    {
                        displayString += DeltaDisplay(e.TelemetryInfo.LapDeltaToSessionBestLap.Value);
                    }
                    else
                    {
                        displayString += " _._";
                    }
                    break;

                case DisplayVarsEnum.LapDeltaSessionOptimal:
                    if (e.TelemetryInfo.LapDeltaToSessionOptimalLap_OK.Value)
                    {
                        displayString += DeltaDisplay(e.TelemetryInfo.LapDeltaToSessionOptimalLap.Value);
                    }
                    else
                    {
                        displayString += " _._";
                    }
                    break;


                case DisplayVarsEnum.ForceFeedBackPCT:
                    displayString += RightJustify(
                        (e.TelemetryInfo.SteeringWheelPctTorque.Value * 100).ToString("0"),
                        dictionarys.DisplayVariables[dv].Length);
                    break;

                case DisplayVarsEnum.FuelLitres:
                    if (e.TelemetryInfo.FuelLevel.Value < 100)
                    {
                        displayString += RightJustify(e.TelemetryInfo.FuelLevel.Value.ToString("0.0"),
                                                      dictionarys.DisplayVariables[dv].Length + 1);
                    }
                    else
                    {
                        displayString += RightJustify(e.TelemetryInfo.FuelLevel.Value.ToString("0"),
                                                      dictionarys.DisplayVariables[dv].Length);
                    }
                    break;

                case DisplayVarsEnum.FuelGallons:
                    float fuelGallons = e.TelemetryInfo.FuelLevel.Value * 0.26417f;
                    if (fuelGallons < 100)
                    {
                        displayString += RightJustify(fuelGallons.ToString("0.0"),
                                                      dictionarys.DisplayVariables[dv].Length + 1);
                    }
                    else
                    {
                        displayString += RightJustify(fuelGallons.ToString("0"),
                                                      dictionarys.DisplayVariables[dv].Length);
                    }
                    break;

                case DisplayVarsEnum.FuelPCT:
                    if (e.TelemetryInfo.FuelLevelPct.Value >= 100)
                    {
                        displayString += "100";
                    }
                    else
                    {
                        displayString += RightJustify((e.TelemetryInfo.FuelLevelPct.Value * 100).ToString("0.0"),
                                                      dictionarys.DisplayVariables[dv].Length + 1);
                    }
                    break;

                case DisplayVarsEnum.FuelBurnRate:
                    if (savedTelemetry.Fuel.BurnRate >= 0.01f)
                    {
                        displayString += RightJustify(savedTelemetry.Fuel.BurnRate.ToString("0.00"), dictionarys.DisplayVariables[dv].Length + 1);
                    }
                    else
                    {
                        displayString += "_.__";
                    }
                    break;

                case DisplayVarsEnum.FuelBurnRateGallons:
                    //System.Diagnostics.Debug.WriteLine(String.Format("FuelBurnGallons"));
                    float burnRateGallons = savedTelemetry.Fuel.BurnRate * 0.26417f;
                    //System.Diagnostics.Debug.WriteLine(String.Format("          Value: {0}",burnRateGallons));
                    if (burnRateGallons >= 0.01f)
                    {
                        displayString += RightJustify(burnRateGallons.ToString("0.00"), dictionarys.DisplayVariables[dv].Length + 1);
                    }
                    else
                    {
                        displayString += "_.__";
                    }
                    break;

                case DisplayVarsEnum.FuelLapsLeft:
                    if (savedTelemetry.Fuel.LapsLeft > 100)
                    {
                        displayString += RightJustify(savedTelemetry.Fuel.LapsLeft.ToString("0"), dictionarys.DisplayVariables[dv].Length);
                    }
                    else if (savedTelemetry.Fuel.LapsLeft >= 0.1f)
                    {
                        displayString += RightJustify(savedTelemetry.Fuel.LapsLeft.ToString("0.0"), dictionarys.DisplayVariables[dv].Length + 1);
                    }
                    else
                    {
                        displayString += "_._";
                    }
                    break;

                case DisplayVarsEnum.LongG:
                    displayString += RightJustify(
                        (e.TelemetryInfo.LongAccel.Value / 10).ToString(" 0.0;-0.0; 0.0"),
                        dictionarys.DisplayVariables[dv].Length + 1);
                    break;

                case DisplayVarsEnum.LatG:
                    displayString += RightJustify(
                        (e.TelemetryInfo.LatAccel.Value / 10).ToString(" 0.0;-0.0; 0.0"),
                        dictionarys.DisplayVariables[dv].Length + 1);
                    break;

                case DisplayVarsEnum.TotalG:
                    displayString +=
                        RightJustify(
                            (Math.Sqrt(e.TelemetryInfo.LongAccel.Value * e.TelemetryInfo.LongAccel.Value +
                                       e.TelemetryInfo.LatAccel.Value * e.TelemetryInfo.LatAccel.Value) / 10)
                            .ToString(" 0.0;-0.0; 0.0"), dictionarys.DisplayVariables[dv].Length + 1);
                    break;

                case DisplayVarsEnum.Position:
                    displayString +=
                        RightJustify(savedTelemetry.Position.ToString(CultureInfo.InvariantCulture),
                                     dictionarys.DisplayVariables[dv].Length);
                    break;

                case DisplayVarsEnum.Space:
                    displayString += " ";
                    break;

                case DisplayVarsEnum.DoubleSpace:
                    displayString += "  ";
                    break;

                case DisplayVarsEnum.Underscore:
                    displayString += "_";
                    break;

                case DisplayVarsEnum.FuelPressure:
                    displayString += RightJustify(
                        (e.TelemetryInfo.FuelPress.Value).ToString(" 0.0;-0.0; 0.0"),
                        dictionarys.DisplayVariables[dv].Length + 1);
                    break;

                case DisplayVarsEnum.FuelPressurePSi:
                    displayString += RightJustify(
                        (e.TelemetryInfo.FuelPress.Value * 14.5f).ToString(" 0.0;-0.0; 0.0"),
                        dictionarys.DisplayVariables[dv].Length + 1);
                    break;

                case DisplayVarsEnum.ManifoldPressure:
                    displayString += RightJustify(
                        (e.TelemetryInfo.ManifoldPressure.Value).ToString(" 0.0;-0.0; 0.0"),
                        dictionarys.DisplayVariables[dv].Length + 1);
                    break;

                case DisplayVarsEnum.ManifoldPressurePSi:
                    displayString += RightJustify(
                        (e.TelemetryInfo.ManifoldPressure.Value * 14.5f).ToString(" 0.0;-0.0; 0.0"),
                        dictionarys.DisplayVariables[dv].Length + 1);
                    break;

                case DisplayVarsEnum.OilLevel:
                    displayString += RightJustify(
                        (e.TelemetryInfo.OilLevel.Value).ToString("0.0"),
                        dictionarys.DisplayVariables[dv].Length + 1);
                    break;

                case DisplayVarsEnum.OilPressure:
                    displayString += RightJustify(
                        (e.TelemetryInfo.OilPress.Value).ToString("0.0"),
                        dictionarys.DisplayVariables[dv].Length + 1);
                    break;

                case DisplayVarsEnum.OilTemp:
                    displayString += RightJustify(
                        (e.TelemetryInfo.OilTemp.Value).ToString("000"),
                        dictionarys.DisplayVariables[dv].Length);
                    break;

                case DisplayVarsEnum.OilLevelGallons:
                    displayString += RightJustify(
                        (e.TelemetryInfo.OilLevel.Value * 0.26417f).ToString("0.0"),
                        dictionarys.DisplayVariables[dv].Length + 1);
                    break;

                case DisplayVarsEnum.OilPressurePSi:
                    displayString += RightJustify(
                        (e.TelemetryInfo.OilPress.Value * 14.5f).ToString("0.0"),
                        dictionarys.DisplayVariables[dv].Length + 1);
                    break;

                case DisplayVarsEnum.OilTempFahrenheit:
                    displayString += RightJustify(
                        ((e.TelemetryInfo.OilTemp.Value) * 9f / 5f + 32).ToString("000"),
                        dictionarys.DisplayVariables[dv].Length);
                    break;

                case DisplayVarsEnum.Pitch:
                    displayString += RightJustify(
                        (e.TelemetryInfo.Pitch.Value * 57.2957795).ToString(" 0.0;-0.0; 0.0"),
                        dictionarys.DisplayVariables[dv].Length + 1);
                    break;

                case DisplayVarsEnum.PitchRate:
                    displayString += RightJustify(
                        (e.TelemetryInfo.PitchRate.Value * 57.2957795).ToString(" 0.0;-0.0; 0.0"),
                        dictionarys.DisplayVariables[dv].Length + 1);
                    break;

                case DisplayVarsEnum.Roll:
                    displayString += RightJustify(
                        (e.TelemetryInfo.Roll.Value * 57.2957795).ToString(" 0.0;-0.0; 0.0"),
                        dictionarys.DisplayVariables[dv].Length + 1);
                    break;

                case DisplayVarsEnum.RollRate:
                    displayString += RightJustify(
                        (e.TelemetryInfo.RollRate.Value * 57.2957795).ToString(" 0.0;-0.0; 0.0"),
                        dictionarys.DisplayVariables[dv].Length + 1);
                    break;

                case DisplayVarsEnum.Yaw:
                    displayString += RightJustify(
                        (e.TelemetryInfo.Yaw.Value * 57.2957795).ToString(" 00;-00; 00"),
                        dictionarys.DisplayVariables[dv].Length);
                    break;

                case DisplayVarsEnum.YawRate:
                    displayString += RightJustify(
                        (e.TelemetryInfo.YawRate.Value * 57.2957795).ToString(" 00;-00; 00"),
                        dictionarys.DisplayVariables[dv].Length);
                    break;

                case DisplayVarsEnum.SteeringWheelAngle:
                    displayString += RightJustify(
                        (e.TelemetryInfo.SteeringWheelAngle.Value * 57.2957795).ToString(" 000;-000; 000"),
                        dictionarys.DisplayVariables[dv].Length);
                    break;

                case DisplayVarsEnum.EngineVoltage:
                    displayString += RightJustify(
                        (e.TelemetryInfo.Voltage.Value).ToString("00.0"),
                        dictionarys.DisplayVariables[dv].Length + 1);
                    break;

                case DisplayVarsEnum.EngineWaterLevel:
                    displayString += RightJustify(
                        (e.TelemetryInfo.WaterLevel.Value).ToString("0.0"),
                        dictionarys.DisplayVariables[dv].Length + 1);
                    break;

                case DisplayVarsEnum.EngineWaterTemp:
                    displayString += RightJustify(
                        (e.TelemetryInfo.WaterTemp.Value).ToString("000"),
                        dictionarys.DisplayVariables[dv].Length);
                    break;

                case DisplayVarsEnum.EngineWaterLevelGallons:
                    displayString += RightJustify(
                        (e.TelemetryInfo.WaterLevel.Value * 0.26417).ToString("0.0"),
                        dictionarys.DisplayVariables[dv].Length + 1);
                    break;

                case DisplayVarsEnum.EngineWaterTempFahrenheit:
                    displayString += RightJustify(
                        ((e.TelemetryInfo.WaterTemp.Value) * 9f / 5f + 32).ToString("000"),
                        dictionarys.DisplayVariables[dv].Length);
                    break;

                case DisplayVarsEnum.SessionLapsRemaining:
                    if (e.TelemetryInfo.SessionLapsRemaining != null)
                    {
                        displayString += RightJustify(
                            (e.TelemetryInfo.SessionLapsRemaining.Value).ToString("000"),
                            dictionarys.DisplayVariables[dv].Length);
                    }
                    break;

                case DisplayVarsEnum.SessionTime:
                    if (e.TelemetryInfo.SessionTime != null)
                    {
                        var tempST = new TimeSpan(0, 0, Convert.ToInt32(e.TelemetryInfo.SessionTime.Value));
                        displayString += RightJustify(
                            String.Format("{0}-{1}.{2}", tempST.Hours.ToString("0"),
                                          tempST.Minutes.ToString("00"), tempST.Seconds.ToString("00")),
                            dictionarys.DisplayVariables[dv].Length + 1);
                    }
                    break;

                case DisplayVarsEnum.SessionTimeRemaining:
                    if (e.TelemetryInfo.SessionTimeRemaining != null)
                    {
                        var tempStr = new TimeSpan(0, 0,
                                                   Convert.ToInt32(e.TelemetryInfo.SessionTimeRemaining.Value));
                        displayString += RightJustify(
                            String.Format("{0}-{1}.{2}", tempStr.Hours.ToString("0"),
                                          tempStr.Minutes.ToString("00"), tempStr.Seconds.ToString("00")),
                            dictionarys.DisplayVariables[dv].Length + 1);
                    }
                    break;

                case DisplayVarsEnum.LapsSinceLastPit:
                    displayString += e.TelemetryInfo.Lap.Value - savedTelemetry.LapLastPited;
                    break;
                }
            }
            return(displayString);
        }
コード例 #2
0
ファイル: LapDisplays.cs プロジェクト: kidBrazil/iRduino
        public static string BuildLapDisplayString(LapDisplayStylesEnum lapstyle, SavedTelemetryValues savedTelemetry)
        {
            string displayString = "";

            switch (lapstyle)
            {
            case LapDisplayStylesEnum.LapTimeDeltaPersonal:
                if (savedTelemetry.PersonalBestLap > 1)
                {
                    displayString = String.Format(
                        "{0}{1}",
                        LapTimeParserShort(Convert.ToSingle(savedTelemetry.LastLapTimeMeasured)),
                        (savedTelemetry.LastLapTimeMeasured - savedTelemetry.PersonalBestLap).ToString(
                            " 0.00;-0.00; 0.00"));
                }
                else
                {
                    displayString = String.Format(
                        "{0}{1}",
                        LapTimeParserShort(Convert.ToSingle(savedTelemetry.LastLapTimeMeasured)),
                        "nrEF");
                }
                break;

            case LapDisplayStylesEnum.LapTimeDeltaOverall:
                if (savedTelemetry.Overallbestlap > 1)
                {
                    displayString = String.Format(
                        "{0}{1}",
                        LapTimeParserShort(Convert.ToSingle(savedTelemetry.LastLapTimeMeasured)),
                        (savedTelemetry.LastLapTimeMeasured - savedTelemetry.Overallbestlap).ToString(
                            " 0.00;-0.00; 0.00"));
                }
                else
                {
                    displayString = String.Format(
                        "{0}{1}",
                        LapTimeParserShort(Convert.ToSingle(savedTelemetry.LastLapTimeMeasured)),
                        "nrEF");
                }
                break;

            case LapDisplayStylesEnum.LapTimeDeltaClassOverall:
                if (savedTelemetry.ClassBestLap > 1)
                {
                    displayString = String.Format(
                        "{0}{1}",
                        LapTimeParserShort(Convert.ToSingle(savedTelemetry.LastLapTimeMeasured)),
                        (savedTelemetry.LastLapTimeMeasured - savedTelemetry.ClassBestLap).ToString(
                            " 0.00;-0.00; 0.00"));
                }
                else
                {
                    displayString = String.Format(
                        "{0}{1}",
                        LapTimeParserShort(Convert.ToSingle(savedTelemetry.LastLapTimeMeasured)),
                        "nrEF");
                }
                break;

            case LapDisplayStylesEnum.FullLapTime:
                displayString = String.Format(
                    "  {0}", LapTimeParser(Convert.ToSingle(savedTelemetry.LastLapTimeMeasured)));
                break;

            case LapDisplayStylesEnum.DualDeltas:     //personal overall
                if (savedTelemetry.PersonalBestLap > 1 && savedTelemetry.Overallbestlap > 1)
                {
                    displayString = String.Format(
                        "{0}{1}",
                        (savedTelemetry.LastLapTimeMeasured - savedTelemetry.PersonalBestLap).ToString(
                            " 0.00;-0.00; 0.00"),
                        (savedTelemetry.LastLapTimeMeasured - savedTelemetry.Overallbestlap).ToString(
                            " 0.00;-0.00; 0.00"));
                }
                else if (savedTelemetry.PersonalBestLap > 1)
                {
                    //show only my personal delta
                    displayString = String.Format(
                        "{0}{1}",
                        (savedTelemetry.LastLapTimeMeasured - savedTelemetry.PersonalBestLap).ToString(
                            " 0.00;-0.00; 0.00"),
                        "nrEF");
                }
                else if (savedTelemetry.Overallbestlap > 1)
                {
                    // show only overall delta
                    displayString = String.Format(
                        "{0}{1}",
                        "nrEF",
                        (savedTelemetry.LastLapTimeMeasured - savedTelemetry.Overallbestlap).ToString(
                            " 0.00;-0.00; 0.00"));
                }
                break;
            }
            return(displayString);
        }