DeltaDash - In Car Virtual Dash

Customisable In-Car Dashboard Display
This feature of DeltaDash allows custom screens to be created for display of data from the ECU (and any external sensors that may be present). Design and sharing of screen designs may be discussed with other DeltaDash users on the EcuTek forums.

Introduction

This article describes how to create custom in car dashboard screens with DeltaDash. Customisable in car screens are intended to allow use of in car LCD screens such as DVD and SatNav screens. Screen layouts may be fully customised to allow display of virtually any engine (and external sensor) data including analogue, digital and fault code data simultaneously.

This feature is currently under development and so is subject to change, in order to refine the functionality. The creation of custom screens requires thought and effort. Experience will be built up as the user explores the features and options available. If you get into difficulty, visit the EcuTek forums where other users will be able to assist you - support of this feature is via the EcuTek forum only. Well designed screens (with permission from the author) may be incorporated into DeltaDash as some of the standard screens, so get designing !

DeltaDash Version

The earliest DeltaDash version supporting in car dashboard screens is 1.37. Download the latest version from the web site for the most up to date features support.

Designing Custom Screens

DeltaDash allows up to 10 custom dashboard screens to be created, numbered from 0 to 9. When the in car dash screen is selected from the tools menu of DeltaDash, the display will default to screen 0. The user may then switch between screens by using the number keys 0 to 9 or the cursor keys. Hitting 'Enter' reloads the current dashboard screen - this is useful when designing screens.

Each dashboard screen is stored in directory named '0' to '9' within a subdirectory named 'InCarDashScreens' within the DeltaDash directory. E.g. A typical directory for a custom screen would be: 'C:\DeltaDash\InCarDashScreens\0\'. All files relating to a single dash screen must be present in its numbered directory. At a minimum, a custom dashboard screen consists of a single configuration file named 'Form.cfg', though other files may be present, such as bitmaps and sounds.

When DeltaDash is run for the first time on a PC without any custom screens defined, it will generate 10 sample screens that may then more easily be edited by the user.

The Dashboard Configuration File - Form.cfg

This file contains all configuration information for a single custom dashboard screen. In order to create each custom dash screen, a form.cfg file must be edited. The format of the file is described below.

Objects, Classes, Properties and Data Types

The form configuration file defines a number of objects. Each object corresponds to one of the components on the dashboard screen. Each object has a class that defines what 'class' of dashboard component the object is, such as a 'RoundGauge' or an 'LedBarGauge'. Based on this class, the object has a number of properties that may be adjusted to alter the gauge's function and appearance, such as 'Colour', 'NeedleWidth' and 'Font'. Furthermore, each property has a type that defines the type of data that the property holds, such as 'Integer', 'Real Number' and 'String'.

Comments

Comments may be placed in the file by starting the line with a hash '#' character. This character must be the first on the line, with no spaces preceding it.

Objects

The example below shows the structure of an object within the form.cfg file. Each object always begins with the word 'object', followed by the object's name. The name only serves as description to remind the designer what the object is for e.g. CoolantTempGauge. Following the name of the object is a colon ':' followed by the class of the object such as TLedBarGauge. Note that the object class always begins with a capital 'T'. Following this are a number of lines, each setting the value of a single property. Finally, the object ends with the word 'end'.

  object <Name>: T<ObjectClass>
    <AnIntegerProperty>    = <Integer>
    <ARealNumberProperty>  = <Real Number>
    <AStringProperty>      = <String>
    <ABooleanProperty>     = <Boolean>
    <AnOptionListProperty> = <Option>
    ...
  end

Classes

Below is the current list of object classes available to the dashboard designer when designing custom screens. Each of these is described in more detail later on.

Properties

The list of properties that may be set for each object class are detailed later in this document. There are many properties that are common to all classes, such as properties relating to an object's position on the screen (top, left, width & height) and general appearance (color, font & transparent). There are also properties that are specific to certain object classes such as NeedleWidth for a RoundGauge object.

Types

General Properties

This is a list of general properties that are available on several components.

Dash Gauge Form

This is the surface on which all dashboard components are placed. Note from the example below that all other components are 'nested' within the DashGaugeForm.

  object DashGaugeForm: TDashGaugeForm
    ClientHeight = 480
    ClientWidth = 640
    Color = $000000
    Screen = 0
    object DashBackground : TDashBackground
      ...
    end  
    object rgVehSpd: TRoundGauge
      ...
    end
  end

Dash Background

Allows a background image to be specified. If used, this should be the first component specified to ensure that it appears beneath all other components.

Example Usage

  object DashBackground: TDashBackground
    Left = 0
    Top = 0
    Width = 640
    Height = 480
    Transparent = False
    Position = dbTiled
    BitmapFile = 'Background.bmp'
  end

LED Bar Gauge

 

Displays a bar graph component, mimicking a line of LEDs.

Example Usage

  object LedBarGaugeForMAP: TLedBarGauge
    Left = 568
    Top = 8
    Width = 65
    Height = 402
    Transparent = False
    Caption = 'LedBarGauge1'
    Color = clBlack
    Invert = False
    UpdateInterval = 1
    UpdateOffset = 0
    DataSource = ddsECU
    DataChannelECUAnalogue = epMap
    DataChannelExternal = lj0
    MaxVal = 50
    SegCount = 40
    Density = 0.8
    Rounded = False
    PeakShow = True
    PeakPeriod = 5000
    SegmentColoursOn = '$FF2020,$20FF20,$20FF20,$2020FF,$2020FF'
    SegmentColoursOff = '$800000,$008000,$008000,$000080,$000080'
    SegmentColourIdxs = '0,20,28,34,39'
  end

