Page 1 of 5 123 ... LastLast
Results 1 to 10 of 49

Thread: Custom Runlog Pages

  1. #1

    Default Custom Runlog Pages

    Some time ago, there was a discussion about sharing custom runlog pages. I've been playing around with making some new pages and I thought I would share them. Below are screen captures and the source code which created the page. I'm hoping that others will share some of the pages that they have come up with.

    For those that aren't aware, if a user has the proper security key or level, the DataLinkII software can allow a user to customize the region below the main plot window. Creating one of these new pages or modifying an existing page requires a bit of programming. The programming language is documented in the help topics of DataLinkII under "The Run Log Language Reference Manual." To modify or create new pages, you go to the "Runlog" drop down menu and then select "Edit Log Definition." From there, you can select a Runlog page and edit it or create a new one. If you don't have the required security level, this option will be grayed out and not selectable. Unfortunately, I can not help you gain the proper permissions for Runlog editing. If you contact Racepak, they should be able to help you.

    An unfortunate thing about these pages is that they likely will require some tune-ups to work with your configuration. If you don't have the channels labeled as I do, or don't have certain pieces of data, then the pages will probably look different. But with some editing (if you can), you should be able to tune them up for your installation. I've borrowed some of the code from Racepak and changed things around a little.

    Within DataLinkII, I've made a log book which I call "Car Health." Within this log book, I've created a number of pages which plot temps, pressures, parameters associated with braking, power, etc. You can see some of the tabs in the picture below (see the attached picture). The series of X-Y plots cover the span of data shown in the main plot window for the lap selected.



    The code which created this Runlog page is:

    <TITLE CATEGORY="Car Health">Pressures</TITLE>
    <ORIGIN>
    <TAB DLGUNITS=5> Run: <INPUT TYPE=staticbox VALUE="$FileName" SIZE = 80> Page Contains Data Covering The Time Shown In The Plot Window Above
    <ORIGIN>
    <BR LINES =2>

    <CHART
    XNAME="Engine RPM" YNAME="Oil Pressure" SYMBOL=Point
    TIMEMIN="$ChartTimeMin" TIMEMAX="$ChartTimeMax"
    XMIN="$IOName2Min(Engine RPM)" XMAX="$IOName2Max(Engine RPM)"
    YMIN="$IOName2Min(Oil Pressure)" YMAX ="$IOName2Max(Oil Pressure)"
    GRID=BLACK() BACKGROUND=GREY() FOREGROUND=RED()
    ROWS=20 COLS=60
    RESETBY=($ChartTimeMin,$ChartTimeMax,$Lap)
    UPDATEDBY = ($CarretTime)
    >

    <CHART
    XNAME="Lateral G" YNAME="Oil Pressure" SYMBOL=Point
    TIMEMIN="$ChartTimeMin" TIMEMAX="$ChartTimeMax"
    XMIN="$IOName2Min(Lateral G)" XMAX="$IOName2Max(Lateral G)"
    YMIN="$IOName2Min(Oil Pressure)" YMAX ="$IOName2Max(Oil Pressure)"
    GRID=BLACK() BACKGROUND=GREY() FOREGROUND=RED()
    ROWS=20 COLS=60
    RESETBY=($ChartTimeMin,$ChartTimeMax,$Lap)
    UPDATEDBY = ($CarretTime)
    >

    <CHART
    XNAME="Accel G" YNAME="Oil Pressure" SYMBOL=Point
    TIMEMIN="$ChartTimeMin" TIMEMAX="$ChartTimeMax"
    XMIN="$IOName2Min(Accel G)" XMAX="$IOName2Max(Accel G)"
    YMIN="$IOName2Min(Oil Pressure)" YMAX ="$IOName2Max(Oil Pressure)"
    GRID=BLACK() BACKGROUND=GREY() FOREGROUND=RED()
    ROWS=20 COLS=60
    RESETBY=($ChartTimeMin,$ChartTimeMax,$Lap)
    UPDATEDBY = ($CarretTime)
    >

    <CHART
    XNAME="Total G" YNAME="Oil Pressure" SYMBOL=Point
    TIMEMIN="$ChartTimeMin" TIMEMAX="$ChartTimeMax"
    XMIN="$IOName2Min(Total G)" XMAX="$IOName2Max(Total G)"
    YMIN="$IOName2Min(Oil Pressure)" YMAX ="$IOName2Max(Oil Pressure)"
    GRID=BLACK() BACKGROUND=GREY() FOREGROUND=RED()
    ROWS=20 COLS=60
    RESETBY=($ChartTimeMin,$ChartTimeMax,$Lap)
    UPDATEDBY = ($CarretTime)
    >

    <TAB DLGUNITS=506>

    <CHART ASPECTRATIO
    XNAME="@_MAP_CircleTrack_Channel :Run_PosX" YNAME="@_MAP_CircleTrack_Channel :Run_PosY" WIDTH=1 COLS=30 ROWS=10
    TIMEMIN="$LapStartTime" TIMEMAX="$LapEndTime"
    XMIN="$IOName2Min(@_MAP_CircleTrack_Channel :Plot_RefX)" XMAX="$IOName2Max(@_MAP_CircleTrack_Channel :Plot_RefX)"
    YMIN="$IOName2Min(@_MAP_CircleTrack_Channel :Plot_RefY)" YMAX="$IOName2Max(@_MAP_CircleTrack_Channel :Plot_RefY)"
    FOREGROUND="GREY()" GRID="GREY()" BACKGROUND="GREY()"
    RESETBY=($LapStartTime) UPDATEDBY=($LapStartTime,$CarretTime)>

    <CHART ATTACH2PREV ASPECTRATIO
    XNAME= "@_MAP_CircleTrack_Channel :Plot_RefX" YNAME="@_MAP_CircleTrack_Channel :Plot_RefY" WIDTH=2 COLS=80 ROWS=32
    TIMEMIN="$ChannelTimeMin(@_MAP_CircleTrack_Channel :Plot_RefX)" TIMEMAX="$ChannelTimeMax(@_MAP_CircleTrack_Channel :Plot_RefX)"
    XMIN="$IOName2Min(@_MAP_CircleTrack_Channel :Plot_RefX)" XMAX="$IOName2Max(@_MAP_CircleTrack_Channel :Plot_RefX)"
    YMIN="$IOName2Min(@_MAP_CircleTrack_Channel :Plot_RefY)" YMAX="$IOName2Max(@_MAP_CircleTrack_Channel :Plot_RefY)"
    FOREGROUND="WHITE()" BACKGROUND="GREY()"
    RESETBY=($LapStartTime) UPDATEDBY=($LapStartTime,$CarretTime)>

    <CHART ATTACH2PREV ASPECTRATIO ZSTYLE=OnOff
    XNAME="@_MAP_CircleTrack_Channel :Plot_RefX" YNAME="@_MAP_CircleTrack_Channel :Plot_RefY" ZNAME="@_MAP_CircleTrack_Channel :Plot_SegT" WIDTH=2 COLS=80 ROWS=32
    TIMEMIN="$ChannelTimeMin(@_MAP_CircleTrack_Channel :Plot_RefX)" TIMEMAX="$ChannelTimeMax(@_MAP_CircleTrack_Channel :Plot_RefX)"
    XMIN="$IOName2Min(@_MAP_CircleTrack_Channel :Plot_RefX)" XMAX="$IOName2Max(@_MAP_CircleTrack_Channel :Plot_RefX)"
    YMIN="$IOName2Min(@_MAP_CircleTrack_Channel :Plot_RefY)" YMAX="$IOName2Max(@_MAP_CircleTrack_Channel :Plot_RefY)"
    FOREGROUND="BLUE()" BACKGROUND="GREY()"
    RESETBY=($LapStartTime) UPDATEDBY=($LapStartTime,$CarretTime)>

    <BR LINES =21>
    <CHART
    XNAME="Oil Temp" YNAME="Oil Pressure" SYMBOL=Point
    TIMEMIN="$ChartTimeMin" TIMEMAX="$ChartTimeMax"
    XMIN=160 XMAX=280 YMIN=10 YMAX=80
    GRID=BLACK() BACKGROUND=GREY() FOREGROUND=RED()
    ROWS=20 COLS=60
    RESETBY=($ChartTimeMin,$ChartTimeMax,$Lap)
    UPDATEDBY = ($CarretTime)
    >

    <ORIGIN>
    <BR LINES =23>
    <TAB DLGUNITS= 470>CUR
    <TAB DLGUNITS= 530>AVG
    <TAB DLGUNITS= 590>MIN
    <TAB DLGUNITS= 650>MAX
    <BR LINES=2>

    <TAB DLGUNITS= 380>Engine RPM:
    <TAB DLGUNITS=455><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap,$CarretTime) IN="$IOName2FmtVal(Engine RPM)" >
    <TAB DLGUNITS= 515><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanAvg(Engine RPM,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 575><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMin(Engine RPM,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 635><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMax(Engine RPM,$ChartTimeMin,$ChartTimeMax)">


    <TAB DLGUNITS= 380>Oil Pressure:
    <TAB DLGUNITS=455><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap,$CarretTime) IN="$IOName2FmtVal(Oil Pressure)" >
    <TAB DLGUNITS= 515><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanAvg(Oil Pressure,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 575><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMin(Oil Pressure,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 635><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMax(Oil Pressure,$ChartTimeMin,$ChartTimeMax)">
    Another page which I have recently created is shown below. I haven't used it very much but I think it will be quite useful. You use the [ and ] keys to select the region of data in the main plot window and the plots below will (should!) update. You might have to switch off the page and then come back. The data from the reference lap is shown in red and the current lap in blue. This page allows you to see a number of parameters at the same time without the clutter of all the data being on a single plot. (see the attached picture)



    <TITLE CATEGORY = "MAP Analysis">Split Charts </TITLE>
    COMPUTED for CURRENT LAP:<BR LINES=2>
    <TAB DLGUNITS=10> Run: <INPUT TYPE=staticbox VALUE="$FileName" SIZE = 43>
    <TAB DLGUNITS=120> Lap: <INPUT TYPE=staticbox VALUE="$Lap" UPDATEDBY=($Lap) SIZE = 4>
    <TAB DLGUNITS= 180>Time: <INPUT TYPE=staticbox VALUE="$FmtMinSec($LapTime($Lap))" UPDATEDBY=($Lap) SIZE = 11><BR LINES=2>

    <ORIGIN>
    <TAB DLGUNITS= 335>COMPUTED for REFERENCE LAP:<BR LINES=2>
    <TAB DLGUNITS= 340>Run: <INPUT TYPE=staticbox VALUE="$RefRun($FileName)" SIZE = 43 UPDATEDBY = ($RefRun)>
    <TAB DLGUNITS=450> Lap: <INPUT TYPE=staticbox VALUE="$RefLap" UPDATEDBY=($RefLap) SIZE = 4>
    <TAB DLGUNITS= 505>Time: <INPUT TYPE=staticbox VALUE="$FmtMinSec($RefRun($LapTime($RefLap)))" UPDATEDBY=($RefLap,$RefRun) SIZE = 11>

    <ORIGIN>
    <TAB DLGUNITS= 665>USE [ AND ] IN WINDOW ABOVE TO SELECT THE REGION TO BE PLOTTED BELOW

    <TAB DLGUNITS= 678>FOR CONSISTENCY, THE ABOVE WINDOW SHOULD BE IN DISTANCE MODE

    <TAB DLGUNITS= 690>BLUE LINES ARE FOR CURRENT LAP, RED LINES ARE FOR REF LAP


    <CHART
    XNAME ="GPS_LapX" YNAME ="Accel G" WIDTH =1 ROWS=15 COLS =80
    TIMEMIN = $LapStartTime($Lap)+.1 TIMEMAX=$LapEndTime($Lap)-.1
    XMIN= "$IOName2FmtVal(GPS_LapX,$AvgTimeMin)" XMAX ="$IOName2FmtVal(GPS_LapX,$AvgTimeMax)"
    YMIN= "$IOName2Min(Accel G)" YMAX ="$IOName2Max(Accel G)"
    GRID ="BLACK()" FOREGROUND = "BLUE()" BACKGROUND="GREY()"
    RESETBY=($RefRun,$RefLap,$Lap,$AvgTimeMin,$AvgTime Max) UPDATEDBY=($Lap,$RefLap,$CarretTime)
    >
    <CHART ATTACH2PREV REFERENCE
    XNAME ="GPS_LapX" YNAME ="Accel G" WIDTH =1 ROWS=15 COLS =80
    TIMEMIN = "$RefRun($LapStartTime($RefLap))+1" TIMEMAX= "$RefRun($LapEndTime($RefLap))-1"
    XMIN= "$RefRun($IOName2FmtVal(GPS_LapX,$AvgTimeMin)) " XMAX ="$RefRun($IOName2FmtVal(GPS_LapX,$AvgTimeMax)) "
    YMIN= "$IOName2Min(Accel G)" YMAX ="$IOName2Max(Accel G)"
    GRID ="BLACK()" FOREGROUND = "RED()" BACKGROUND = "GRAY()"
    RESETBY=($RefRun,$RefLap,$AvgTimeMin,$AvgTimeMax) UPDATEDBY=($RefRun,$RefLap,$CarretTime)
    >

    <TAB DLGUNITS=335>

    <CHART
    XNAME ="GPS_LapX" YNAME ="Lateral G" WIDTH =1 ROWS=15 COLS =80
    TIMEMIN = $LapStartTime($Lap)+.1 TIMEMAX=$LapEndTime($Lap)-.1
    XMIN= "$IOName2FmtVal(GPS_LapX,$AvgTimeMin)" XMAX ="$IOName2FmtVal(GPS_LapX,$AvgTimeMax)"
    YMIN= "$IOName2Min(Lateral G)" YMAX ="$IOName2Max(Lateral G)"
    GRID ="BLACK()" FOREGROUND = "BLUE()" BACKGROUND="GREY()"
    RESETBY=($RefRun,$RefLap,$Lap,$AvgTimeMin,$AvgTime Max) UPDATEDBY=($Lap,$RefLap,$CarretTime)
    >
    <CHART ATTACH2PREV REFERENCE
    XNAME ="GPS_LapX" YNAME ="Lateral G" WIDTH =1 ROWS=15 COLS =80
    TIMEMIN = "$RefRun($LapStartTime($RefLap))+1" TIMEMAX= "$RefRun($LapEndTime($RefLap))-1"
    XMIN= "$RefRun($IOName2FmtVal(GPS_LapX,$AvgTimeMin)) " XMAX ="$RefRun($IOName2FmtVal(GPS_LapX,$AvgTimeMax)) "
    YMIN= "$IOName2Min(Lateral G)" YMAX ="$IOName2Max(Lateral G)"
    GRID ="BLACK()" FOREGROUND = "RED()" BACKGROUND = "GREY()"
    RESETBY=($RefRun,$RefLap,$AvgTimeMin,$AvgTimeMax) UPDATEDBY=($RefRun,$RefLap,$CarretTime)
    >

    <TAB DLGUNITS=665>

    <CHART
    XNAME ="GPS_LapX" YNAME ="Total G" WIDTH =1 ROWS=15 COLS =80
    TIMEMIN = $LapStartTime($Lap)+.1 TIMEMAX=$LapEndTime($Lap)-.1
    XMIN= "$IOName2FmtVal(GPS_LapX,$AvgTimeMin)" XMAX ="$IOName2FmtVal(GPS_LapX,$AvgTimeMax)"
    YMIN= "$IOName2Min(Total G)" YMAX ="$IOName2Max(Total G)"
    GRID ="BLACK()" FOREGROUND = "BLUE()" BACKGROUND="GREY()"
    RESETBY=($RefRun,$RefLap,$Lap,$AvgTimeMin,$AvgTime Max) UPDATEDBY=($Lap,$RefLap,$CarretTime)
    >
    <CHART ATTACH2PREV REFERENCE
    XNAME ="GPS_LapX" YNAME ="Total G" WIDTH =1 ROWS=15 COLS =80
    TIMEMIN = "$RefRun($LapStartTime($RefLap))+1" TIMEMAX= "$RefRun($LapEndTime($RefLap))-1"
    XMIN= "$RefRun($IOName2FmtVal(GPS_LapX,$AvgTimeMin)) " XMAX ="$RefRun($IOName2FmtVal(GPS_LapX,$AvgTimeMax)) "
    YMIN= "$IOName2Min(Total G)" YMAX ="$IOName2Max(Total G)"
    GRID ="BLACK()" FOREGROUND = "RED()" BACKGROUND = "GREY()"
    RESETBY=($RefRun,$RefLap,$AvgTimeMin,$AvgTimeMax) UPDATEDBY=($RefRun,$RefLap,$CarretTime)
    >

    <BR LINES=16>

    <CHART
    XNAME ="GPS_LapX" YNAME ="ABS Press" WIDTH =1 ROWS=15 COLS =80
    TIMEMIN = $LapStartTime($Lap)+.1 TIMEMAX=$LapEndTime($Lap)-.1
    XMIN= "$IOName2FmtVal(GPS_LapX,$AvgTimeMin)" XMAX ="$IOName2FmtVal(GPS_LapX,$AvgTimeMax)"
    YMIN= "$IOName2Min(ABS Press)" YMAX ="$IOName2Max(ABS Press)"
    GRID ="BLACK()" FOREGROUND = "BLUE()" BACKGROUND="GREY()"
    RESETBY=($RefRun,$RefLap,$Lap,$AvgTimeMin,$AvgTime Max) UPDATEDBY=($Lap,$RefLap,$CarretTime)
    >
    <CHART ATTACH2PREV REFERENCE
    XNAME ="GPS_LapX" YNAME ="ABS Press" WIDTH =1 ROWS=15 COLS =80
    TIMEMIN = "$RefRun($LapStartTime($RefLap))+1" TIMEMAX= "$RefRun($LapEndTime($RefLap))-1"
    XMIN= "$RefRun($IOName2FmtVal(GPS_LapX,$AvgTimeMin)) " XMAX ="$RefRun($IOName2FmtVal(GPS_LapX,$AvgTimeMax)) "
    YMIN= "$IOName2Min(ABS Press)" YMAX ="$IOName2Max(ABS Press)"
    GRID ="BLACK()" FOREGROUND = "RED()" BACKGROUND = "GRAY()"
    RESETBY=($RefRun,$RefLap,$AvgTimeMin,$AvgTimeMax) UPDATEDBY=($RefRun,$RefLap,$CarretTime)
    >

    <TAB DLGUNITS=335>

    <CHART
    XNAME ="GPS_LapX" YNAME ="Steering Angle" WIDTH =1 ROWS=15 COLS =80
    TIMEMIN = $LapStartTime($Lap)+.1 TIMEMAX=$LapEndTime($Lap)-.1
    XMIN= "$IOName2FmtVal(GPS_LapX,$AvgTimeMin)" XMAX ="$IOName2FmtVal(GPS_LapX,$AvgTimeMax)"
    YMIN= "$IOName2Min(Steering Angle)" YMAX ="$IOName2Max(Steering Angle)"
    GRID ="BLACK()" FOREGROUND = "BLUE()" BACKGROUND="GREY()"
    RESETBY=($RefRun,$RefLap,$Lap,$AvgTimeMin,$AvgTime Max) UPDATEDBY=($Lap,$RefLap,$CarretTime)
    >
    <CHART ATTACH2PREV REFERENCE
    XNAME ="GPS_LapX" YNAME ="Steering Angle" WIDTH =1 ROWS=15 COLS =80
    TIMEMIN = "$RefRun($LapStartTime($RefLap))+1" TIMEMAX= "$RefRun($LapEndTime($RefLap))-1"
    XMIN= "$RefRun($IOName2FmtVal(GPS_LapX,$AvgTimeMin)) " XMAX ="$RefRun($IOName2FmtVal(GPS_LapX,$AvgTimeMax)) "
    YMIN= "$IOName2Min(Steering Angle)" YMAX ="$IOName2Max(Steering Angle)"
    GRID ="BLACK()" FOREGROUND = "RED()" BACKGROUND = "GREY()"
    RESETBY=($RefRun,$RefLap,$AvgTimeMin,$AvgTimeMax) UPDATEDBY=($RefRun,$RefLap,$CarretTime)
    >

    <TAB DLGUNITS=665>

    <CHART
    XNAME ="GPS_LapX" YNAME ="Yaw Z" WIDTH =1 ROWS=15 COLS =80
    TIMEMIN = $LapStartTime($Lap)+.1 TIMEMAX=$LapEndTime($Lap)-.1
    XMIN= "$IOName2FmtVal(GPS_LapX,$AvgTimeMin)" XMAX ="$IOName2FmtVal(GPS_LapX,$AvgTimeMax)"
    YMIN= "$IOName2Min(Yaw Z)" YMAX ="$IOName2Max(Yaw Z)"
    GRID ="BLACK()" FOREGROUND = "BLUE()" BACKGROUND="GREY()"
    RESETBY=($RefRun,$RefLap,$Lap,$AvgTimeMin,$AvgTime Max) UPDATEDBY=($Lap,$RefLap,$CarretTime)
    >
    <CHART ATTACH2PREV REFERENCE
    XNAME ="GPS_LapX" YNAME ="Yaw Z" WIDTH =1 ROWS=15 COLS =80
    TIMEMIN = "$RefRun($LapStartTime($RefLap))+1" TIMEMAX= "$RefRun($LapEndTime($RefLap))-1"
    XMIN= "$RefRun($IOName2FmtVal(GPS_LapX,$AvgTimeMin)) " XMAX ="$RefRun($IOName2FmtVal(GPS_LapX,$AvgTimeMax)) "
    YMIN= "$IOName2Min(Yaw Z)" YMAX ="$IOName2Max(Yaw Z)"
    GRID ="BLACK()" FOREGROUND = "RED()" BACKGROUND = "GREY()"
    RESETBY=($RefRun,$RefLap,$AvgTimeMin,$AvgTimeMax) UPDATEDBY=($RefRun,$RefLap,$CarretTime)
    >

    <BR LINES=16>

    <CHART
    XNAME ="GPS_LapX" YNAME ="Throttle Pos" WIDTH =1 ROWS=15 COLS =80
    TIMEMIN = $LapStartTime($Lap)+.1 TIMEMAX=$LapEndTime($Lap)-.1
    XMIN= "$IOName2FmtVal(GPS_LapX,$AvgTimeMin)" XMAX ="$IOName2FmtVal(GPS_LapX,$AvgTimeMax)"
    YMIN= "$IOName2Min(Throttle Pos)" YMAX ="$IOName2Max(Throttle Pos)"
    GRID ="BLACK()" FOREGROUND = "BLUE()" BACKGROUND="GREY()"
    RESETBY=($RefRun,$RefLap,$Lap,$AvgTimeMin,$AvgTime Max) UPDATEDBY=($Lap,$RefLap,$CarretTime)
    >
    <CHART ATTACH2PREV REFERENCE
    XNAME ="GPS_LapX" YNAME ="Throttle Pos" WIDTH =1 ROWS=15 COLS =80
    TIMEMIN = "$RefRun($LapStartTime($RefLap))+1" TIMEMAX= "$RefRun($LapEndTime($RefLap))-1"
    XMIN= "$RefRun($IOName2FmtVal(GPS_LapX,$AvgTimeMin)) " XMAX ="$RefRun($IOName2FmtVal(GPS_LapX,$AvgTimeMax)) "
    YMIN= "$IOName2Min(Throttle Pos)" YMAX ="$IOName2Max(Throttle Pos)"
    GRID ="BLACK()" FOREGROUND = "RED()" BACKGROUND = "GRAY()"
    RESETBY=($RefRun,$RefLap,$AvgTimeMin,$AvgTimeMax) UPDATEDBY=($RefRun,$RefLap,$CarretTime)
    >

    <TAB DLGUNITS=335>

    <CHART
    XNAME ="GPS_LapX" YNAME ="Corner Rad Acc" WIDTH =1 ROWS=15 COLS =80
    TIMEMIN = $LapStartTime($Lap)+.1 TIMEMAX=$LapEndTime($Lap)-.1
    XMIN= "$IOName2FmtVal(GPS_LapX,$AvgTimeMin)" XMAX ="$IOName2FmtVal(GPS_LapX,$AvgTimeMax)"
    YMIN= "$IOName2Min(Corner Rad Acc)" YMAX ="$IOName2Max(Corner Rad Acc)"
    GRID ="BLACK()" FOREGROUND = "BLUE()" BACKGROUND="GREY()"
    RESETBY=($RefRun,$RefLap,$Lap,$AvgTimeMin,$AvgTime Max) UPDATEDBY=($Lap,$RefLap,$CarretTime)
    >
    <CHART ATTACH2PREV REFERENCE
    XNAME ="GPS_LapX" YNAME ="Corner Rad Acc" WIDTH =1 ROWS=15 COLS =80
    TIMEMIN = "$RefRun($LapStartTime($RefLap))+1" TIMEMAX= "$RefRun($LapEndTime($RefLap))-1"
    XMIN= "$RefRun($IOName2FmtVal(GPS_LapX,$AvgTimeMin)) " XMAX ="$RefRun($IOName2FmtVal(GPS_LapX,$AvgTimeMax)) "
    YMIN= "$IOName2Min(Corner Rad Acc)" YMAX ="$IOName2Max(Corner Rad Acc)"
    GRID ="BLACK()" FOREGROUND = "RED()" BACKGROUND = "GREY()"
    RESETBY=($RefRun,$RefLap,$AvgTimeMin,$AvgTimeMax) UPDATEDBY=($RefRun,$RefLap,$CarretTime)
    >

    <TAB DLGUNITS=665>

    <CHART
    XNAME ="GPS_LapX" YNAME ="GPS_MPH" WIDTH =1 ROWS=15 COLS =80
    TIMEMIN = $LapStartTime($Lap)+.1 TIMEMAX=$LapEndTime($Lap)-.1
    XMIN= "$IOName2FmtVal(GPS_LapX,$AvgTimeMin)" XMAX ="$IOName2FmtVal(GPS_LapX,$AvgTimeMax)"
    YMIN= "$IOName2Min(GPS_MPH)" YMAX ="$IOName2Max(GPS_MPH)"
    GRID ="BLACK()" FOREGROUND = "BLUE()" BACKGROUND="GREY()"
    RESETBY=($RefRun,$RefLap,$Lap,$AvgTimeMin,$AvgTime Max) UPDATEDBY=($Lap,$RefLap,$CarretTime)
    >
    <CHART ATTACH2PREV REFERENCE
    XNAME ="GPS_LapX" YNAME ="GPS_MPH" WIDTH =1 ROWS=15 COLS =80
    TIMEMIN = "$RefRun($LapStartTime($RefLap))+1" TIMEMAX= "$RefRun($LapEndTime($RefLap))-1"
    XMIN= "$RefRun($IOName2FmtVal(GPS_LapX,$AvgTimeMin)) " XMAX ="$RefRun($IOName2FmtVal(GPS_LapX,$AvgTimeMax)) "
    YMIN= "$IOName2Min(GPS_MPH)" YMAX ="$IOName2Max(GPS_MPH)"
    GRID ="BLACK()" FOREGROUND = "RED()" BACKGROUND = "GREY()"
    RESETBY=($RefRun,$RefLap,$AvgTimeMin,$AvgTimeMax) UPDATEDBY=($RefRun,$RefLap,$CarretTime)
    >

    <TAB DLGUNITS=995>

    <CHART
    XNAME ="GPS_LapX" YNAME ="Engine RPM" WIDTH =1 ROWS=15 COLS =80
    TIMEMIN = $LapStartTime($Lap)+.1 TIMEMAX=$LapEndTime($Lap)-.1
    XMIN= "$IOName2FmtVal(GPS_LapX,$AvgTimeMin)" XMAX ="$IOName2FmtVal(GPS_LapX,$AvgTimeMax)"
    YMIN= "$IOName2Min(Engine RPM)" YMAX ="$IOName2Max(Engine RPM)"
    GRID ="BLACK()" FOREGROUND = "BLUE()" BACKGROUND="GREY()"
    RESETBY=($RefRun,$RefLap,$Lap,$AvgTimeMin,$AvgTime Max) UPDATEDBY=($Lap,$RefLap,$CarretTime)
    >
    <CHART ATTACH2PREV REFERENCE
    XNAME ="GPS_LapX" YNAME ="Engine RPM" WIDTH =1 ROWS=15 COLS =80
    TIMEMIN = "$RefRun($LapStartTime($RefLap))+1" TIMEMAX= "$RefRun($LapEndTime($RefLap))-1"
    XMIN= "$RefRun($IOName2FmtVal(GPS_LapX,$AvgTimeMin)) " XMAX ="$RefRun($IOName2FmtVal(GPS_LapX,$AvgTimeMax)) "
    YMIN= "$IOName2Min(Engine RPM)" YMAX ="$IOName2Max(Engine RPM)"
    GRID ="BLACK()" FOREGROUND = "RED()" BACKGROUND = "GREY()"
    RESETBY=($RefRun,$RefLap,$AvgTimeMin,$AvgTimeMax) UPDATEDBY=($RefRun,$RefLap,$CarretTime)
    >

    <ORIGIN>
    <BR LINES=10>
    <TAB DLGUNITS= 1070>CURRENT
    <TAB DLGUNITS= 1125>REFERENCE
    <BR LINES=1>
    <TAB DLGUNITS=1080>LAP<TAB DLGUNITS=1140>LAP
    <BR LINES=2>
    <TAB DLGUNITS=995>Accel G <TAB DLGUNITS=1065><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap,$CarretTime) IN="$IOName2FmtVal(Accel G)" >
    <TAB DLGUNITS=1125><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 RESETBY=($RefRun,$RefLap,$CarretTime) IN="$RefRun($IOName2FmtVal(Accel G,$RefCarretTime))" >


    <TAB DLGUNITS=995>ABS Press <TAB DLGUNITS=1065><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap,$CarretTime) IN="$IOName2FmtVal(ABS Press)" >
    <TAB DLGUNITS=1125><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 RESETBY=($RefRun,$RefLap,$CarretTime) IN="$RefRun($IOName2FmtVal(ABS Press,$RefCarretTime))" >


    <TAB DLGUNITS=995>Throttle Pos <TAB DLGUNITS=1065><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap,$CarretTime) IN="$IOName2FmtVal(Throttle Pos)" >
    <TAB DLGUNITS=1125><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 RESETBY=($RefRun,$RefLap,$CarretTime) IN="$RefRun($IOName2FmtVal(Throttle Pos,$RefCarretTime))" >


    <BR LINES=1>

    <TAB DLGUNITS=995>Lateral G <TAB DLGUNITS=1065><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap,$CarretTime) IN="$IOName2FmtVal(Lateral G)" >
    <TAB DLGUNITS=1125><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 RESETBY=($RefRun,$RefLap,$CarretTime) IN="$RefRun($IOName2FmtVal(Lateral G,$RefCarretTime))" >


    <TAB DLGUNITS=995>Steering Angle <TAB DLGUNITS=1065><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap,$CarretTime) IN="$IOName2FmtVal(Steering Angle)" >
    <TAB DLGUNITS=1125><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 RESETBY=($RefRun,$RefLap,$CarretTime) IN="$RefRun($IOName2FmtVal(Steering Angle,$RefCarretTime))" >


    <TAB DLGUNITS=995>Corner Rad Acc <TAB DLGUNITS=1065><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap,$CarretTime) IN="$IOName2FmtVal(Corner Rad Acc)" >
    <TAB DLGUNITS=1125><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 RESETBY=($RefRun,$RefLap,$CarretTime) IN="$RefRun($IOName2FmtVal(Corner Rad Acc,$RefCarretTime))" >


    <BR LINES=1>

    <TAB DLGUNITS=995>Total G <TAB DLGUNITS=1065><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap,$CarretTime) IN="$IOName2FmtVal(Total G)" >
    <TAB DLGUNITS=1125><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 RESETBY=($RefRun,$RefLap,$CarretTime) IN="$RefRun($IOName2FmtVal(Total G,$RefCarretTime))" >


    <TAB DLGUNITS=995>Yaw Z <TAB DLGUNITS=1065><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap,$CarretTime) IN="$IOName2FmtVal(Yaw Z)" >
    <TAB DLGUNITS=1125><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 RESETBY=($RefRun,$RefLap,$CarretTime) IN="$RefRun($IOName2FmtVal(Yaw Z,$RefCarretTime))" >


    <TAB DLGUNITS=995>GPS MPH <TAB DLGUNITS=1065><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap,$CarretTime) IN="$IOName2FmtVal(GPS_MPH)" >
    <TAB DLGUNITS=1125><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 RESETBY=($RefRun,$RefLap,$CarretTime) IN="$RefRun($IOName2FmtVal(GPS_MPH,$RefCarretTime) )" >


    <TAB DLGUNITS=995>Engine RPM <TAB DLGUNITS=1065><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap,$CarretTime) IN="$IOName2FmtVal(Engine RPM)" >
    <TAB DLGUNITS=1125><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 RESETBY=($RefRun,$RefLap,$CarretTime) IN="$RefRun($IOName2FmtVal(Engine RPM,$RefCarretTime))" >



    \\and now put in the zoom chart
    <ORIGIN>
    <TAB DLGUNITS=1185> ZOOM SELECT:

    <TAB DLGUNITS=1185><INPUT TYPE=slider NAME=_Zoom MIN=50 MAX=2000 SIZE=40>

    <TAB DLGUNITS=1185> Min Max

    <ORIGIN>
    <BR LINES=5>
    <TAB DLGUNITS=1185><CHART ASPECTRATIO
    XNAME="@_MAP_CircleTrack_Channel :Run_PosX" YNAME="@_MAP_CircleTrack_Channel :Run_PosY" WIDTH=1 COLS=75 ROWS=28
    TIMEMIN="$LapStartTime($Lap)" TIMEMAX="$LapEndTime($Lap)+.2"
    XMIN="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosX)-_Zoom" XMAX="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosX)+_Zoom"
    YMIN="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosY)-_Zoom" YMAX="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosY)+_Zoom"
    FOREGROUND="WHITE()" BACKGROUND="GREY()"
    RESETBY=($ChartTimeMin,$ChartTimeMax,$AvgTimeMin,$ AvgTimeMax,_MAP_Angle_Start,_MAP_UseLap,_Zoom,$Car retTime,$RefLap) UPDATEDBY=($LapStartTime,$CarretTime,_Zoom)>

    <TAB DLGUNITS=1185><CHART ATTACH2PREV ASPECTRATIO CURSOR REFERENCE
    XNAME="@_MAP_CircleTrack_Channel :Run_PosX" YNAME="@_MAP_CircleTrack_Channel :Run_PosY" WIDTH=1 COLS=155 ROWS=40
    TIMEMIN="$LapStartTime($RefLap)" TIMEMAX="$LapEndTime($RefLap)+.2"
    XMIN="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosX)-_Zoom" XMAX="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosX)+_Zoom"
    YMIN="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosY)-_Zoom" YMAX="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosY)+_Zoom"
    FOREGROUND="BLACK()" BACKGROUND="GREY()">

    <TAB DLGUNITS=1185><CHART ATTACH2PREV ASPECTRATIO
    XNAME="@_MAP_CircleTrack_Channel :Plot_OutX" YNAME="@_MAP_CircleTrack_Channel :Plot_OutY" WIDTH=2 COLS=195 ROWS= 50
    TIMEMIN="$ChannelTimeMin(@_MAP_CircleTrack_Channel :Plot_OutX)" TIMEMAX="$ChannelTimeMax(@_MAP_CircleTrack_Channel :Plot_OutY)"
    XMIN="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosX)-_Zoom" XMAX="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosX)+_Zoom"
    YMIN="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosY)-_Zoom" YMAX="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosY)+_Zoom"
    FOREGROUND="RED()" BACKGROUND="GREY()">

    <TAB DLGUNITS=1185><CHART ATTACH2PREV ASPECTRATIO
    XNAME="@_MAP_CircleTrack_Channel :Plot_InX" YNAME="@_MAP_CircleTrack_Channel :Plot_InY" WIDTH=2 COLS=195 ROWS=50
    TIMEMIN="$ChannelTimeMin(@_MAP_CircleTrack_Channel :Plot_InX)" TIMEMAX="$ChannelTimeMax(@_MAP_CircleTrack_Channel :Plot_InX)"
    XMIN="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosX)-_Zoom" XMAX="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosX)+_Zoom"
    YMIN="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosY)-_Zoom" YMAX="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosY)+_Zoom"
    FOREGROUND="BLUE()" BACKGROUND="GREY()" >

    <TAB DLGUNITS=1185><CHART ATTACH2PREV ASPECTRATIO ZSTYLE=OnOff
    XNAME="@_MAP_CircleTrack_Channel :Plot_OutX" YNAME="@_MAP_CircleTrack_Channel :Plot_OutY" ZNAME="@_MAP_CircleTrack_Channel :Plot_SegT" WIDTH=1 COLS=195 ROWS=50
    TIMEMIN="$ChannelTimeMin(@_MAP_CircleTrack_Channel :Plot_RefX)" TIMEMAX="$ChannelTimeMax(@_MAP_CircleTrack_Channel :Plot_RefX)"
    XMIN="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosX)-_Zoom" XMAX="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosX)+_Zoom"
    YMIN="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosY)-_Zoom" YMAX="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosY)+_Zoom"
    FOREGROUND="WHITE()" BACKGROUND="GREY()" RESETBY=($LapStartTime) UPDATEDBY=($LapStartTime,$CarretTime)>

    <TAB DLGUNITS=1185><CHART ATTACH2PREV ASPECTRATIO ZSTYLE=Mark SYMBOL=ParBar SYMSIZE=8
    XNAME="@_MAP_CircleTrack_Channel :Plot_OutX" YNAME="@_MAP_CircleTrack_Channel :Plot_OutY" ZNAME="@_MAP_CircleTrack_Channel :Plot_SegS" WIDTH=1 COLS=95 ROWS=50
    TIMEMIN="$ChannelTimeMin(@_MAP_CircleTrack_Channel :Plot_RefX)" TIMEMAX="$ChannelTimeMax(@_MAP_CircleTrack_Channel :Plot_RefX)"
    XMIN="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosX)-_Zoom" XMAX="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosX)+_Zoom"
    YMIN="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosY)-_Zoom" YMAX="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosY)+_Zoom"
    FOREGROUND="BLUE()" BACKGROUND="GREY()" RESETBY=($LapStartTime) UPDATEDBY=($LapStartTime,$CarretTime)>

    <TAB DLGUNITS=1185><CHART ATTACH2PREV ASPECTRATIO ZSTYLE=Mark SYMBOL=ParBar SYMSIZE=10
    XNAME="@_MAP_CircleTrack_Channel :Plot_OutX" YNAME="@_MAP_CircleTrack_Channel :Plot_OutY" ZNAME="@_MAP_CircleTrack_Channel :Plot_SF" WIDTH=1 COLS=95 ROWS=36
    TIMEMIN="$ChannelTimeMin(@_MAP_CircleTrack_Channel :Plot_RefX)" TIMEMAX="$ChannelTimeMax(@_MAP_CircleTrack_Channel :Plot_RefX)"
    XMIN="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosX)-_Zoom" XMAX="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosX)+_Zoom"
    YMIN="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosY)-_Zoom" YMAX="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosY)+_Zoom"
    FOREGROUND="RED()" BACKGROUND="GREY()" RESETBY=($LapStartTime) UPDATEDBY=($LapStartTime,$CarretTime)>

    <TAB DLGUNITS=1185><CHART ATTACH2PREV ASPECTRATIO SYMBOL=None
    XNAME="@_MAP_CircleTrack_Channel :Plot_OutX" YNAME="@_MAP_CircleTrack_Channel :Plot_OutY" ZNAME="@_MAP_CircleTrack_Channel :Plot_SegM" WIDTH=5 COLS=95 ROWS=36 TIMEMIN="$LapStartTime"
    TIMEMIN="$ChannelTimeMin(@_MAP_CircleTrack_Channel :Plot_RefX)" TIMEMAX="$ChannelTimeMax(@_MAP_CircleTrack_Channel :Plot_RefX)"
    XMIN="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosX)-_Zoom" XMAX="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosX)+_Zoom"
    YMIN="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosY)-_Zoom" YMAX="$IOName2FmtVal(@_MAP_CircleTrack_Channel :Run_PosY)+_Zoom"
    FOREGROUND="BLUE()" BACKGROUND="GREY()" RESETBY=($LapStartTime) UPDATEDBY=($LapStartTime,$CarretTime)>
    On this second page, one thing I haven't figured out is why the track map doesn't update continuously like on the Lap Zoom page. I borrowed the code for the map from there and just rescaled the map to fit my screen. Oh yah, my computer screen is 1920x1080 and this second page uses it all.

    Hopefully you find the above useful.
    Attached Images Attached Images

  2. #2

    Default Re: Custom Runlog Pages

    Very nice, thanks for sharing. I have quite a few custom pages, but one of them that I like is a heat map view. It takes advantage of being able to overlay "chart" tags. All of the channels used are 0 off / 1 on math channels.



    Here is the code:

    Code:
    <TITLE CATEGORY="MAP Analysis">Heat Map</TITLE>
    
    Selected vs Reference Lap
    
    <ORIGIN>
    
    
    
    <CHART ASPECTRATIO  
                   XNAME="GPS_Data:Run_PosX" 
                   YNAME="GPS_Data:Run_PosY"  
                   WIDTH=1 
                   COLS=125
                   ROWS=50
                   TIMEMIN="$LapStartTime(GPS_Data,$Lap)" TIMEMAX="$LapEndTime(GPS_Data,$Lap)" 
                   XMIN="$IOChanMin(GPS_Data:Run_PosX,$LapStartTime(GPS_Data,$Lap),$LapEndTime(GPS_Data,$Lap)) - 50" 
                   XMAX="$IOChanMax(GPS_Data:Run_PosX,$LapStartTime(GPS_Data,$Lap),$LapEndTime(GPS_Data,$Lap)) + 50"
                   YMIN="$IOChanMin(GPS_Data:Run_PosY,$LapStartTime(GPS_Data,$Lap),$LapEndTime(GPS_Data,$Lap)) - 50" 
                   YMAX="$IOChanMax(GPS_Data:Run_PosY,$LapStartTime(GPS_Data,$Lap),$LapEndTime(GPS_Data,$Lap)) + 50"
                   FOREGROUND="BLUE()" 
                   BACKGROUND="GREY()"
                   RESETBY=($Lap)>
    
    <CHART ATTACH2PREV ASPECTRATIO  ZSTYLE=OnOff
                   XNAME="GPS_Data:Run_PosX" 
                   YNAME="GPS_Data:Run_PosY"
                   ZNAME="Brake"  
                   WIDTH=2
                   COLS=125
                   ROWS=50
                   TIMEMIN="$LapStartTime(GPS_Data,$Lap)" TIMEMAX="$LapEndTime(GPS_Data,$Lap)" 
                   XMIN="$IOChanMin(GPS_Data:Run_PosX,$LapStartTime(GPS_Data,$Lap),$LapEndTime(GPS_Data,$Lap)) - 50" 
                   XMAX="$IOChanMax(GPS_Data:Run_PosX,$LapStartTime(GPS_Data,$Lap),$LapEndTime(GPS_Data,$Lap)) + 50"
                   YMIN="$IOChanMin(GPS_Data:Run_PosY,$LapStartTime(GPS_Data,$Lap),$LapEndTime(GPS_Data,$Lap)) - 50" 
                   YMAX="$IOChanMax(GPS_Data:Run_PosY,$LapStartTime(GPS_Data,$Lap),$LapEndTime(GPS_Data,$Lap)) + 50"
                   FOREGROUND="RED()" 
                   BACKGROUND="GREY()"
                   RESETBY=($Lap)>
    
    <CHART ATTACH2PREV ASPECTRATIO  ZSTYLE=OnOff
                   XNAME="GPS_Data:Run_PosX" 
                   YNAME="GPS_Data:Run_PosY"
                   ZNAME="WOT"  
                   WIDTH=2 
                   COLS=125
                   ROWS=50
                   TIMEMIN="$LapStartTime(GPS_Data,$Lap)" TIMEMAX="$LapEndTime(GPS_Data,$Lap)" 
                   XMIN="$IOChanMin(GPS_Data:Run_PosX,$LapStartTime(GPS_Data,$Lap),$LapEndTime(GPS_Data,$Lap)) - 50" 
                   XMAX="$IOChanMax(GPS_Data:Run_PosX,$LapStartTime(GPS_Data,$Lap),$LapEndTime(GPS_Data,$Lap)) + 50"
                   YMIN="$IOChanMin(GPS_Data:Run_PosY,$LapStartTime(GPS_Data,$Lap),$LapEndTime(GPS_Data,$Lap)) - 50" 
                   YMAX="$IOChanMax(GPS_Data:Run_PosY,$LapStartTime(GPS_Data,$Lap),$LapEndTime(GPS_Data,$Lap)) + 50"
                   FOREGROUND="GREEN()" 
                   BACKGROUND="GREY()"
                   RESETBY=($Lap)>
    
    <CHART ATTACH2PREV ASPECTRATIO  ZSTYLE=OnOff
                   XNAME="GPS_Data:Run_PosX" 
                   YNAME="GPS_Data:Run_PosY"
                   ZNAME="Below WOT"  
                   WIDTH=2 
                   COLS=125
                   ROWS=50
                   TIMEMIN="$LapStartTime(GPS_Data,$Lap)" TIMEMAX="$LapEndTime(GPS_Data,$Lap)" 
                   XMIN="$IOChanMin(GPS_Data:Run_PosX,$LapStartTime(GPS_Data,$Lap),$LapEndTime(GPS_Data,$Lap)) - 50" 
                   XMAX="$IOChanMax(GPS_Data:Run_PosX,$LapStartTime(GPS_Data,$Lap),$LapEndTime(GPS_Data,$Lap)) + 50"
                   YMIN="$IOChanMin(GPS_Data:Run_PosY,$LapStartTime(GPS_Data,$Lap),$LapEndTime(GPS_Data,$Lap)) - 50" 
                   YMAX="$IOChanMax(GPS_Data:Run_PosY,$LapStartTime(GPS_Data,$Lap),$LapEndTime(GPS_Data,$Lap)) + 50"
                   FOREGROUND="YELLOW()" 
                   BACKGROUND="GREY()"
                   RESETBY=($Lap)>
    
    <ORIGIN>
    <TAB COLS=135>
    
    
    <TAB COLS=135>
    
    <CHART ASPECTRATIO  
                   XNAME="GPS_Data:Run_PosX" 
                   YNAME="GPS_Data:Run_PosY"  
                   WIDTH=1 
                   COLS=125
                   ROWS=50
                   TIMEMIN="$LapStartTime(GPS_Data,$RefLap)" TIMEMAX="$LapEndTime(GPS_Data,$RefLap)" 
                   XMIN="$IOChanMin(GPS_Data:Run_PosX,$LapStartTime(GPS_Data,$RefLap),$LapEndTime(GPS_Data,$RefLap)) - 50" 
                   XMAX="$IOChanMax(GPS_Data:Run_PosX,$LapStartTime(GPS_Data,$RefLap),$LapEndTime(GPS_Data,$RefLap)) + 50"
                   YMIN="$IOChanMin(GPS_Data:Run_PosY,$LapStartTime(GPS_Data,$RefLap),$LapEndTime(GPS_Data,$RefLap)) - 50" 
                   YMAX="$IOChanMax(GPS_Data:Run_PosY,$LapStartTime(GPS_Data,$RefLap),$LapEndTime(GPS_Data,$RefLap)) + 50"
                   FOREGROUND="BLUE()" 
                   BACKGROUND="GREY()"
                   RESETBY=($Lap)>
    
    <CHART ATTACH2PREV ASPECTRATIO  ZSTYLE=OnOff
                   XNAME="GPS_Data:Run_PosX" 
                   YNAME="GPS_Data:Run_PosY"
                   ZNAME="Brake"  
                   WIDTH=2
                   COLS=125
                   ROWS=50
                   TIMEMIN="$LapStartTime(GPS_Data,$RefLap)" TIMEMAX="$LapEndTime(GPS_Data,$RefLap)" 
                   XMIN="$IOChanMin(GPS_Data:Run_PosX,$LapStartTime(GPS_Data,$RefLap),$LapEndTime(GPS_Data,$RefLap)) - 50" 
                   XMAX="$IOChanMax(GPS_Data:Run_PosX,$LapStartTime(GPS_Data,$RefLap),$LapEndTime(GPS_Data,$RefLap)) + 50"
                   YMIN="$IOChanMin(GPS_Data:Run_PosY,$LapStartTime(GPS_Data,$RefLap),$LapEndTime(GPS_Data,$RefLap)) - 50" 
                   YMAX="$IOChanMax(GPS_Data:Run_PosY,$LapStartTime(GPS_Data,$RefLap),$LapEndTime(GPS_Data,$RefLap)) + 50"
                   FOREGROUND="RED()" 
                   BACKGROUND="GREY()"
                   RESETBY=($Lap)>
    
    <CHART ATTACH2PREV ASPECTRATIO  ZSTYLE=OnOff
                   XNAME="GPS_Data:Run_PosX" 
                   YNAME="GPS_Data:Run_PosY"
                   ZNAME="WOT"  
                   WIDTH=2 
                   COLS=125
                   ROWS=50
                   TIMEMIN="$LapStartTime(GPS_Data,$RefLap)" TIMEMAX="$LapEndTime(GPS_Data,$RefLap)" 
                   XMIN="$IOChanMin(GPS_Data:Run_PosX,$LapStartTime(GPS_Data,$RefLap),$LapEndTime(GPS_Data,$RefLap)) - 50" 
                   XMAX="$IOChanMax(GPS_Data:Run_PosX,$LapStartTime(GPS_Data,$RefLap),$LapEndTime(GPS_Data,$RefLap)) + 50"
                   YMIN="$IOChanMin(GPS_Data:Run_PosY,$LapStartTime(GPS_Data,$RefLap),$LapEndTime(GPS_Data,$RefLap)) - 50" 
                   YMAX="$IOChanMax(GPS_Data:Run_PosY,$LapStartTime(GPS_Data,$RefLap),$LapEndTime(GPS_Data,$RefLap)) + 50"
                   FOREGROUND="GREEN()" 
                   BACKGROUND="GREY()"
                   RESETBY=($Lap)>
    
    <CHART ATTACH2PREV ASPECTRATIO  ZSTYLE=OnOff
                   XNAME="GPS_Data:Run_PosX" 
                   YNAME="GPS_Data:Run_PosY"
                   ZNAME="Below WOT"  
                   WIDTH=2 
                   COLS=125
                   ROWS=50
                   TIMEMIN="$LapStartTime(GPS_Data,$RefLap)" TIMEMAX="$LapEndTime(GPS_Data,$RefLap)" 
                   XMIN="$IOChanMin(GPS_Data:Run_PosX,$LapStartTime(GPS_Data,$RefLap),$LapEndTime(GPS_Data,$RefLap)) - 50" 
                   XMAX="$IOChanMax(GPS_Data:Run_PosX,$LapStartTime(GPS_Data,$RefLap),$LapEndTime(GPS_Data,$RefLap)) + 50"
                   YMIN="$IOChanMin(GPS_Data:Run_PosY,$LapStartTime(GPS_Data,$RefLap),$LapEndTime(GPS_Data,$RefLap)) - 50" 
                   YMAX="$IOChanMax(GPS_Data:Run_PosY,$LapStartTime(GPS_Data,$RefLap),$LapEndTime(GPS_Data,$RefLap)) + 50"
                   FOREGROUND="YELLOW()" 
                   BACKGROUND="GREY()"
                   RESETBY=($Lap)>

  3. #3

    Default Re: Custom Runlog Pages

    Thanks for the code. I'm anxious to give it a try.

    Looking at your code has also shed some light on creating track map plots. I don't fully understand the programming language so I tend to look at other pieces of code to learn how to do what I want. Your code has helped me to understand how the track plots are created. So thanks for that too.

  4. #4

    Default Re: Custom Runlog Pages

    if a user has the proper security key or level
    Can someone explain what the "proper security key" is, and what it takes to get it?

  5. #5

    Default Re: Custom Runlog Pages

    Quote Originally Posted by tom_hampton
    Can someone explain what the "proper security key" is, and what it takes to get it?
    In the DataLinkII software, if you click on the Security menu, then on Show/Edit Security Key List, you will see a list of keys that you have and add more. These keys can allow access to some features in DataLinkII, such as the ability to edit Runlog pages. I don't know what level is required to enable editing or creating Runlog pages. However, someone at Racepak should be able to help you. If they don't chime in here, maybe an e-mail or calling would work.

  6. #6

    Default Re: Custom Runlog Pages

    Source code for an x-y plot with a track map.



    Code:
    <TITLE CATEGORY = "MAP Analysis">XY Plot </TITLE>
    
    <TITLE CATEGORY="Histo and XY Plot" RESETBY= ($Lap,$RefRun,$RefLap)>X-Y Plot</TITLE>
    
    X-Axis =  <INPUT TYPE=enumcustom VALUE="IONames()" NAME=XChart ROWS=15 SIZE=25>         
    
    Y-Axis =  <INPUT TYPE=enumcustom VALUE="IONames()" NAME=YChart ROWS=15 SIZE=25>         
    
    
    
    
    <ORIGIN>
    <TAB COLS=45> 
    <CHART 
    XNAME="@XChart"  YNAME="@YChart"  SYMBOL=Point
    TIMEMIN="$ChartTimeMin" TIMEMAX="$ChartTimeMax" 
    XMIN="$IOName2Min(@XChart)" XMAX="$IOName2Max(@XChart)"
    YMIN="$IOName2Min(@YChart)" YMAX="$IOName2Max(@YChart)"
    GRID=BLACK()  BACKGROUND=GREY() FOREGROUND=RED()
    ROWS=35 COLS=120 WIDTH=1
    RESETBY=(XChart,YChart,$ChartTimeMin,$ChartTimeMax)
    UPDATEDBY=($CarretTime)>
    
    <ORIGIN>
    
    <TAB DLGUNITS=700>
    
    <CHART ASPECTRATIO    
    XNAME="@_MAP_CircleTrack_Channel :Run_PosX" YNAME="@_MAP_CircleTrack_Channel :Run_PosY"   WIDTH=1 COLS=80 ROWS=28 
    TIMEMIN="$LapStartTime" TIMEMAX="$LapEndTime"  
    XMIN="$IOName2Min(@_MAP_CircleTrack_Channel :Plot_RefX)" XMAX="$IOName2Max(@_MAP_CircleTrack_Channel :Plot_RefX)" 
    YMIN="$IOName2Min(@_MAP_CircleTrack_Channel :Plot_RefY)" YMAX="$IOName2Max(@_MAP_CircleTrack_Channel :Plot_RefY)" 
    FOREGROUND="WHITE()" BACKGROUND="GREY()"  
    RESETBY=($LapStartTime)  UPDATEDBY=($LapStartTime,$CarretTime)>
    
    <CHART  ATTACH2PREV ASPECTRATIO  
    XNAME= "@_MAP_CircleTrack_Channel :Plot_RefX" YNAME="@_MAP_CircleTrack_Channel :Plot_RefY"   WIDTH=5 COLS=80 ROWS=32 
    TIMEMIN="$ChannelTimeMin(@_MAP_CircleTrack_Channel:Plot_RefX)" TIMEMAX="$ChannelTimeMax(@_MAP_CircleTrack_Channel:Plot_RefX)"  
    XMIN="$IOName2Min(@_MAP_CircleTrack_Channel :Plot_RefX)" XMAX="$IOName2Max(@_MAP_CircleTrack_Channel :Plot_RefX)" 
    YMIN="$IOName2Min(@_MAP_CircleTrack_Channel :Plot_RefY)" YMAX="$IOName2Max(@_MAP_CircleTrack_Channel :Plot_RefY)" 
    FOREGROUND="WHITE()" BACKGROUND="GREY()"  
    RESETBY=($LapStartTime)  UPDATEDBY=($LapStartTime,$CarretTime)>
    
    <CHART ATTACH2PREV ASPECTRATIO  ZSTYLE=OnOff                                            
    XNAME="@_MAP_CircleTrack_Channel :Plot_RefX" YNAME="@_MAP_CircleTrack_Channel :Plot_RefY" ZNAME="@_MAP_CircleTrack_Channel :Plot_SegT"  WIDTH=5 COLS=80 ROWS=32 
    TIMEMIN="$ChannelTimeMin(@_MAP_CircleTrack_Channel:Plot_RefX)" TIMEMAX="$ChannelTimeMax(@_MAP_CircleTrack_Channel:Plot_RefX)"  
    XMIN="$IOName2Min(@_MAP_CircleTrack_Channel :Plot_RefX)" XMAX="$IOName2Max(@_MAP_CircleTrack_Channel :Plot_RefX)" 
    YMIN="$IOName2Min(@_MAP_CircleTrack_Channel :Plot_RefY)" YMAX="$IOName2Max(@_MAP_CircleTrack_Channel :Plot_RefY)" 
    FOREGROUND="BLUE()" BACKGROUND="GREY()"  
    RESETBY=($LapStartTime)  UPDATEDBY=($LapStartTime,$CarretTime)>
    
    <CHART ATTACH2PREV ASPECTRATIO  ZSTYLE=Mark  SYMBOL=ParBar SYMSIZE=8   
    XNAME="@_MAP_CircleTrack_Channel :Plot_RefX" YNAME="@_MAP_CircleTrack_Channel :Plot_RefY" ZNAME="@_MAP_CircleTrack_Channel :Plot_SegS"  WIDTH=1 COLS=80 ROWS=32 
    TIMEMIN="$ChannelTimeMin(@_MAP_CircleTrack_Channel:Plot_RefX)" TIMEMAX="$ChannelTimeMax(@_MAP_CircleTrack_Channel:Plot_RefX)"  
    XMIN="$IOName2Min(@_MAP_CircleTrack_Channel :Plot_RefX)" XMAX="$IOName2Max(@_MAP_CircleTrack_Channel :Plot_RefX)" 
    YMIN="$IOName2Min(@_MAP_CircleTrack_Channel :Plot_RefY)" YMAX="$IOName2Max(@_MAP_CircleTrack_Channel :Plot_RefY)" 
    FOREGROUND="RED()" BACKGROUND="GREY()"  
    RESETBY=($LapStartTime)  UPDATEDBY=($LapStartTime,$CarretTime)>
    
    <CHART ATTACH2PREV ASPECTRATIO  ZSTYLE=Mark  SYMBOL=ParBar SYMSIZE=10  
    XNAME="@_MAP_CircleTrack_Channel :Plot_RefX" YNAME="@_MAP_CircleTrack_Channel :Plot_RefY" ZNAME="@_MAP_CircleTrack_Channel :Plot_SF"  WIDTH=1 COLS=80 ROWS=32 
    TIMEMIN="$ChannelTimeMin(@_MAP_CircleTrack_Channel:Plot_RefX)" TIMEMAX="$ChannelTimeMax(@_MAP_CircleTrack_Channel:Plot_RefX)"  
    XMIN="$IOName2Min(@_MAP_CircleTrack_Channel :Plot_RefX)" XMAX="$IOName2Max(@_MAP_CircleTrack_Channel :Plot_RefX)" 
    YMIN="$IOName2Min(@_MAP_CircleTrack_Channel :Plot_RefY)" YMAX="$IOName2Max(@_MAP_CircleTrack_Channel :Plot_RefY)" 
    FOREGROUND="RED()" BACKGROUND="GREY()"  
    RESETBY=($LapStartTime)  UPDATEDBY=($LapStartTime,$CarretTime)>
    
    <CHART ATTACH2PREV ASPECTRATIO     SYMBOL=None                         
    XNAME="@_MAP_CircleTrack_Channel :Plot_RefX" YNAME="@_MAP_CircleTrack_Channel :Plot_RefY" ZNAME="@_MAP_CircleTrack_Channel :Plot_SegM"  WIDTH=5 COLS=80 ROWS=32 
    TIMEMIN="$ChannelTimeMin(@_MAP_CircleTrack_Channel:Plot_RefX)" TIMEMAX="$ChannelTimeMax(@_MAP_CircleTrack_Channel:Plot_RefX)"  
    XMIN="$IOName2Min(@_MAP_CircleTrack_Channel :Plot_RefX)" XMAX="$IOName2Max(@_MAP_CircleTrack_Channel :Plot_RefX)" 
    YMIN="$IOName2Min(@_MAP_CircleTrack_Channel :Plot_RefY)" YMAX="$IOName2Max(@_MAP_CircleTrack_Channel :Plot_RefY)" 
    FOREGROUND="BLUE()" BACKGROUND="GREY()"  
    RESETBY=($LapStartTime)  UPDATEDBY=($LapStartTime,$CarretTime)>
    Attached Images Attached Images

  7. #7

    Default Re: Custom Runlog Pages

    Many thanks to Dan & Tim for showing me the light

    Started to make some custom pages, apart from the HEAT Map code used in this thread I have looked at the EGT's. Importantly I'm looking for big differences between the individual EGT and the average of the 4.

    I need to do some more reading as to how to 'place' the graphs on the 'page', but will be working on some more plots to watch the engine's health. Would be nice to be able to do a scatter plot of RPM & Oil Temp on the XY axis and oil pressure as the data.

    Code:
    <TITLE CATEGORY="Statitics" RESETBY= ($ChartTimeMin,YChart)>EGT DIFF</TITLE>
    <A HELP=47>[img]\\LogHelp.bmp[/img]</A>
    <ORIGIN>
    
    <CHART 	XNAME="EFI Engine RPM" YNAME="EGT1 DIFF"
    SYMBOL=Plus
    TIMEMIN="$ChartTimeMin" TIMEMAX="$ChartTimeMax" 
    XMIN=0 XMAX=8250  YMIN=-50 YMAX=50
    GRID=BLACK()  BACKGROUND=WHITE() FOREGROUND=RED()
    ROWS=30 COLS=70
      RESETBY=(YChart,ChartMin,ChartMax)
      UPDATEDBY=($CarretTime)
    >
    
    <CHART 	XNAME="EFI Engine RPM" YNAME="EGT2 DIFF"
    SYMBOL=Plus
    TIMEMIN="$ChartTimeMin" TIMEMAX="$ChartTimeMax" 
    XMIN=0 XMAX=8250  YMIN=-50 YMAX=50
    GRID=BLACK()  BACKGROUND=WHITE() FOREGROUND=GREEN()
    ROWS=30 COLS=70
      RESETBY=(YChart,ChartMin,ChartMax)
      UPDATEDBY=($CarretTime)
    >
    
    <CHART 	XNAME="EFI Engine RPM" YNAME="EGT3 DIFF"
    SYMBOL=Plus
    TIMEMIN="$ChartTimeMin" TIMEMAX="$ChartTimeMax" 
    XMIN=0 XMAX=8250  YMIN=-50 YMAX=50
    GRID=BLACK()  BACKGROUND=WHITE() FOREGROUND=BLUE()
    ROWS=30 COLS=70
      RESETBY=(YChart,ChartMin,ChartMax)
      UPDATEDBY=($CarretTime)
    >
    
    <CHART 	XNAME="EFI Engine RPM" YNAME="EGT4 DIFF"
    SYMBOL=Plus
    TIMEMIN="$ChartTimeMin" TIMEMAX="$ChartTimeMax" 
    XMIN=0 XMAX=8250  YMIN=-50 YMAX=50
    GRID=BLACK()  BACKGROUND=WHITE() FOREGROUND=YELLOW()
    ROWS=30 COLS=70
      RESETBY=(YChart,ChartMin,ChartMax)
      UPDATEDBY=($CarretTime)
    >
    EGT_DIFF_SMSP_S2 by Eipeip, on Flickr

  8. #8

    Default Re: Custom Runlog Pages

    I'm glad you have been successful in playing around. You are very welcome for the help.

    Quote Originally Posted by magpie
    I need to do some more reading as to how to 'place' the graphs on the 'page', but will be working on some more plots to watch the engine's health.
    If you look at some of the examples above, you will see
    . This allows you to go to the next line. If you want to jump multiple lines, you can use <BR LINES=2>. You can change the number 2 to whatever you want. You can also start back over from the upper left by using the <ORIGIN> command. Commands like <TAB DLGUNITS=5> allow you to move to the right. I find that a lot of trial and error is necessary to get charts, tables, etc to be placed where I want.

  9. #9

    Default Re: Custom Runlog Pages

    I'm really starting to like the page shown below. It allows a person to set a min and max range. If the actual value in the table is outside of that range, the value turns red. Hopefully there aren't any typos!



    Quote Originally Posted by code
    <TITLE CATEGORY="Car Health" RESETBY= ($ChartTimeMin,$ChartTimeMax,$Lap)>Min Max Avg Report</TITLE>
    <TAB DLGUNITS=0> Run: <INPUT TYPE=staticbox VALUE="$FileName" SIZE = 80> <TAB DLGUNITS=300>Scroll Laps LEFT: <INPUT TYPE=slider NAME=_Lap_Start MIN=0 MAX=$LapNumber-7 SIZE=60>


    <ORIGIN>
    <BR LINES=4>
    <TAB DLGUNITS= 85>DATA FOR TIME SHOWN IN THE PLOT WINDOW ABOVE

    <BR LINES=2>

    <TAB DLGUNITS= 93>CUR
    <TAB DLGUNITS= 153>AVG
    <TAB DLGUNITS= 213>MIN
    <TAB DLGUNITS= 273>MAX

    <BR LINES=2>

    Speed:
    <TAB DLGUNITS= 80><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($CarretTime) IN="$IOName2FmtVal(GPS_MPH)" >
    <TAB DLGUNITS= 140><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanAvg(GPS_MPH,$ChartTimeMin,$ChartTimeMax )">
    <TAB DLGUNITS= 200><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMin(GPS_MPH,$ChartTimeMin,$ChartTimeMax )">
    <TAB DLGUNITS= 260><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMax(GPS_MPH,$ChartTimeMin,$ChartTimeMax )">


    Engine RPM:
    <TAB DLGUNITS= 80><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($CarretTime) IN="$IOName2FmtVal(Engine RPM)" >
    <TAB DLGUNITS= 140><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanAvg(Engine RPM,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 200><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMin(Engine RPM,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 260><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMax(Engine RPM,$ChartTimeMin,$ChartTimeMax)">


    Lateral G:
    <TAB DLGUNITS= 80><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($CarretTime) IN="$IOName2FmtVal(Lateral G)" >
    <TAB DLGUNITS= 140><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanAvg(Lateral G,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 200><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMin(Lateral G,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 260><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMax(Lateral G,$ChartTimeMin,$ChartTimeMax)">


    Accel G:
    <TAB DLGUNITS= 80><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($CarretTime) IN="$IOName2FmtVal(Accel G)" >
    <TAB DLGUNITS= 140><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanAvg(Accel G,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 200><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMin(Accel G,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 260><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMax(Accel G,$ChartTimeMin,$ChartTimeMax)"><BR LINES=2>

    Steering Angle:

    <TAB DLGUNITS= 80><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($CarretTime) IN="$IOName2FmtVal(Steering Angle)" >
    <TAB DLGUNITS= 140><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanAvg(Steering Angle,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 200><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMin(Steering Angle,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 260><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMax(Steering Angle,$ChartTimeMin,$ChartTimeMax)">


    Throttle:

    <TAB DLGUNITS= 80><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($CarretTime) IN="$IOName2FmtVal(Throttle Pos)" >
    <TAB DLGUNITS= 140><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanAvg(Throttle Pos,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 200><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMin(Throttle Pos,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 260><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMax(Throttle Pos,$ChartTimeMin,$ChartTimeMax)">


    ABS Press:

    <TAB DLGUNITS= 80><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($CarretTime) IN="$IOName2FmtVal(ABS Press)" >
    <TAB DLGUNITS= 140><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanAvg(ABS Press,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 200><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMin(ABS Press,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 260><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMax(ABS Press,$ChartTimeMin,$ChartTimeMax)"><BR LINES=2>

    Battery Voltage:

    <TAB DLGUNITS= 80><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($CarretTime) IN="$IOName2FmtVal(Battery Volt)" >
    <TAB DLGUNITS= 140><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanAvg(Battery Volt,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 200><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMin(Battery Volt,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 260><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMax(Battery Volt,$ChartTimeMin,$ChartTimeMax)">


    Water Temp:

    <TAB DLGUNITS= 80><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($CarretTime) IN="$IOName2FmtVal(Water Temp)" >
    <TAB DLGUNITS= 140><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanAvg(Water Temp,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 200><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMin(Water Temp,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 260><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMax(Water Temp,$ChartTimeMin,$ChartTimeMax)">


    Oil Temp:

    <TAB DLGUNITS= 80><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($CarretTime) IN="$IOName2FmtVal(Oil Temp)" >
    <TAB DLGUNITS= 140><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanAvg(Oil Temp,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 200><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMin(Oil Temp,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 260><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMax(Oil Temp,$ChartTimeMin,$ChartTimeMax)">


    Trans Temp:

    <TAB DLGUNITS= 80><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($CarretTime) IN="$IOName2FmtVal(Trans Temp)" >
    <TAB DLGUNITS= 140><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanAvg(Trans Temp,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 200><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMin(Trans Temp,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 260><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMax(Trans Temp,$ChartTimeMin,$ChartTimeMax)">


    Diff Temp:

    <TAB DLGUNITS= 80><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($CarretTime) IN="$IOName2FmtVal(Diff Temp)" >
    <TAB DLGUNITS= 140><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanAvg(Diff Temp,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 200><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMin(Diff Temp,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 260><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMax(Diff Temp,$ChartTimeMin,$ChartTimeMax)">


    Oil Pressure:

    <TAB DLGUNITS= 80><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($CarretTime) IN="$IOName2FmtVal(Oil Pressure)" >
    <TAB DLGUNITS= 140><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanAvg(Oil Pressure,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 200><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMin(Oil Pressure,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 260><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMax(Oil Pressure,$ChartTimeMin,$ChartTimeMax)"><BR LINES=2>

    LF Shock Pos:

    <TAB DLGUNITS= 80><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($CarretTime) IN="$IOName2FmtVal(LF Shock Pos)" >
    <TAB DLGUNITS= 140><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanAvg(LF Shock Pos,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 200><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMin(LF Shock Pos,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 260><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMax(LF Shock Pos,$ChartTimeMin,$ChartTimeMax)">


    RF Shock Pos:

    <TAB DLGUNITS= 80><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($CarretTime) IN="$IOName2FmtVal(RF Shock Pos)" >
    <TAB DLGUNITS= 140><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanAvg(RF Shock Pos,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 200><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMin(RF Shock Pos,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 260><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMax(RF Shock Pos,$ChartTimeMin,$ChartTimeMax)">


    LR Shock Pos:

    <TAB DLGUNITS= 80><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($CarretTime) IN="$IOName2FmtVal(LR Shock Pos)" >
    <TAB DLGUNITS= 140><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanAvg(LR Shock Pos,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 200><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMin(LR Shock Pos,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 260><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMax(LR Shock Pos,$ChartTimeMin,$ChartTimeMax)">


    RR Shock Pos:

    <TAB DLGUNITS= 80><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($CarretTime) IN="$IOName2FmtVal(RR Shock Pos)" >
    <TAB DLGUNITS= 140><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanAvg(RR Shock Pos,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 200><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMin(RR Shock Pos,$ChartTimeMin,$ChartTimeMax)">
    <TAB DLGUNITS= 260><FIELD STYLE="STYLE_frame()+STYLE_protected()+ALIGN_cente r()" ROWS=1.2 COLS=12 UPDATEDBY=($Lap) IN="$IOChanMax(RR Shock Pos,$ChartTimeMin,$ChartTimeMax)">

    <ORIGIN>
    <BR LINES=4>
    <TAB DLGUNITS= 440>LAP AVERAGES
    <BR LINES=2>
    <TAB DLGUNITS= 330><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_protected()+ALIGN_center()" ROWS=1.2 COLS=12 ROWSPACE=1.0 IN="$FOut(%lg,x+_Lap_Start)" RESETBY=(_Lap_Start)>
    <BR LINES=2>
    <TAB DLGUNITS= 330><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanAvg( GPS_MPH,$LapStartTime(x+_Lap_Start),$LapEndTime(x+ _Lap_Start))<_MinMPH,STYLE_sunken()+LIGHT(RED())+S TYLE_protected(),IF($IOChanAvg(GPS_MPH,$LapStartTi me(x+_Lap_Start),$LapEndTime(x+_Lap_Start))>_MaxMP H,STYLE_sunken()+LIGHT(RED())+STYLE_protected(),ST YLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanAvg(GPS_MPH,$LapStartTime(x+_Lap_Start) ,$LapEndTime(x+_Lap_Start))" RESETBY=(_Lap_Start,_MinMPH,_MaxMPH)>


    <TAB DLGUNITS= 330><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanAvg( Engine RPM,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))<_MinRPM,STYLE_sunken()+LIGHT(RED())+STYLE _protected(),IF($IOChanAvg(Engine RPM,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))>_MaxRPM,STYLE_sunken()+LIGHT(RED())+STYLE _protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanAvg(Engine RPM,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))" RESETBY=(_Lap_Start,_MinRPM,_MaxRPM)>


    <TAB DLGUNITS= 330><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanAvg( Lateral G,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap_S tart))<_MinLatG,STYLE_sunken()+LIGHT(RED())+STYLE_ protected(),IF($IOChanAvg(Lateral G,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap_S tart))>_MaxLatG,STYLE_sunken()+LIGHT(RED())+STYLE_ protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanAvg(Lateral G,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap_S tart))" RESETBY=(_Lap_Start,_MinLatG,_MaxLatG)>


    <TAB DLGUNITS= 330><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanAvg( Accel G,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap_S tart))<_MinAccelG,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),IF($IOChanAvg(Accel G,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap_S tart))>_MaxAccelG,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanAvg(Accel G,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap_S tart))" RESETBY=(_Lap_Start,_MinAccelG,_MaxAccelG)>
    <BR LINES=2>
    <TAB DLGUNITS= 330><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanAvg( Steering Angle,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_L ap_Start))<_MinSteeringAngle,STYLE_sunken()+LIGHT( RED())+STYLE_protected(),IF($IOChanAvg(Steering Angle,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_L ap_Start))>_MaxSteeringAngle,STYLE_sunken()+LIGHT( RED())+STYLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanAvg(Steering Angle,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_L ap_Start))" RESETBY=(_Lap_Start,_MinSteeringAngle,_MaxSteering Angle)>


    <TAB DLGUNITS= 330><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanAvg( Throttle Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))<_MinThrottle,STYLE_sunken()+LIGHT(RED())+ STYLE_protected(),IF($IOChanAvg(Throttle Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))>_MaxThrottle,STYLE_sunken()+LIGHT(RED())+ STYLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanAvg(Throttle Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))" RESETBY=(_Lap_Start,_MinThrottle,_MaxThrottle)>


    <TAB DLGUNITS= 330><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanAvg( ABS Press,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_L ap_Start))<_MinABS,STYLE_sunken()+LIGHT(RED())+STY LE_protected(),IF($IOChanAvg(ABS Press,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_L ap_Start))>_MaxABS,STYLE_sunken()+LIGHT(RED())+STY LE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanAvg(ABS Press,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_L ap_Start))" RESETBY=(_Lap_Start,_MinABS,_MaxABS)>
    <BR LINES=2>
    <TAB DLGUNITS= 330><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanAvg( Battery Volt,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))<_MinVoltage,STYLE_sunken()+LIGHT(RED())+ STYLE_protected(),IF($IOChanAvg(Battery Volt,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))>_MaxVoltage,STYLE_sunken()+LIGHT(RED())+ STYLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanAvg(Battery Volt,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))" RESETBY=(_Lap_Start,_MinVoltage,_MaxVoltage)>


    <TAB DLGUNITS= 330><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanAvg( Water Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))<_MinWaterT,STYLE_sunken()+LIGHT(RED())+S TYLE_protected(),IF($IOChanAvg(Water Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))>_MaxWaterT,STYLE_sunken()+LIGHT(RED())+S TYLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanAvg(Water Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))" RESETBY=(_Lap_Start,_MinWaterT,_MaxWaterT)>


    <TAB DLGUNITS= 330><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanAvg( Oil Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))<_MinOilT,STYLE_sunken()+LIGHT(RED())+STY LE_protected(),IF($IOChanAvg(Oil Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))>_MaxOilT,STYLE_sunken()+LIGHT(RED())+STY LE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanAvg(Oil Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))" RESETBY=(_Lap_Start,_MinOilT,_MaxOilT)>


    <TAB DLGUNITS= 330><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanAvg( Trans Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))<_MinTransT,STYLE_sunken()+LIGHT(RED())+S TYLE_protected(),IF($IOChanAvg(Trans Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))>_MaxTransT,STYLE_sunken()+LIGHT(RED())+S TYLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanAvg(Trans Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))" RESETBY=(_Lap_Start,_MinTransT,_MaxTransT)>


    <TAB DLGUNITS= 330><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanAvg( Diff Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))<_MinDiffT,STYLE_sunken()+LIGHT(RED())+ST YLE_protected(),IF($IOChanAvg(Diff Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))>_MaxDiffT,STYLE_sunken()+LIGHT(RED())+ST YLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanAvg(Diff Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))" RESETBY=(_Lap_Start,_MinDiffT,_MaxDiffT)>


    <TAB DLGUNITS= 330><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanAvg( Oil Pressure,$LapStartTime(x+_Lap_Start),$LapEndTime(x +_Lap_Start))<_MinOilP,STYLE_sunken()+LIGHT(RED()) +STYLE_protected(),IF($IOChanAvg(Oil Pressure,$LapStartTime(x+_Lap_Start),$LapEndTime(x +_Lap_Start))>_MaxOilP,STYLE_sunken()+LIGHT(RED()) +STYLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanAvg(Oil Pressure,$LapStartTime(x+_Lap_Start),$LapEndTime(x +_Lap_Start))" RESETBY=(_Lap_Start,_MinOilP,_MaxOilP)>
    <BR LINES=2>
    <TAB DLGUNITS= 330><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanAvg( LF Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))<_MinLFSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),IF($IOChanAvg(LF Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))>_MaxLFSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanAvg(LF Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))" RESETBY=(_Lap_Start,_MinLFSP,_MaxLFSP)>


    <TAB DLGUNITS= 330><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanAvg( RF Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))<_MinRFSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),IF($IOChanAvg(RF Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))>_MaxRFSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanAvg(RF Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))" RESETBY=(_Lap_Start,_MinRFSP,_MaxRFSP)>


    <TAB DLGUNITS= 330><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanAvg( LR Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))<_MinLRSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),IF($IOChanAvg(LR Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))>_MaxLRSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanAvg(LR Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))" RESETBY=(_Lap_Start,_MinLRSP,_MaxLRSP)>


    <TAB DLGUNITS= 330><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanAvg( RR Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))<_MinRRSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),IF($IOChanAvg(RR Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))>_MaxRRSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanAvg(RR Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))" RESETBY=(_Lap_Start,_MinRRSP,_MaxRRSP)>

    <ORIGIN>
    <BR LINES=4>
    <TAB DLGUNITS= 745>LAP MINIMUMS
    <BR LINES=2>
    <TAB DLGUNITS= 635><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_protected()+ALIGN_center()" ROWS=1.2 COLS=12 ROWSPACE=1.0 IN="$FOut(%lg,x+_Lap_Start)" RESETBY=(_Lap_Start)>
    <BR LINES=2>
    <TAB DLGUNITS= 635><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMin( GPS_MPH,$LapStartTime(x+_Lap_Start),$LapEndTime(x+ _Lap_Start))<_MinMPH,STYLE_sunken()+LIGHT(RED())+S TYLE_protected(),IF($IOChanMin(GPS_MPH,$LapStartTi me(x+_Lap_Start),$LapEndTime(x+_Lap_Start))>_MaxMP H,STYLE_sunken()+LIGHT(RED())+STYLE_protected(),ST YLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMin(GPS_MPH,$LapStartTime(x+_Lap_Start) ,$LapEndTime(x+_Lap_Start))" RESETBY=(_Lap_Start,_MinMPH,_MaxMPH)>


    <TAB DLGUNITS= 635><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMin( Engine RPM,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))<_MinRPM,STYLE_sunken()+LIGHT(RED())+STYLE _protected(),IF($IOChanMin(Engine RPM,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))>_MaxRPM,STYLE_sunken()+LIGHT(RED())+STYLE _protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMin(Engine RPM,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))" RESETBY=(_Lap_Start,_MinRPM,_MaxRPM)>


    <TAB DLGUNITS= 635><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMin( Lateral G,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap_S tart))<_MinLatG,STYLE_sunken()+LIGHT(RED())+STYLE_ protected(),IF($IOChanMin(Lateral G,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap_S tart))>_MaxLatG,STYLE_sunken()+LIGHT(RED())+STYLE_ protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMin(Lateral G,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap_S tart))" RESETBY=(_Lap_Start,_MinLatG,_MaxLatG)>


    <TAB DLGUNITS= 635><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMin( Accel G,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap_S tart))<_MinAccelG,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),IF($IOChanMin(Accel G,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap_S tart))>_MaxAccelG,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMin(Accel G,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap_S tart))" RESETBY=(_Lap_Start,_MinAccelG,_MaxAccelG)>
    <BR LINES=2>
    <TAB DLGUNITS= 635><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMin( Steering Angle,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_L ap_Start))<_MinSteeringAngle,STYLE_sunken()+LIGHT( RED())+STYLE_protected(),IF($IOChanMin(Steering Angle,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_L ap_Start))>_MaxSteeringAngle,STYLE_sunken()+LIGHT( RED())+STYLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMin(Steering Angle,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_L ap_Start))" RESETBY=(_Lap_Start,_MinSteeringAngle,_MaxSteering Angle)>


    <TAB DLGUNITS= 635><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMin( Throttle Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))<_MinThrottle,STYLE_sunken()+LIGHT(RED())+ STYLE_protected(),IF($IOChanMin(Throttle Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))>_MaxThrottle,STYLE_sunken()+LIGHT(RED())+ STYLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMin(Throttle Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))" RESETBY=(_Lap_Start,_MinThrottle,_MaxThrottle)>


    <TAB DLGUNITS= 635><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMin( ABS Press,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_L ap_Start))<_MinABS,STYLE_sunken()+LIGHT(RED())+STY LE_protected(),IF($IOChanMin(ABS Press,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_L ap_Start))>_MaxABS,STYLE_sunken()+LIGHT(RED())+STY LE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMin(ABS Press,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_L ap_Start))" RESETBY=(_Lap_Start,_MinABS,_MaxABS)>
    <BR LINES=2>
    <TAB DLGUNITS= 635><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMin( Battery Volt,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))<_MinVoltage,STYLE_sunken()+LIGHT(RED())+ STYLE_protected(),IF($IOChanMin(Battery Volt,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))>_MaxVoltage,STYLE_sunken()+LIGHT(RED())+ STYLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMin(Battery Volt,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))" RESETBY=(_Lap_Start,_MinVoltage,_MaxVoltage)>


    <TAB DLGUNITS= 635><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMin( Water Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))<_MinWaterT,STYLE_sunken()+LIGHT(RED())+S TYLE_protected(),IF($IOChanMin(Water Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))>_MaxWaterT,STYLE_sunken()+LIGHT(RED())+S TYLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMin(Water Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))" RESETBY=(_Lap_Start,_MinWaterT,_MaxWaterT)>


    <TAB DLGUNITS= 635><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMin( Oil Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))<_MinOilT,STYLE_sunken()+LIGHT(RED())+STY LE_protected(),IF($IOChanMin(Oil Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))>_MaxOilT,STYLE_sunken()+LIGHT(RED())+STY LE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMin(Oil Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))" RESETBY=(_Lap_Start,_MinOilT,_MaxOilT)>


    <TAB DLGUNITS= 635><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMin( Trans Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))<_MinTransT,STYLE_sunken()+LIGHT(RED())+S TYLE_protected(),IF($IOChanMin(Trans Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))>_MaxTransT,STYLE_sunken()+LIGHT(RED())+S TYLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMin(Trans Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))" RESETBY=(_Lap_Start,_MinTransT,_MaxTransT)>


    <TAB DLGUNITS= 635><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMin( Diff Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))<_MinDiffT,STYLE_sunken()+LIGHT(RED())+ST YLE_protected(),IF($IOChanMin(Diff Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))>_MaxDiffT,STYLE_sunken()+LIGHT(RED())+ST YLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMin(Diff Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))" RESETBY=(_Lap_Start,_MinDiffT,_MaxDiffT)>


    <TAB DLGUNITS= 635><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMin( Oil Pressure,$LapStartTime(x+_Lap_Start),$LapEndTime(x +_Lap_Start))<_MinOilP,STYLE_sunken()+LIGHT(RED()) +STYLE_protected(),IF($IOChanMin(Oil Pressure,$LapStartTime(x+_Lap_Start),$LapEndTime(x +_Lap_Start))>_MaxOilP,STYLE_sunken()+LIGHT(RED()) +STYLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMin(Oil Pressure,$LapStartTime(x+_Lap_Start),$LapEndTime(x +_Lap_Start))" RESETBY=(_Lap_Start,_MinOilP,_MaxOilP)>
    <BR LINES=2>
    <TAB DLGUNITS= 635><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMin( LF Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))<_MinLFSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),IF($IOChanMin(LF Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))>_MaxLFSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMin(LF Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))" RESETBY=(_Lap_Start,_MinLFSP,_MaxLFSP)>


    <TAB DLGUNITS= 635><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMin( RF Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))<_MinRFSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),IF($IOChanMin(RF Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))>_MaxRFSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMin(RF Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))" RESETBY=(_Lap_Start,_MinRFSP,_MaxRFSP)>


    <TAB DLGUNITS= 635><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMin( LR Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))<_MinLRSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),IF($IOChanMin(LR Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))>_MaxLRSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMin(LR Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))" RESETBY=(_Lap_Start,_MinLRSP,_MaxLRSP)>


    <TAB DLGUNITS= 635><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMin( RR Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))<_MinRRSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),IF($IOChanMin(RR Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))>_MaxRRSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMin(RR Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))" RESETBY=(_Lap_Start,_MinRRSP,_MaxRRSP)>

    <ORIGIN>
    <BR LINES=4>
    <TAB DLGUNITS= 1050>LAP MAXIMUMS
    <BR LINES=2>
    <TAB DLGUNITS= 940><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_protected()+ALIGN_center()" ROWS=1.2 COLS=12 ROWSPACE=1.0 IN="$FOut(%lg,x+_Lap_Start)" RESETBY=(_Lap_Start)>
    <BR LINES=2>
    <TAB DLGUNITS= 940><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMax( GPS_MPH,$LapStartTime(x+_Lap_Start),$LapEndTime(x+ _Lap_Start))<_MinMPH,STYLE_sunken()+LIGHT(RED())+S TYLE_protected(),IF($IOChanMax(GPS_MPH,$LapStartTi me(x+_Lap_Start),$LapEndTime(x+_Lap_Start))>_MaxMP H,STYLE_sunken()+LIGHT(RED())+STYLE_protected(),ST YLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMax(GPS_MPH,$LapStartTime(x+_Lap_Start) ,$LapEndTime(x+_Lap_Start))" RESETBY=(_Lap_Start,_MinMPH,_MaxMPH)>


    <TAB DLGUNITS= 940><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMax( Engine RPM,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))<_MinRPM,STYLE_sunken()+LIGHT(RED())+STYLE _protected(),IF($IOChanMax(Engine RPM,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))>_MaxRPM,STYLE_sunken()+LIGHT(RED())+STYLE _protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMax(Engine RPM,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))" RESETBY=(_Lap_Start,_MinRPM,_MaxRPM)>


    <TAB DLGUNITS= 940><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMax( Lateral G,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap_S tart))<_MinLatG,STYLE_sunken()+LIGHT(RED())+STYLE_ protected(),IF($IOChanMax(Lateral G,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap_S tart))>_MaxLatG,STYLE_sunken()+LIGHT(RED())+STYLE_ protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMax(Lateral G,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap_S tart))" RESETBY=(_Lap_Start,_MinLatG,_MaxLatG)>


    <TAB DLGUNITS= 940><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMax( Accel G,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap_S tart))<_MinAccelG,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),IF($IOChanMax(Accel G,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap_S tart))>_MaxAccelG,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMax(Accel G,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap_S tart))" RESETBY=(_Lap_Start,_MinAccelG,_MaxAccelG)>
    <BR LINES=2>
    <TAB DLGUNITS= 940><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMax( Steering Angle,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_L ap_Start))<_MinSteeringAngle,STYLE_sunken()+LIGHT( RED())+STYLE_protected(),IF($IOChanMax(Steering Angle,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_L ap_Start))>_MaxSteeringAngle,STYLE_sunken()+LIGHT( RED())+STYLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMax(Steering Angle,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_L ap_Start))" RESETBY=(_Lap_Start,_MinSteeringAngle,_MaxSteering Angle)>


    <TAB DLGUNITS= 940><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMax( Throttle Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))<_MinThrottle,STYLE_sunken()+LIGHT(RED())+ STYLE_protected(),IF($IOChanMax(Throttle Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))>_MaxThrottle,STYLE_sunken()+LIGHT(RED())+ STYLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMax(Throttle Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))" RESETBY=(_Lap_Start,_MinThrottle,_MaxThrottle)>


    <TAB DLGUNITS= 940><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMax( ABS Press,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_L ap_Start))<_MinABS,STYLE_sunken()+LIGHT(RED())+STY LE_protected(),IF($IOChanMax(ABS Press,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_L ap_Start))>_MaxABS,STYLE_sunken()+LIGHT(RED())+STY LE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMax(ABS Press,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_L ap_Start))" RESETBY=(_Lap_Start,_MinABS,_MaxABS)>
    <BR LINES=2>
    <TAB DLGUNITS= 940><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMax( Battery Volt,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))<_MinVoltage,STYLE_sunken()+LIGHT(RED())+ STYLE_protected(),IF($IOChanMax(Battery Volt,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))>_MaxVoltage,STYLE_sunken()+LIGHT(RED())+ STYLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMax(Battery Volt,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))" RESETBY=(_Lap_Start,_MinVoltage,_MaxVoltage)>


    <TAB DLGUNITS= 940><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMax( Water Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))<_MinWaterT,STYLE_sunken()+LIGHT(RED())+S TYLE_protected(),IF($IOChanMax(Water Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))>_MaxWaterT,STYLE_sunken()+LIGHT(RED())+S TYLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMax(Water Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))" RESETBY=(_Lap_Start,_MinWaterT,_MaxWaterT)>


    <TAB DLGUNITS= 940><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMax( Oil Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))<_MinOilT,STYLE_sunken()+LIGHT(RED())+STY LE_protected(),IF($IOChanMax(Oil Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))>_MaxOilT,STYLE_sunken()+LIGHT(RED())+STY LE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMax(Oil Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))" RESETBY=(_Lap_Start,_MinOilT,_MaxOilT)>


    <TAB DLGUNITS= 940><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMax( Trans Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))<_MinTransT,STYLE_sunken()+LIGHT(RED())+S TYLE_protected(),IF($IOChanMax(Trans Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))>_MaxTransT,STYLE_sunken()+LIGHT(RED())+S TYLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMax(Trans Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))" RESETBY=(_Lap_Start,_MinTransT,_MaxTransT)>


    <TAB DLGUNITS= 940><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMax( Diff Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))<_MinDiffT,STYLE_sunken()+LIGHT(RED())+ST YLE_protected(),IF($IOChanMax(Diff Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))>_MaxDiffT,STYLE_sunken()+LIGHT(RED())+ST YLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMax(Diff Temp,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_La p_Start))" RESETBY=(_Lap_Start,_MinDiffT,_MaxDiffT)>


    <TAB DLGUNITS= 940><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMax( Oil Pressure,$LapStartTime(x+_Lap_Start),$LapEndTime(x +_Lap_Start))<_MinOilP,STYLE_sunken()+LIGHT(RED()) +STYLE_protected(),IF($IOChanMax(Oil Pressure,$LapStartTime(x+_Lap_Start),$LapEndTime(x +_Lap_Start))>_MaxOilP,STYLE_sunken()+LIGHT(RED()) +STYLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMax(Oil Pressure,$LapStartTime(x+_Lap_Start),$LapEndTime(x +_Lap_Start))" RESETBY=(_Lap_Start,_MinOilP,_MaxOilP)>
    <BR LINES=2>
    <TAB DLGUNITS= 940><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMax( LF Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))<_MinLFSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),IF($IOChanMax(LF Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))>_MaxLFSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMax(LF Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))" RESETBY=(_Lap_Start,_MinLFSP,_MaxLFSP)>


    <TAB DLGUNITS= 940><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMax( RF Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))<_MinRFSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),IF($IOChanMax(RF Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))>_MaxRFSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMax(RF Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))" RESETBY=(_Lap_Start,_MinRFSP,_MaxRFSP)>


    <TAB DLGUNITS= 940><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMax( LR Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))<_MinLRSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),IF($IOChanMax(LR Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))>_MaxLRSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMax(LR Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))" RESETBY=(_Lap_Start,_MinLRSP,_MaxLRSP)>


    <TAB DLGUNITS= 940><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMax( RR Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))<_MinRRSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),IF($IOChanMax(RR Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))>_MaxRRSP,STYLE_sunken()+LIGHT(RED())+STYL E_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMax(RR Shock Pos,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_Lap _Start))" RESETBY=(_Lap_Start,_MinRRSP,_MaxRRSP)>
    <BR LINES=2>
    \\<TAB DLGUNITS= 940><XYTABLE XSIZE=6 YSIZE=1 STYLE="STYLE_frame()+ALIGN_center()+IF($IOChanMax( LF Ride Height,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_ Lap_Start))<_MinLFRH,STYLE_sunken()+LIGHT(RED())+S TYLE_protected(),IF($IOChanMax(LF Ride Height,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_ Lap_Start))>_MaxLFRH,STYLE_sunken()+LIGHT(RED())+S TYLE_protected(),STYLE_protected()))" ROWS=1.2 COLS=12 IN="$IOChanMax(LF Ride Height,$LapStartTime(x+_Lap_Start),$LapEndTime(x+_ Lap_Start))" RESETBY=(_Lap_Start,_MinLFRH,_MaxLFRH)>

    <ORIGIN>
    <BR LINES=4>


    <TAB DLGUNITS=1317>ALARM CONDITION

    <TAB DLGUNITS=1300>MIN<TAB DLGUNITS=1395>MAX

    <TAB DLGUNITS=1295><INPUT TYPE=text NAME="_MinMPH" SIZE=6> Speed<TAB DLGUNITS=1390><INPUT TYPE=text NAME="_MaxMPH" SIZE=6>

    <TAB DLGUNITS=1295><INPUT TYPE=text NAME="_MinRPM" SIZE=6> Engine RPM<TAB DLGUNITS=1390><INPUT TYPE=text NAME="_MaxRPM" SIZE=6>

    <TAB DLGUNITS=1295><INPUT TYPE=text NAME="_MinLatG" SIZE=6> Lateral G<TAB DLGUNITS=1390><INPUT TYPE=text NAME="_MaxLatG" SIZE=6>

    <TAB DLGUNITS=1295><INPUT TYPE=text NAME="_MinAccelG" SIZE=6> Accel G<TAB DLGUNITS=1390><INPUT TYPE=text NAME="_MaxAccelG" SIZE=6><BR LINES=2>
    <TAB DLGUNITS=1295><INPUT TYPE=text NAME="_MinSteeringAngle" SIZE=6> Steering Angle<TAB DLGUNITS=1390><INPUT TYPE=text NAME="_MaxSteeringAngle" SIZE=6>

    <TAB DLGUNITS=1295><INPUT TYPE=text NAME="_MinThrottle" SIZE=6> Throttle<TAB DLGUNITS=1390><INPUT TYPE=text NAME="_MaxThrottle" SIZE=6>

    <TAB DLGUNITS=1295><INPUT TYPE=text NAME="_MinABS" SIZE=6> ABS Press<TAB DLGUNITS=1390><INPUT TYPE=text NAME="_MaxABS" SIZE=6><BR LINES=2>
    <TAB DLGUNITS=1295><INPUT TYPE=text NAME="_MinVoltage" SIZE=6> Battery Voltage<TAB DLGUNITS=1390><INPUT TYPE=text NAME="_MaxVoltage" SIZE=6>

    <TAB DLGUNITS=1295><INPUT TYPE=text NAME="_MinWaterT" SIZE=6> Water Temp<TAB DLGUNITS=1390><INPUT TYPE=text NAME="_MaxWaterT" SIZE=6>

    <TAB DLGUNITS=1295><INPUT TYPE=text NAME="_MinOilT" SIZE=6> Oil Temp<TAB DLGUNITS=1390><INPUT TYPE=text NAME="_MaxOilT" SIZE=6>

    <TAB DLGUNITS=1295><INPUT TYPE=text NAME="_MinTransT" SIZE=6> Trans Temp<TAB DLGUNITS=1390><INPUT TYPE=text NAME="_MaxTransT" SIZE=6>

    <TAB DLGUNITS=1295><INPUT TYPE=text NAME="_MinDiffT" SIZE=6> Diff Temp<TAB DLGUNITS=1390><INPUT TYPE=text NAME="_MaxDiffT" SIZE=6>

    <TAB DLGUNITS=1295><INPUT TYPE=text NAME="_MinOilP" SIZE=6> Oil Pressure<TAB DLGUNITS=1390><INPUT TYPE=text NAME="_MaxOilP" SIZE=6><BR LINES=2>
    <TAB DLGUNITS=1295><INPUT TYPE=text NAME="_MinLFSP" SIZE=6> LF Shock Pos<TAB DLGUNITS=1390><INPUT TYPE=text NAME="_MaxLFSP" SIZE=6>

    <TAB DLGUNITS=1295><INPUT TYPE=text NAME="_MinRFSP" SIZE=6> RF Shock Pos<TAB DLGUNITS=1390><INPUT TYPE=text NAME="_MaxRFSP" SIZE=6>

    <TAB DLGUNITS=1295><INPUT TYPE=text NAME="_MinLRSP" SIZE=6> LR Shock Pos<TAB DLGUNITS=1390><INPUT TYPE=text NAME="_MaxLRSP" SIZE=6>

    <TAB DLGUNITS=1295><INPUT TYPE=text NAME="_MinRRSP" SIZE=6> RR Shock Pos<TAB DLGUNITS=1390><INPUT TYPE=text NAME="_MaxRRSP" SIZE=6><BR LINES=2>

    \\add track map
    <ORIGIN>
    <BR LINES=35>
    <TAB DLGUNITS=1296>
    <CHART ASPECTRATIO
    XNAME="@_MAP_CircleTrack_Channel :Run_PosX" YNAME="@_MAP_CircleTrack_Channel :Run_PosY" WIDTH=1 COLS=30 ROWS=10
    TIMEMIN="$LapStartTime" TIMEMAX="$LapEndTime"
    XMIN="$IOName2Min(@_MAP_CircleTrack_Channel :Plot_RefX)" XMAX="$IOName2Max(@_MAP_CircleTrack_Channel :Plot_RefX)"
    YMIN="$IOName2Min(@_MAP_CircleTrack_Channel :Plot_RefY)" YMAX="$IOName2Max(@_MAP_CircleTrack_Channel :Plot_RefY)"
    FOREGROUND="WHITE()" BACKGROUND="GREY()"
    RESETBY=($LapStartTime) UPDATEDBY=($LapStartTime,$CarretTime)>
    Attached Images Attached Images

  10. #10

    Default Re: Custom Runlog Pages

    Going to be spending my leave working on doing some more custom runlog pages.

    Plan is to try and replicate the following graphs...

    One is a G Plot, but has a circle drawn based on a constant for tyre grip. This shows areas where you are not using the maximum amount of grip available. Whilst you could use a combined G graph (as it never goes negative) this is a much better visual aid. Further, using the track map you can see what part of the corner is your weak link.

    SMSP by Eipeip, on Flickr

    Another one, not sure how easy this will be due to the calculations involved is an acceleration graph per gear. This graph uses the change in velocity over time. This will help with gear change selection as well as identify areas where you are not accelerating at the best possible rate for the track/car.

    Acceleration by Eipeip, on Flickr

Page 1 of 5 123 ... LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
About us
Holley has been the undisputed leader in fuel systems for over 100 years. Holley carburetors have powered every NASCAR® Sprint® Cup team and nearly every NHRA® Pro–Stock champion for four decades. Now, Holley EFI is dominating the performance world as well as our products for GM's LS engine. Holley's products also include performance fuel pumps, intake manifolds & engine dress–up products for street performance, race and marine applications. As a single solution, or partnered with products from other Holley companies - Hooker Headers, Flowtech Headers, NOS Nitrous, Weiand, Earl's Performance Plumbing, or Diablosport - Holley products can give you the edge you need over the competition.
Join us