Jump to content
Sign in to follow this  
harryw

Touchdown speed gauge similar to FSUIPC plugin (for folks without FSUIPC)

Recommended Posts

Hey all,

this thread:

http://forum.avsim.net/topic/469334-landing-rate-plugin-for-fsuipc-improve-your-landings-fsxp3d/

 

inspired me to try myself at gauge programming, since I don't have FSUIPC and wanted something similar:

 

VSpeed.jpg

 

 

It's a bit more involved that the FSUIPC implementation  - it requires a new panel definition in the airplanes for which the gauge is to be used; this is what I'm using:

 

[Window10]
visible=1
size_mm=80,50
window_size=0.08,0.05
window_pos=0.0,0.5
background_color=0,0,0
ident=14080
zorder=5
alpha_blend=0.4
type=special
gauge00=Touchdown!VSpeed,0,0

 

(ident has to be a number greater than 10000 not used in the panel.cfg, and replace the 10 in [Window10] with a number that doesn't clash with any other window, probably best to stay greater than 10.

 

in the gauges directory, create a folder named 'Touchdown' and create a file named 'VSpeed.xml' in there, containing the following code:

 

<?xml version="1.0" encoding="UTF-8"?>

<SimBase.Document
        Type="AceXML"
        version="1,0"
        id="VSpeed">
    <Descr>AceXML Document</Descr>
    <SimGauge.Gauge id="Gauge">
        <Update>
            <Frequency>6</Frequency>
            <Script>
                (A:SIM ON GROUND, bool)
                if{
                    (L:TookOff,bool)
                    if{
                        0 (>L:TookOff)
                        (E:ABSOLUTE TIME,Seconds) 7 +  (>L:Timer)
                    }
                 }
                 els{
                     (A:VERTICAL SPEED, Feet per minute) (>L:VSpeed)
                     (A:GROUND VELOCITY, Knots) (>L:HSpeed)
                     1 (>L:TookOff)
                 }
             </Script>
         </Update>
        <Element id="Touchdown">
            <Visibility>(E:ABSOLUTE TIME,Seconds)  (L:Timer,Seconds)  <  </Visibility>
            <Element id="VSpeed">
                <GaugeText id="VSpeedText">
                     <Size>50,28</Size>               
                    <FontFace>Arial</FontFace>
                    <FontColor>red</FontColor>
                    <BackgroundColor>azure</BackgroundColor>
                    <FontHeight>25</FontHeight>
                    <HorizontalAlign>CENTER</HorizontalAlign>
                    <GaugeString>%((L:VSpeed,Number))%!d!</GaugeString>
                    <Length>5</Length>
                </GaugeText>
            </Element>
             <Element id="HSpeed">
                <FloatPosition>50,0</FloatPosition>
                <GaugeText id="HSpeedText">
                     <Size>30,28</Size>               
                    <FontFace>Arial</FontFace>
                    <FontColor>red</FontColor>
                    <BackgroundColor>azure</BackgroundColor>
                    <FontHeight>25</FontHeight>
                    <HorizontalAlign>CENTER</HorizontalAlign>
                    <GaugeString>%((L:HSpeed,Number))%!d!</GaugeString>
                    <Length>3</Length>
                </GaugeText>
            </Element>
        </Element>
        
    </SimGauge.Gauge>
</SimBase.Document>

 

That should give you an entry 'VSpeed' in the 'Views->Instruments Panel'  pulldown menu. Enable that and every time you touch down your vertical speed in FPM and horizontal speed in Knots will display for 7 seconds. The gauge updates 6 times a second; I felt that was enough to be reasonably accurate while having a minimal perfomance impact.

 

Hope somebody gets some use out of it!

Share this post


Link to post

I forgot:  In the [Window Titles] section in panel.cfg, add

 

WindowXX=VSpeed

 

to get the gauge selection into the pulldown menus.

Share this post


Link to post

Well, thanks!  I've modified the code a bit to take care of bouncing: Now only the first ground contact within 7 secs will be displayed. Also, the variable L:Timer clashed with one used somewhere in the A2A C172 gauges; needed to be renamed.

Since the community interest seems to be very close to zero I'll probably limit myself to topics such as 'My feelings towards X' from now on.

 

gauge code update:

 

<?xml version="1.0" encoding="UTF-8"?>

<SimBase.Document
        Type="AceXML"
        version="1,0"
        id="VSpeed">
    <Descr>AceXML Document</Descr>
    <SimGauge.Gauge id="Gauge">
        <Update>
            <Frequency>6</Frequency>
            <Script>
                (A:SIM ON GROUND, bool)
                if{
                    (E:ABSOLUTE TIME,Seconds)  (L:DisplayInterval,Seconds)  >
                    (L:TookOff,bool)
                    and
                    if{
                        (E:ABSOLUTE TIME,Seconds) 7 +  (>L:DisplayInterval)
                        0 (>L:TookOff)
                    }
                 }
                 els{
                    (E:ABSOLUTE TIME,Seconds)  (L:DisplayInterval,Seconds)  >
                    if{
                        (A:VERTICAL SPEED, Feet per minute) (>L:VSpeed)
                        (A:GROUND VELOCITY, Knots) (>L:HSpeed)
                        1 (>L:TookOff)
                    }
                 }
             </Script>
         </Update>
        <Element id="Touchdown">
            <Visibility>(E:ABSOLUTE TIME,Seconds)  (L:DisplayInterval,Seconds)  <</Visibility>
            <Element id="VSpeed">
                <GaugeText id="VSpeedText">
                     <Size>50,28</Size>               
                    <FontFace>Arial</FontFace>
                    <FontColor>red</FontColor>
                    <BackgroundColor>azure</BackgroundColor>
                    <FontHeight>25</FontHeight>
                    <HorizontalAlign>CENTER</HorizontalAlign>
                    <GaugeString>%((L:VSpeed,Number))%!d!</GaugeString>
                    <Length>5</Length>
                </GaugeText>
            </Element>
             <Element id="HSpeed">
                <FloatPosition>50,0</FloatPosition>
                <GaugeText id="HSpeedText">
                     <Size>30,28</Size>               
                    <FontFace>Arial</FontFace>
                    <FontColor>red</FontColor>
                    <BackgroundColor>azure</BackgroundColor>
                    <FontHeight>25</FontHeight>
                    <HorizontalAlign>CENTER</HorizontalAlign>
                    <GaugeString>%((L:HSpeed,Number))%!d!</GaugeString>
                    <Length>3</Length>
                </GaugeText>
            </Element>
        </Element>
        
    </SimGauge.Gauge>
</SimBase.Document>

Share this post


Link to post

Hi Harry


Reopening this thread as it is exactly what I had been looking for ....

I did pimp up your code a bit, so now I have :

 

In panel.cfg :

Windowxx=Landing Rate Monitor

and further down

[Windowxx]
always_visible=1
size_mm=74,46
window_size=0.076,0.04
window_pos=0.0,0.5
background_color=0,0,0
ident=14080
zorder=5
alpha_blend=0.4
type=special

gauge00=Touchdown!VSpeed,0,0

 

And then created a VSpeed.xml file in a Touchdown folder in the Panel folder, with :

<?xml version="1.0" encoding="UTF-8"?>

<SimBase.Document
        Type="AceXML"
        version="1,0"
        id="VSpeed">
    <Descr>AceXML Document</Descr>
    <SimGauge.Gauge id="Gauge">
        <Update>
            <Frequency>6</Frequency>
            <Script>
                (A:SIM ON GROUND, bool)
                if{
                    (L:TookOff,Bool) if{ (E:ABSOLUTE TIME,Seconds) 15 + (>L:DisplayInterval,Seconds) }
                    0 (>L:TookOff,Bool)
                }
                 els{
                    (L:onDisplayBool,Bool) ! if{ (A:VERTICAL SPEED, Feet per minute) (>L:VSpeed,Number) (A:GROUND VELOCITY, Knots) (>L:HSpeed,Number) }
                    1 (>L:TookOff,Bool)
                }
                
                (L:DisplayInterval,Seconds) (E:ABSOLUTE TIME,Seconds) - 0 &gt;= (>L:OnDisplayBool,Bool)
                (E:ABSOLUTE TIME, seconds) 2 % 1 > (>L:OnDisplayBlink,Bool)
                (E:ABSOLUTE TIME, seconds) 1 % 0.5 > (>L:OnDisplayQuickBlink,Bool)
                (L:VSpeed,Number) -200 &lt;= (L:VSpeed,Number) -400 &gt; and (>L:HardLanding,Bool)
                (L:VSpeed,Number) -400 &lt;= (>L:SevereLanding,Bool)
                (L:onDisplayBlink,bool) (L:HardLanding,Bool) and (>L:onDisplayCond1,Bool)
                (L:onDisplayQuickBlink,bool) (L:SevereLanding,Bool) and    (>L:onDisplayCond2,Bool)    
             </Script>
         </Update>
        <Element id="Touchdown">
            <Visibility>(L:onDisplayBool,bool)</Visibility>
            <Element id="VSpeed">
                <GaugeText id="VSpeedText" bright="true" bold="true">
                    <Size>44,22</Size>               
                    <FontFace>Arial</FontFace>
                    <FontColor>black</FontColor>
                    <BackgroundColor>azure</BackgroundColor>
                    <FontHeight>16</FontHeight>
                    <VerticalAlign>CENTER</VerticalAlign>
                    <HorizontalAlign>RIGHT</HorizontalAlign>
                    <GaugeString>%((L:VSpeed,Number))%!d! ft/mn </GaugeString>
                </GaugeText>
            </Element>
             <Element id="HSpeed">
                <FloatPosition>46,0</FloatPosition>
                <GaugeText id="HSpeedText" bright="true" bold="true">
                    <Size>28,22</Size>               
                    <FontFace>Arial</FontFace>
                    <FontColor>black</FontColor>
                    <BackgroundColor>azure</BackgroundColor>
                    <FontHeight>16</FontHeight>
                    <VerticalAlign>CENTER</VerticalAlign>
                    <HorizontalAlign>RIGHT</HorizontalAlign>
                    <GaugeString>%((L:HSpeed,Number))%!d! kt </GaugeString>
                </GaugeText>
            </Element>
            <Element id="IndicationHL">
                <Visibility>(L:onDisplayCond1,bool)</Visibility>
                <FloatPosition>0,24</FloatPosition>
                <GaugeText id="IndicationHLText" bold="true" bright="true">
                    <Size>74,22</Size>               
                    <FontFace>Arial</FontFace>
                    <FontColor>red</FontColor>
                    <BackgroundColor>azure</BackgroundColor>
                    <FontHeight>16</FontHeight>
                    <VerticalAlign>CENTER</VerticalAlign>
                    <HorizontalAlign>CENTER</HorizontalAlign>
                    <GaugeString>HARD LANDING</GaugeString>
                </GaugeText>
            </Element>
            <Element id="IndicationSL">
                <Visibility>(L:onDisplayCond2,bool)</Visibility>
                <FloatPosition>0,24</FloatPosition>
                <GaugeText id="IndicationSLText" bold="true" bright="true">
                    <Size>74,22</Size>               
                    <FontFace>Arial</FontFace>
                    <FontColor>red</FontColor>
                    <BackgroundColor>azure</BackgroundColor>
                    <FontHeight>16</FontHeight>
                    <VerticalAlign>CENTER</VerticalAlign>
                    <HorizontalAlign>CENTER</HorizontalAlign>
                    <GaugeString>SEVERE LANDING</GaugeString>
                </GaugeText>
            </Element>
        </Element>
    </SimGauge.Gauge>
</SimBase.Document>

 

Three things I noticed (I'm running P3D v4.5) :

- if I don't use "always_visible=1" the gauge is not working as it seems it MUST be visibel to get updated. "visible=1" is not sufficient
- I cannot really use code for the Visibility conditions for the various Elements. It seems it can only assess a Bool variable, but not a full XML script - So I had to run the Script in the Update section of the gauge..
- VerticalAlign does not seem to work

 

Happy to discuss....

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  
  • Tom Allensworth,
    Founder of AVSIM Online


  • Flight Simulation's Premier Resource!

    AVSIM is a free service to the flight simulation community. AVSIM is staffed completely by volunteers and all funds donated to AVSIM go directly back to supporting the community. Your donation here helps to pay our bandwidth costs, emergency funding, and other general costs that crop up from time to time. Thank you for your support!

    Click here for more information and to see all donations year to date.
×
×
  • Create New...