Unre4alKing!23
New Member
How would I log data from my .py file in Assetto Corsa once the session is over to another like application? I have tried doing it before but it failed and I need some help. When I mean logging I mean like logging data like lap count speed throttle brake gear fuel and normTrackPos logged into a .csv file
Python:
import sys
import os
from third_party import sim_info
import ac
import acsys
# Labels for telemetry data
l_lapcount = 0
l_speed = 0
l_throttle = 0
l_brake = 0
l_gear = 0
l_rpm = 0
l_fuel = 0
l_normalizedTrackPos = 0 # <-- Add this
lapcount = 0 # Stores the current lap count
def acMain(ac_version):
global l_lapcount, l_speed, l_throttle, l_brake, l_gear, l_rpm, l_fuel, l_normalizedTrackPos
appWindow = ac.newApp("LapTimeML")
ac.setSize(appWindow, 250, 220) # Increased size for extra label
ac.log("Telemetry App Initialized")
ac.console("Telemetry App Running...")
# Lap Count
l_lapcount = ac.addLabel(appWindow, "Laps: 0")
ac.setPosition(l_lapcount, 3, 30)
# Speed (km/h)
l_speed = ac.addLabel(appWindow, "Speed: 0 km/h")
ac.setPosition(l_speed, 3, 50)
# Throttle
l_throttle = ac.addLabel(appWindow, "Throttle: 0%")
ac.setPosition(l_throttle, 3, 70)
# Brake
l_brake = ac.addLabel(appWindow, "Brake: 0%")
ac.setPosition(l_brake, 3, 90)
# Gear
l_gear = ac.addLabel(appWindow, "Gear: N")
ac.setPosition(l_gear, 3, 110)
# RPM
l_rpm = ac.addLabel(appWindow, "RPM: 0")
ac.setPosition(l_rpm, 3, 130)
# Fuel
l_fuel = ac.addLabel(appWindow, "Fuel: 0L")
ac.setPosition(l_fuel, 3, 150)
# Normalized Track Position
l_normalizedTrackPos = ac.addLabel(appWindow, "Track Pos: 0.000")
ac.setPosition(l_normalizedTrackPos, 3, 170) # Position below fuel label
return "LapTimeML"
def acUpdate(deltaT):
global l_lapcount, l_speed, l_throttle, l_brake, l_gear, l_rpm, l_fuel, lapcount, l_normalizedTrackPos
# Fetch data from Assetto Corsa
laps = ac.getCarState(0, acsys.CS.LapCount)
speed = ac.getCarState(0, acsys.CS.SpeedKMH)
throttle = ac.getCarState(0, acsys.CS.Gas) * 100 # Convert to percentage
brake = ac.getCarState(0, acsys.CS.Brake) * 100 # Convert to percentage
gear = ac.getCarState(0, acsys.CS.Gear)
rpm = ac.getCarState(0, acsys.CS.RPM)
fuele = sim_info.info.physics.fuel
# Normalized track position (0 to 1)
track_pos = sim_info.info.graphics.normalizedCarPosition
# Update labels
if laps > lapcount:
lapcount = laps
ac.setText(l_lapcount, "Laps: {}".format(lapcount))
ac.setText(l_speed, "Speed: {:.1f} km/h".format(speed))
ac.setText(l_throttle, "Throttle: {:.0f}%".format(throttle))
ac.setText(l_brake, "Brake: {:.0f}%".format(brake))
ac.setText(l_gear, "Gear: {}".format(gear if gear > 0 else "N"))
ac.setText(l_rpm, "RPM: {}".format(rpm))
ac.setText(l_fuel, "Fuel: {:.2f}L".format(fuele)) # Display fuel with 2 decimal places
ac.setText(l_normalizedTrackPos, "Track Pos: {:.3f}".format(track_pos)) # Show track position
Last edited: