NeedleGauge
This example NeedleGauge implements a tachometer using the ‘rpm’ attribute.
<gauge>
<name>tachogauge</name>
<type>NeedleGauge</type>
<x>1160</x>
<y>60</y>
<radius>226</radius>
<min>0</min>
<max>8000</max>
<initial>0</initial>
<attribute>rpm</attribute>
<colours>red</colours>
<background>tvrtach600.bmp</background>
<nightbackground loadondemand="1">tvrtach600night.bmp</nightbackground>
<visible>1</visible>
<units>rpm</units>
<needle>1</needle>
<needlefile>tvrneedle1920black.bmp</needlefile>
<needletail>100</needletail>
<arcalpha>125</arcalpha>
<arc>0</arc>
<arcstroke>38</arcstroke>
<zorder>1</zorder>
<smoothing>0.2</smoothing>
</gauge>
Note that where image names are specified, no folder name is used. All images are stored in a folder, c:\media, on the SD card. However, See the image vault section for a higher performance method of loading images.
Attribute | Mandatory? | Value Type | Description |
---|---|---|---|
x | Yes | Integer | The x coordinate of the bottom left of the gauge |
y | Yes | Integer | The y coordinate of the bottom left of the gauge |
radius | Yes | Integer | The basic radius of the gauge. This is used to draw a vector based needle if no needle image is defined |
min | Yes | Integer | The minimum value of the gauge |
max | Yes | Integer | The maximum value of the gauge |
initial | Yes | Integer | The value the gauge should display if no input is received |
attribute | Yes | String | The name of the attribute the gauge is to be based on |
colours | Yes | String | The base colour definition of the gauge. This is the colour used to draw any vector graphics such as a vector based needle. When a NeedleGauge is properly designed, this colour is not used. |
visible | No | Integer (0 or 1) | Defines whether the gauge should be displayed or not when the page is first drawn |
units | Yes | String | The units to be used on the gauge. Currently must be specified but may not actually be used. |
needle | No | Integer (0 or 1) | Indicates whether a needle should be drawn or not |
needlefile | No | String | Filename of a bitmap file to be used to render the needle. If no file is supplied, a vector version of the needle will be drawn using the defined radius. |
needletail | No | String | |
arc | No | Integer 1 or 0 | Defines whether a coloured arc should be drawn between the start angle and the current needle position. If not specified, defaults to off (0) |
arcstroke | No | Integer | The line width of the arc to be drawn if enabled |
arcalpha | No | Integer 0 to 255 | The alpha (opacity) of the arc being drawn if enabled. 255 is solid. 0 is totally transparent (you won’t see anything at all! |
needleydelta | No | Integer | Offset in the Y direction of the pivot point of the needle. If not specified, the pivot will be calculated to be in the centre of the gauge as defined by the gauge dimensions |
needlexdelta | No | Integer | Offset in the X direction of the pivot point of the needle |
zeroangle | No | Integer. Default 225 | The angle of the zero point on the gauge. 0 degrees would be 3 o’clock if you were looking at a clock face. 270 degrees would be 6 o’clock |
rangedegrees | No | Integer. Default 270 | The range in degrees the needle should sweep between the minimum and maximum values |
background | No, but recommended | String | The filename of the background image to be used to draw the gauge’s clock. If not specified, nothing will be drawn but the needle. This gauge has an optional ‘loadondemand’ specifier (see example above), which if specified means the background image won’t be loaded from disk until it is needed. In a complex cluster definition this can save a bit of initial boot time as fewer resources need to be loaded before the startup cluster can be displayed |
nightbackground | No | String | The filename of the background image to be used for the gauge when the system is in ‘night’ mode. Typically such an image should have less bright colours (on my own car I simulated the glow of the backlit dials). This setting also supports the ‘loadondemand’ specifier. It is intended to help in scenarios where the screen cannot be dimmed. |
delta | No | Integer | Default 0. Enables the value used by the gauge to be offset by a set amount. For example, coolant temperature values from the ECU are offset by 40 degrees to enable a more sensible temperature range. Setting delta to -40 will provide a correct temperature reading from the 0 to 255 range of the value sent by the ECU |
xscale | No | Floating point | Scale the entire gauge in the X direction |
yscale | No | Floating point | Scale the entire gauge in the Y direction |
outlinethickness | No | Integer, default 0 | For a nonzero value, causes the system to draw a circle on the area used by the gauge as defined by its width and height. The line width used will be the specified outline thickness. |
w | Yes | Integer | Width in pixels the gauge will take up. Not actually used to reserve space, so can be set to something approximate. |
h | Yes | Integer | Height in pixels the gauge will take up. Not actually used to reserve space, so can be set to something approximate. |
colours_script | No | String | Pascalscript definition of a standardised function which can set the colour of the gauge based on a script. Although this setting is supported on the Needle Gauge, it is more relevant for other gauges such as bar charts or values. |
gradienttype | No | String. Valid values radial, conical, none. | This specifies if a colour gradient is to be used when drawing an arc. |
smoothing | No | Floating point, default value 0.0 (no smoothing) | This setting provides some damping for the gauge and helps to smooth out the flow of the needle between the values being received from the ECU. The more damping you add (bigger smoothing number), the more lag you add to the needle. A sensible smoothing number for a tachometer is about 0.2, and for a speedometer about 0.08. If no smoothing is set, the needle will always reflect the current value received from the ECU. In the case of, say, RPM, this will make the needle slightly jumpy. For certain gauges such as coolant temperature, you don’t want any smoothing at all. |
needledirection | No | Integer, 0 or 1 | Default 0. This defines whether the needle should travel in the clockwise direction (0) or anticlockwise direction (1). |
mindrawvalue | No | Integer | If the current value of the attribute the gauge is based on is less than the value supplied here, then the needle and/or arc won’t be drawn. |