Round Gauge

 

 

Displays a highly configurable round gauge, suitable for displaying parameters such as engine RPM, vehicle speed, water temperature etc.

Note that for the round gauge, the values for the MinVal and MaxVal properties may be reversed in order to cause the needle to move anti-clockwise for increasing values. The normal behaviour would be a clockwise movement of the needle for increasing values, though this feature may be useful for gauges which only use a portion of the available 360 degrees available, such as 20 to 160 degrees.

Example Usage

  object rgRPM: TRoundGauge
    Left = 64
    Top = 102
    Width = 297             
    Height = 297
    Transparent = True
    Caption = 'Engine RPM'
    Color = clBlack
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clOlive
    Font.Height = -16
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    Invert = False
    UpdateInterval = 1
    UpdateOffset = 0
    DataSource = ddsECU
    DataChannelECUAnalogue = epEngspd
    DataChannelExternal = lj0
    MaxVal = 8000
    AngleStart = -135
    AngleEnd = 135
    AxleRadius = 20
    AxleColour = clGray
    SmallTicks = 4
    TickCount = 17
    TickWidth = 2
    TickWidthSmall = 0
    TickColourSmall = clOlive
    TickColour = clYellow
    TickTextRadius = 87
    TickStart = 100
    TickEnd = 135
    TickStartSmall = 120
    TickEndSmall = 135
    NeedleStart = 22
    NeedleEnd = 76
    NeedleWidth = 4
    NeedleColour = clRed
    TextDivide = 1000
    TextInterval = 2
    TextDPs = 0
    TickTextFont.Charset = DEFAULT_CHARSET
    TickTextFont.Color = clOlive
    TickTextFont.Height = -19
    TickTextFont.Name = 'MS Sans Serif'
    TickTextFont.Style = []
    BandStart = 138
    BandEnd = 144
    BandColours = '$20FF20,$20FF20,$2020FF,$2020FF'
    BandIndices = '0,5500,6500,7200'
    PeakShow = True
    PeakPeriod = 5000
    TroughShow = True
    TroughPeriod = 2000
  end

SwitchDashGauge

This component is used to display the state of a digital parameter of the ECU, such as the rear defog switch. The indicator may be set to one of a number of shapes and will change colour depending on the state of the digital parameter. Furthermore, bitmaps and sounds may be specified to provide further indications.

  object SwitchDashGauge1: TSwitchDashGauge
    Left = 456
    Top = 72
    Width = 97
    Height = 33
    Transparent = False
    Caption = 'SwitchDashGauge1'
    Invert = False
    UpdateInterval = 1
    UpdateOffset = 0
    Shape = dsRoundedRectangle
    ColourTrue = clRed
    ColourFalse = clGray
    BitmapsUse = False
    SoundUse = False
    DataSource = ddsECU
    DataChannelECUDigital = esDefogSw
  End

Threshold Gauge

The threshold gauge indicates when the value of an analogue parameter exceeds the specified threshold. It is based on the SwitchDashGauge and so inherits its properties for colours, bitmaps and sounds.

  object ThresholdGauge1: TThresholdGauge
    Left = 456
    Top = 8
    Width = 97
    Height = 33
    Transparent = False
    Invert = False
    UpdateInterval = 1
    UpdateOffset = 0
    Shape = dsRoundedRectangle
    ColourTrue = clRed
    ColourFalse = clGray
    BitmapsUse = False
    SoundUse = False
    Threshold = 30
    DataSource = ddsECU
    DataChannelECUAnalogue = epMap
    DataChannelExternal = lj0
  End

Dash Text

Displays a line of static text at any angle. Useful for labelling dashboard components.

  object DashText2: TDashText
    Left = 573
    Top = 411
    Width = 56
    Height = 17
    Transparent = True
    Caption = 'Boost'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWhite
    Font.Height = -13
    Font.Name = 'MS Sans Serif'
    Font.Style = []
  end

Analogue Text Gauge

This component displays an analogue ECU parameter as a text string. For example, it may be used to display the value of a parameter below a bar graph for the same parameter.

  object AnalogueTextGauge: TAnalTextGauge
    Left = 568
    Top = 424
    Width = 65
    Height = 17
    Transparent = False
    Caption = 'AnalTextGauge2'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWhite
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    Invert = False
    UpdateInterval = 1
    UpdateOffset = 0
    DataSource = ddsECU
    DataChannelECUAnalogue = epMap
    DataChannelExternal = lj0
    DecimalPlaces = 0
  end

Dash DTC Text

 

Displays any current and historic trouble codes present in a single line of text. If more than one trouble code is present, the component will cycle through all codes present. Note that due to the way in which this component is implemented (so as not to impact on the performance of other gauges) it may take a few seconds before a new trouble code is displayed.

  object DashDtcText1: TDashDtcText
    Left = 8
    Top = 448
    Width = 625
    Height = 25
    Transparent = True
    Color = clBlack
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clYellow
    Font.Height = -16
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    UpdateInterval = 2
    UpdateOffset = 0
    CycleDelay = 3000
  End

 

 


HOME

ECUTEK (Australia)
Phone: intl+ 61 2
9767 4545  Email: Info@ECUTEK.com.au

Copyright 2002 - 2007 All rights reserved.
Some content of this web site is used with permission from EcuTek Ltd. Uxbridge UK.

www.WebStartDesign.com.au

OzHosting