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); } }
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; }
//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; } } }
public void UpdateTelemetryData(IEts2TelemetryData telemetry) { this.telemetry = telemetry; }