Пример #1
0
        private void commTimer_Tick(object sender, EventArgs e)
        {
            try
            {
                if (currentPort.IsOpen && (Ets2ProcessHelper.IsEts2Running && Ets2TelemetryDataReader.Instance.IsConnected))
                {
                    IEts2TelemetryData data = Ets2TelemetryDataReader.Instance.Read();
                    float speed             = data.Truck.Speed; // km/h
                    float angle             = data.Truck.GameSteer;
                    // string dataToSend = "S:" + speed + "&" + "A:" + angle + "|"; // Format: S:{Speed}&A:{Angle}|
                    // string dataToSend = "{\"inParkMode\":\"" + data.Truck.ParkBrakeOn + "\",\"speed\":\"" + speed + "\",\"angle\":\"" + angle + "\"}"; // Format: S:{Speed}&A:{Angle}|
                    string dataToSend = "{\"inParkMode\":\"" + data.Truck.ParkBrakeOn + "\",\"speed\":" + speed + ",\"angle\":" + angle + "}"; // Format: S:{Speed}&A:{Angle}|
                    Console.Write(dataToSend);
                    currentPort.Write(dataToSend);
                }

                /*int intReturnASCII = 0;
                 * int count = currentPort.BytesToRead;
                 * string returnMessage = "";
                 * while (count > 0)
                 * {
                 *  intReturnASCII = currentPort.ReadByte();
                 *  returnMessage = returnMessage + Convert.ToChar(intReturnASCII);
                 *  count--;
                 * }
                 * if (returnMessage != "")
                 * {
                 *
                 * }*/
                // Console.WriteLine("Message: " + returnMessage);
            } catch (Exception ex)
            {
                Log.Error(ex);
            }
        }
Пример #2
0
 async void broadcastTimer_Tick(object sender, EventArgs e)
 {
     try
     {
         broadcastTimer.Enabled = false;
         IEts2TelemetryData data = Ets2TelemetryDataReader.Instance.Read();
         float speed             = data.Truck.Speed; // km/h
         if (currentPort.IsOpen)
         {
             currentPort.Write(speed.ToString());
         }
         await _broadcastHttpClient.PostAsJsonAsync(BroadcastUrl, data);
     }
     catch (Exception ex)
     {
         Log.Error(ex);
     }
     broadcastTimer.Enabled = true;
 }
Пример #3
0
        //Telemetry update
        private void tmrUpdate_Tick(object sender, EventArgs e)
        {
            if (etsData.IsConnected)
            {
                if (lblETS.ForeColor != Color.DarkGreen)
                {
                    lblETS.Text      = "ETS2 detected";
                    lblETS.ForeColor = Color.DarkGreen;
                }

                //Reads all the telemetry data from the game and parses everything. Currently inneficient.
                IEts2TelemetryData data = etsData.Read();

                variaveis["data_speed"] = data.Truck.Speed.ToString("N0");

                if (data.Truck.DisplayedGear > 0)
                {
                    variaveis["data_gear"] = data.Truck.DisplayedGear.ToString("N0");
                }
                else if (data.Truck.DisplayedGear == 0)
                {
                    variaveis["data_gear"] = "N";
                }
                else
                {
                    variaveis["data_gear"] = "R" + Math.Abs(data.Truck.DisplayedGear).ToString();
                }

                variaveis["data_gear"]   = data.Truck.DisplayedGear >= 0 ? data.Truck.DisplayedGear.ToString("N0") : "R" + Math.Abs(data.Truck.DisplayedGear).ToString();
                variaveis["data_cruise"] = data.Truck.CruiseControlSpeed.ToString("N0");
                variaveis["data_fuel"]   = data.Truck.Fuel.ToString("N0") + " / " + data.Truck.FuelCapacity.ToString() + " liters";
                variaveis["data_oilp"]   = data.Truck.OilPressure.ToString("N0") + " psi";
                variaveis["data_oilt"]   = data.Truck.OilTemperature.ToString("N0") + " ºC";
                variaveis["data_watert"] = data.Truck.WaterTemperature.ToString("N0") + " ºC";
                variaveis["data_airpr"]  = data.Truck.AirPressure.ToString("N0") + " psi";
                variaveis["data_limit"]  = data.Navigation.SpeedLimit.ToString("N0");

                bool[] states = new bool[25];
                states[0]  = data.Truck.CruiseControlOn;
                states[1]  = data.Truck.WipersOn;
                states[2]  = data.Truck.ParkBrakeOn;
                states[3]  = data.Truck.MotorBrakeOn;
                states[4]  = data.Truck.EngineOn;
                states[5]  = data.Truck.ElectricOn;
                states[6]  = data.Truck.BlinkerLeftActive;
                states[7]  = data.Truck.BlinkerRightActive;
                states[8]  = data.Truck.BlinkerLeftOn;
                states[9]  = data.Truck.BlinkerRightOn;
                states[10] = data.Truck.LightsParkingOn;
                states[11] = data.Truck.LightsBeamLowOn;
                states[12] = data.Truck.LightsBeamHighOn;
                states[13] = data.Truck.LightsAuxFrontOn;
                states[14] = data.Truck.LightsAuxRoofOn;
                states[15] = data.Truck.LightsBeaconOn;
                states[16] = data.Truck.LightsBrakeOn;
                states[17] = data.Truck.LightsReverseOn;
                states[18] = data.Truck.BatteryVoltageWarningOn;
                states[19] = data.Truck.AirPressureWarningOn;
                states[20] = data.Truck.AirPressureEmergencyOn;
                states[21] = data.Truck.AdblueWarningOn;
                states[22] = data.Truck.OilPressureWarningOn;
                states[23] = data.Truck.WaterTemperatureWarningOn;
                states[24] = data.Truck.BlinkerLeftOn && data.Truck.BlinkerRightOn;

                if (!data.Truck.LightsBeamLowOn)
                {
                    states[12] = false;
                }

                //Prepares the string to be sent with websockets (pattern: variable1@value1|variable2@value2 ... )
                string dataSend = "";

                //Telemetry info (speed, gear, ...)
                foreach (var variavel in variaveis)
                {
                    dataSend += variavel.Key + "@" + variavel.Value + "|";
                }

                //Button light info (wipers, lights, ...)
                for (int i = 0; i < states.Length; i++)
                {
                    dataSend += i + "@" + (states[i] == true ? "1" : "0") + "|";
                }

                SendMessage(dataSend);
            }
            else
            {
                if (lblETS.ForeColor != Color.DarkRed)
                {
                    lblETS.Text      = "ETS2 not detected";
                    lblETS.ForeColor = Color.DarkRed;
                }
            }
        }
Пример #4
0
 public void UpdateTelemetryData(IEts2TelemetryData telemetry)
 {
     this.telemetry = telemetry;
 }