<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>http://www.fsdeveloper.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rpmc</id>
	<title>FSDeveloper Wiki - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="http://www.fsdeveloper.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rpmc"/>
	<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php/Special:Contributions/Rpmc"/>
	<updated>2026-05-24T16:28:35Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Key_Traps&amp;diff=10560</id>
		<title>XML: Key Traps</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Key_Traps&amp;diff=10560"/>
		<updated>2018-06-19T16:19:45Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox-Applicable-FSVersion&lt;br /&gt;
| P3D2 = true&lt;br /&gt;
| P3D = true&lt;br /&gt;
| FSXI = false&lt;br /&gt;
| FSXA = true&lt;br /&gt;
| FSX = true&lt;br /&gt;
| FS2004 = true&lt;br /&gt;
| FS2002 = false&lt;br /&gt;
| FS2000 = unknown&lt;br /&gt;
| FS98 = unknown&lt;br /&gt;
| XP10 = false &lt;br /&gt;
| XP9 = false &lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;KEY TRAP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A Key Trap is gauge code that ‘listens’ for a specific keyboard entry to be made.  Its purpose is to allow custom XML script to be executed when the user types that specific key.  By nature, it’s conditional: if the keystroke is made, then disregard whatever that key is currently assigned to do, if anything, and then process the key trap script.&lt;br /&gt;
&lt;br /&gt;
In XML, the trap is defined using an &amp;lt;On Key&amp;gt; block placed within a &amp;lt;Keys&amp;gt; section:&lt;br /&gt;
&lt;br /&gt;
 1  &amp;lt;Keys&amp;gt;&lt;br /&gt;
 2    &amp;lt;On Key=&amp;quot;Alphanumeric&amp;quot;&amp;gt;&lt;br /&gt;
 3      &amp;lt;Visible&amp;gt;(L:KeyTrapEnabled, bool) 1 ==&amp;lt;/Visible&amp;gt;&lt;br /&gt;
 4        (M:Key) chr (&amp;gt;C:fs9gps:NameSearchEnterChar)&lt;br /&gt;
 5    &amp;lt;/On&amp;gt;&lt;br /&gt;
 6  &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, the key trap definition is any alphanumeric character (line 2) and the key trap script (line 3 and line 4) passes the character that was typed to a gps variable provided, however, that L:KeyTrapEnabled = 1.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;Visible&amp;gt;:&#039;&#039;&#039; &amp;lt;Visible&amp;gt; expressions are frequently added to key traps so the user can control when the trap is functional, which is especially important when broad key definitions “ascii” or “alphanumeric” are used.  In the example above, whenever the user has &#039;&#039;not&#039;&#039; set L:KeyTrapEnabled to 1, the key trap is not functional.  That way, the typical (i.e., default) key assignment of “G” will still toggle the landing gear rather than being trapped and the character “G” sent to the gps variable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;On Key&amp;gt; blocks are nested within &amp;lt;Keys&amp;gt; sections and therefore should be placed at the bottom of the gauge script in order to catch all keystrokes and events triggered during each gauge update cycle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DEFINING THE TRAP KEY&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Format of the trap key definition is flexible.&lt;br /&gt;
  &lt;br /&gt;
- It can be broadly specified using “ascii” or “alphanumeric” expressions, or&lt;br /&gt;
&lt;br /&gt;
- individually specified using the decimal or hex ascii code value of a key, or&lt;br /&gt;
&lt;br /&gt;
- specified using the individual character itself (includes Backspace, Tab, Enter, Esc, Space, A thru Z, and F1 thru F12.  See tables).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;On Key=”ascii”&amp;gt; traps any of the following characters:&lt;br /&gt;
 ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 and space, minus, plus, comma, period  &lt;br /&gt;
  &lt;br /&gt;
 &amp;lt;On Key=”alphanumeric”&amp;gt; traps any of the following characters:&lt;br /&gt;
 ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 and space&lt;br /&gt;
  &lt;br /&gt;
 &amp;lt;On Key=”87”&amp;gt; traps the letter “W”.  87 is the decimal value of the ascii code for character “W”&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;On Key=”0x57”&amp;gt; traps the letter “W”.  0x57 is the hex value of the ascii code for character “W”&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;On Key=”W”&amp;gt; traps the letter “W”&lt;br /&gt;
&lt;br /&gt;
Hex and decimal values are always interchangeable in the trap definition - it can accept either number format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ctrl and Shift Combination:&#039;&#039;&#039;  Ctrl and/or Shift can be combined with most keys and trapped in an &amp;lt;On Key&amp;gt; block.  &lt;br /&gt;
&lt;br /&gt;
The table below shows binary representation of the ascii code for letter W.  The ascii decimal value of W is 87, hex equivalent is 0x57, and binary is 1 0 1 0 1 1 1.  &lt;br /&gt;
&lt;br /&gt;
To add Shift, place 1 in Bit 8.  For Ctrl, add 1 in bit 9 .  Ctrl+Shift is 1 in both bit 8 and bit 9.  The key trap definition can accept the decimal or hex equivalent of the result, but not the binary.&lt;br /&gt;
&lt;br /&gt;
[[File:CtrlShift2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alt can also be combined with a key to form a trap, but it appears to conflict with the FS Menu system, so I would say it&#039;s use is not recommended.&lt;br /&gt;
&lt;br /&gt;
Several formats are acceptable for definition of the key combination.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;On Key=”855”&amp;gt; traps the key combination Ctrl + Shift + W&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;On Key=”0x357”&amp;gt; traps the key combination Ctrl + Shift + W, and&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;On Key=”Ctrl+Shift+W”&amp;gt; also traps the key combination Ctrl + Shift + W and may be the easiest format to remember &lt;br /&gt;
   (includes Backspace, Tab, Enter, Esc, Space, A thru Z, and F1 thru F12.  See tables).&lt;br /&gt;
&lt;br /&gt;
When the &amp;lt;On Key&amp;gt; definition includes Shift and/or Ctrl, (M:Key) will return only the root character code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Keys&amp;gt;&lt;br /&gt;
   &amp;lt;On Key=&amp;quot;599&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Visible&amp;gt;(L:KeyTrapEnabled, bool) 1 ==&amp;lt;/Visible&amp;gt;&lt;br /&gt;
       (M:Key) (&amp;gt;L:CtrlW_Value, enum)&lt;br /&gt;
   &amp;lt;/On&amp;gt;&lt;br /&gt;
 &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the Ctrl+W trap example above, (L:CtrlW_Value, enum), and hence, (M:Key), returns 87, which is the decimal value of the ascii code for W, &#039;&#039;not&#039;&#039; 599 which is the decimal value for Ctrl + W used in the trap definition.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TRAPPABLE KEYSTROKES&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
The tables at the bottom of the wiki summarize keystroke trap capability.  Blue font with no shading reflects keys and combinations that are trappable.  Pink shading indicates that the key, or key combination, is not trappable, and grey represents uncertainty as my keyboards do not have these keys. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ascii and Alphanumeric:&#039;&#039;&#039; &amp;quot;yes&amp;quot; indicates keys that are trappable using &amp;lt;On Key=”Ascii”&amp;gt; or &amp;lt;On Key=”Alphanumeric”&amp;gt; definitions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Trap using Name:&#039;&#039;&#039; indicates keys that can be trapped using the character name in the definition, for example &amp;lt;On Key=”Backspace”&amp;gt; or &amp;lt;On Key=”A”&amp;gt;.  Ctrl and Shift can be used in combination with these, for example &amp;lt;On Key=”Ctrl+Shift+Enter”&amp;gt;. Includes Backspace, Tab, Enter, Esc, Space, A thru Z, and F1 thru F12, or whatever is the maximum F key number. The tables at the bottom of this wiki show a more complete, though likely not exhaustive, list.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Trap using Ascii Decimal, Ascii Hex:&#039;&#039;&#039; indicates keystrokes that are trappable using decimal or hex values in the definition.  For example, the &#039;&#039;&#039;Home&#039;&#039;&#039; key can be trapped using &amp;lt;On Key=”36”&amp;gt; or &amp;lt;On Key=”0x24”&amp;gt; definition.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Trap using Ctrl, Shift and Ctrl+Shift:&#039;&#039;&#039; Ctrl and Shift can be used in combination with most keys.  For example, a Ctrl+Capslock trap is defined as &amp;lt;On Key=”532”&amp;gt; or &amp;lt;On Key=”0x214”&amp;gt; (0x214 is the hex equivalent of decimal 532). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Differences in keyboards may alter the trap capability shown in the tables.  If a keyboard has a NumPad with stand alone keys (1 isn&#039;t paired with END , 2 isn&#039;t paired with Down Arrow, etc.) then all the NumPad keys &#039;&#039;may&#039;&#039; be trappable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NEUTRALIZING AN EXISTING KEY ASSIGNMENT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A key trap without a trap script neutralizes an existing key assignment because the trap momentarily disregards the existing assignment and instead, processes the trap script.  As an example,&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Keys&amp;gt;&lt;br /&gt;
   &amp;lt;On Key=”Q&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;On Key=”L&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
disables the default sound and lights keyboard assignment toggles.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Multiple &amp;lt;On Key&amp;gt; and/or &amp;lt;On Event&amp;gt; traps are permissible within a &amp;lt;Keys&amp;gt; block.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;KEY TRAP PROCESSING&#039;&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
Keystrokes trapped in the current update cycle are queued and then their trap routines are sequentially processed at the end of the cycle. All simulation variables (A:Vars) affected by the trap routines return updated values on the subsequent cycle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Key Traps across the Gauge Set:&#039;&#039;&#039;  FS processes &amp;lt;On Key&amp;gt; trap routines found in all gauges of the aircraft’s panel (the ‘gauge set’).&lt;br /&gt;
&lt;br /&gt;
So, if Gauge00 contains the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Keys&amp;gt;&lt;br /&gt;
   &amp;lt;On Key=”Ctrl+W&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Visible&amp;gt;(L:KeyTrapEnabled, bool) 1 ==&amp;lt;/Visible&amp;gt;&lt;br /&gt;
       (L:MyVarA,enum) 10 + (&amp;gt;L:MyVarA,enum)&lt;br /&gt;
     &amp;lt;/On&amp;gt;&lt;br /&gt;
 &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and Gauge01 contains:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Keys&amp;gt;&lt;br /&gt;
   &amp;lt;On Key=”Ctrl+W&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Visible&amp;gt;(L:KeyTrapEnabled, bool) 1 ==&amp;lt;/Visible&amp;gt;&lt;br /&gt;
       (L:MyVarA,enum) 20 + (&amp;gt;L:MyVarA,enum)&lt;br /&gt;
   &amp;lt;/On&amp;gt;&lt;br /&gt;
 &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, on the update cycle following entry of Ctrl+W, (L:MyVarA, enum) will return 30.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VISIBLE WINDOW REQUIREMENT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Key traps have the same visibility requirements as Event traps.  One condition is that gauges must be in a visible window for their trap routines to be processed. If a gauge is part of a window whose visibility is set to visibility=0, then no &amp;lt;On Key&amp;gt; routines in that gauge will be run until visibility of the window is set to 1, or if the window is visible on the screen.&lt;br /&gt;
&lt;br /&gt;
Another important condition is that key trap routines in XML gauges are disabled when the user is in External view.  This is a problem for those who like to manage systems (i.e. the autopilot) via keystrokes while flying in External view. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; A recently released FSX module ([http://fsdeveloper.com/forum/resources/xmltools-a-common-xml-expansion-module-for-fsx.131/ XMLTools v.1.0], June 2014, from Tom Aguilo) will handle FSX event traps in any view mode, thus overcoming the visible and external window limitations of stock FSX. XMLTools can be freely downloaded from the FSDeveloper Resources site. Check that site or FSDeveloper Gauges Forum for XMLTools update notices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M:KEY&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
M:Key is a parameter that returns the decimal ascii code value of a keystroke.&lt;br /&gt;
&lt;br /&gt;
In the following key trap,&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Keys&amp;gt;&lt;br /&gt;
   &amp;lt;On Key=&amp;quot;Alphanumeric&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Visible&amp;gt;(L:KeyTrapEnabled, bool) 1 ==&amp;lt;/Visible&amp;gt;&lt;br /&gt;
       (M:Key) (&amp;gt;L:MKeyValue, enum)&lt;br /&gt;
   &amp;lt;/On&amp;gt;&lt;br /&gt;
 &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if the letter “X” is typed, (L:MKeyValue, enum)  is 88. Whenever Ctrl and/or Shift are used in combination with a key, M:Key returns the ascii decimal value for the key.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SHIFT REGISTER&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In certain situations, the user may want to concatenate and store multi-character ascii keystroke entries, for example, gps data entry when the user prefers to type the input rather than use the mouse to rotate knob images.  Without use of an external module such as XMLVars, FS cannot easily store string values in XML environment.  FS is mostly limited to storing the decimal ascii code equivalent of individual letters into individual L:Vars.  This has traditionally been accomplished through the use of a shift register inside a key trap.&lt;br /&gt;
&lt;br /&gt;
The example below accommodates typing of up to 5 keystrokes, storing the ascii code value of each typed character into a separate L:Var, subsequently retrieving the L:Vars, converting the ascii code back to characters, concatenating the characters, then ultimately storing the string into FlightPlanNewWaypointIdent.&lt;br /&gt;
&lt;br /&gt;
 1   &amp;lt;Keys&amp;gt;		&lt;br /&gt;
 2     &amp;lt;On Key=&amp;quot;Alphanumeric&amp;quot;&amp;gt;&lt;br /&gt;
 3       &amp;lt;Visible&amp;gt;(L:KeyEntry, enum) 39 ==&amp;lt;/Visible&amp;gt;&lt;br /&gt;
 4         (L:Num394,enum) (&amp;gt;L:Num395,enum)&lt;br /&gt;
 5         (L:Num393,enum) (&amp;gt;L:Num394,enum)&lt;br /&gt;
 6         (L:Num392,enum) (&amp;gt;L:Num393,enum)&lt;br /&gt;
 7         (L:Num391,enum) (&amp;gt;L:Num392,enum)&lt;br /&gt;
 8           (M:Key) (&amp;gt;L:Num391,enum)&lt;br /&gt;
 9         (L:Num395,enum) chr &lt;br /&gt;
 10        (L:Num394,enum) chr scat	&lt;br /&gt;
 11        (L:Num393,enum) chr scat	&lt;br /&gt;
 12        (L:Num392,enum) chr scat	&lt;br /&gt;
 13        (L:Num391,enum) chr scat&lt;br /&gt;
 14        (&amp;gt;@c:FlightPlanNewWaypointIdent, string)	&lt;br /&gt;
 15    &amp;lt;/On&amp;gt;		&lt;br /&gt;
 16  &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lines 4-7:&#039;&#039;&#039;  The “shift register”.  Before storing the decimal ascii value of the current keystroke into L:Num391 (Line 8), the value of the previous keystroke entry, which was initially stored in L:Num391, is stored into L:Num392 (Line 7).  Preceding that (Line 6), the value in L:Num392 is shifted up to (stored into) L:Num393, and so forth.  After 5 keystrokes, the ascii value of first keystroke entered will end up being stored in L:Num395.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Line 8:&#039;&#039;&#039;  The ascii decimal value of the current keystroke, (M:Key), is stored into L:Num391.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lines 9–13:&#039;&#039;&#039; The L:Var ascii values are recalled in a last-in, first-out order, converted back to symbols using the ‘chr’ operator, and concatenated using the ‘scat’ operator to form a string.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Line 14:&#039;&#039;&#039;  The concatenated string is entered into FlightPlanNewWaypointIdent.&lt;br /&gt;
&lt;br /&gt;
External dll modules such as Tom Aguilo’s XMLVars (included in his [http://fsdeveloper.com/forum/resources/xmltools-a-common-xml-expansion-module-for-fsx.131/ XMLTools module]) or Doug Dawson’s [http://www.douglassdawson.ca/ String_Storage] allow the user to store and retrieve string values without the use of a Shift Register and are highly recommended.  For a more complete discussion of string storage options in Flight Simulator, refer to the [http://fsdeveloper.com/wiki/index.php?title=Xml:_storing_strings Storing Strings] wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Acknowledgements:  [http://www.schiratti.com/dowson.html Peter Dowson], Rob Barenregt, [http://fsdeveloper.com/forum/resources/xmltools-a-common-xml-expansion-module-for-fsx.131/ Tom Aguilo]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[[rpmc]] (July 2014)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:KT1b.png]]&lt;br /&gt;
[[File:KT2b.png]]&lt;br /&gt;
[[File:KT3b.png]]&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_PID_Controller&amp;diff=10544</id>
		<title>XML: PID Controller</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_PID_Controller&amp;diff=10544"/>
		<updated>2018-04-16T16:58:37Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://fsdeveloper.com/forum/threads/ap-speed-hold-pid-controller.437633/ AP speed hold PID controller]&lt;br /&gt;
&lt;br /&gt;
Thank you to Bjoern Kesten (Heretic) for providing a detailed explanation and XML example of a PID Controller and consolidating a link list of PID threads authored by various FSDeveloper contributors.&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Events_and_Traps&amp;diff=10543</id>
		<title>XML: Events and Traps</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Events_and_Traps&amp;diff=10543"/>
		<updated>2018-04-15T16:20:34Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox-Applicable-FSVersion&lt;br /&gt;
| P3D2 = true&lt;br /&gt;
| P3D = true&lt;br /&gt;
| FSXI = false&lt;br /&gt;
| FSXA = true&lt;br /&gt;
| FSX = true&lt;br /&gt;
| FS2004 = true&lt;br /&gt;
| FS2002 = false&lt;br /&gt;
| FS2000 = unknown&lt;br /&gt;
| FS98 = unknown&lt;br /&gt;
| XP10 = unknown&lt;br /&gt;
| XP9 = unknown&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EVENT&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
An Event is a user-initiated instruction to execute a certain Flight Sim (FS) function.  Examples include control surface movement, radio tuning, landing gear retraction/extension, throttle movement, etc.  Events are initiated via joystick or other controller, keyboard, mouse, or gauge software. Initiating an event from within one’s gauge software is often referred to as “throwing”, “firing” or “triggering” an event. &lt;br /&gt;
&lt;br /&gt;
From within XML gauge script, an event is triggered using (&amp;gt;K:EVENT) or &amp;lt;Click Event=&amp;quot;EVENT&amp;quot;/&amp;gt;  instructions.  &lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
 (&amp;gt;K:MIXTURE_RICH) &lt;br /&gt;
instructs FS to set all mixture levers to maximum rich.  This event does not require a number, or argument, to be passed to it.  It’s just (&amp;gt;K:MIXTURE_RICH).  The majority of events require no argument.&lt;br /&gt;
&lt;br /&gt;
 8100 (&amp;gt;K:MIXTURE_SET) &lt;br /&gt;
instructs FS to set mixture levers to 8100, or about mid range.  This is an example of an event that requires an argument.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Almost all events have related read-only simulation variables (A:Variables) that change in response to the event’s execution. The simulation variable &lt;br /&gt;
&lt;br /&gt;
 (A:GENERAL ENG MIXTURE LEVER POSITION:&#039;&#039;index&#039;&#039;, percent) &lt;br /&gt;
&lt;br /&gt;
is associated with the MIXTURE_SET event. If 8100 is passed to MIXTURE_SET, then the A:Var will return 49.44. (Note: 8100/16383 = 49.44.  As per SDK, 16383 is the maximum value allowed for MIXTURE_SET.  Its range is 0 to 16383 **).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Events are single and instantaneous.  Even the smooth increase of the throttle on a game controller is sampled as a series of singular THROTTLE_INCR_SMALL events.&lt;br /&gt;
&lt;br /&gt;
Event expressions don’t contain Units.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The FSX SDK has the complete list in the Events ID section of the [http://msdn.microsoft.com/en-us/library/cc526980.aspx online Microsoft ESP SDK].&lt;br /&gt;
  &lt;br /&gt;
The [http://support.microsoft.com/kb/555857 FS9 SDK can be downloaded here].  Go to the Panels and Gauges link.&lt;br /&gt;
&lt;br /&gt;
Use the Simconnect Name / String Name entries for XML gauges rather than the Event ID name (containing KEY_) which is used with C++ gauges.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EVENT TRAP&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
An Event Trap is gauge code that ‘listens’ for specified events to be triggered. Its purpose is to allow customized, user-defined script to also be executed anytime the specified event is triggered.  By nature, it’s conditional: if Event A is triggered, then process the event trap script and then execute the event.&lt;br /&gt;
&lt;br /&gt;
In XML, the trap is defined using an &amp;lt;On Event&amp;gt; block placed within a &amp;lt;Keys&amp;gt; block:&lt;br /&gt;
 &amp;lt;Keys&amp;gt;&lt;br /&gt;
    &amp;lt;On Event=&amp;quot;LANDING_LIGHTS_TOGGLE&amp;quot;&amp;gt;&lt;br /&gt;
      1 (&amp;gt;L:Sound_Click,number)&lt;br /&gt;
    &amp;lt;/On&amp;gt;&lt;br /&gt;
 &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The event is LANDING_LIGHTS_TOGGLE.  The event trap routine is 1 (&amp;gt;L:Sound_Click,number).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;On Event&amp;gt; blocks should be placed at the bottom of the gauge script in order to catch all events triggered during each gauge update cycle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EVENT PROCESSING AND XML SCRIPT&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
All events that are triggered in the current gauge update cycle are queued and then executed sequentially along with their trap routines, if any exist, at the &#039;&#039;end&#039;&#039; of the cycle. All simulation variables (A:Vars) affected by the executed events return updated values on the subsequent cycle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Event Traps across the Gauge Set:&#039;&#039;&#039;  FS processes &amp;lt;On Event&amp;gt; trap routines found in all gauges of the aircraft’s panel (the ‘gauge set’) before coming back to the point where the original event was processed – at the end of the update cycle in the gauge that triggered the event. &lt;br /&gt;
&lt;br /&gt;
So, if Gauge00 contains the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Keys&amp;gt;&lt;br /&gt;
   &amp;lt;On Event=&amp;quot;PITOT_HEAT_ON&amp;quot;&amp;gt;&lt;br /&gt;
     (L:MyVarA,enum) 10 + (&amp;gt;L:MyVarA,enum)&lt;br /&gt;
   &amp;lt;/On&amp;gt;  &lt;br /&gt;
 &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and Gauge01 contains:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Keys&amp;gt;&lt;br /&gt;
   &amp;lt;On Event=&amp;quot;PITOT_HEAT_ON&amp;quot;&amp;gt;&lt;br /&gt;
     (L:MyVarA,enum) 20 + (&amp;gt;L:MyVarA,enum)&lt;br /&gt;
   &amp;lt;/On&amp;gt;  &lt;br /&gt;
 &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then on the update cycle of the triggering gauge following the PITOT_HEAT_ON event trigger, (L:MyVarA, enum) will return 30.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Visible Window:&#039;&#039;&#039; A condition is that gauges must be in a visible window for their trap routines to be processed. If a gauge is part of a window whose visibility is set to visibility=0, then no &amp;lt;On Event&amp;gt; routines in that gauge will be run until visibility of the window is set to 1, or until the window is made visible on the screen (e.g., drop down menu Views - Instrument Panel - &#039;&#039;Window whatever&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Another important condition is that event trap routines in XML gauges are disabled when the user is in External view. Code-fired events still work fine, but their &amp;lt;On Event&amp;gt; capture sections will not. This is a problem for those who like to manage systems (i.e. the autopilot) via keystrokes while flying in External (Spot plane) view.  A discussion of work-arounds for this limitation can be found in this [http://www.fsdeveloper.com/forum/threads/events-wiki.430484/#post-675044 EVENTS wiki thread] (see post number 13).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;  A recently released FSX expansion module (&#039;&#039;&#039;XMLTools&#039;&#039;&#039; v.1.0, June 2014, from Tom Aguilo) will handle &#039;&#039;FSX&#039;&#039; event traps in any view mode, thus overcoming the visible and external window limitations of stock FSX.  XMLTools can be freely downloaded from the [http://fsdeveloper.com/forum/resources/xmltools-a-common-xml-expansion-module-for-fsx.131/ FSDeveloper Resources] site.  Check that site or FSDeveloper Gauges Forum for XMLTools update notices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Events are processed regardless of aircraft type:&#039;&#039;&#039;  Events and event traps are processed whether or not the event is relevant for the current aircraft.  Any SDK defined event can be triggered and executed in any aircraft.  The event (&amp;gt;K:TOGGLE_WATER_RUDDER), for example, can be triggered and trap routines processed in an aircraft that is not a float plane.  Same thing for helicopter events; their events and traps will be processed in any aircraft.    &lt;br /&gt;
&lt;br /&gt;
As for associated simulation variables, however, following an event the sim will update only those A:Vars that are active for the current aircraft.  (A:WATER RUDDER HANDLE POSITION, percent) will return a non-zero value &#039;&#039;only if&#039;&#039; the current aircraft contains water rudders.  &lt;br /&gt;
&lt;br /&gt;
This can be helpful to know because sometimes a user may want to ‘hijack’ an otherwise useless event to accomplish an un-related chore.  A recent [http://www.fsdeveloper.com/forum/threads/water-rudder-mod-xml.430240/ FSDeveloper forum thread] discussed use of the default water rudder toggle keyboard assignment (ctrl+W) to actually perform a prop reversing routine in a non-seaplane aircraft.  The event trap routine, below, is performed whenever keyboard ctrl+W is pressed.  It has nothing to do with water rudders, but that doesn’t matter.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Keys&amp;gt;&lt;br /&gt;
   &amp;lt;On Event=&amp;quot;TOGGLE_WATER_RUDDER&amp;quot;&amp;gt;&lt;br /&gt;
      (L:Reversing,bool) ! (&amp;gt;L:Reversing,bool)&lt;br /&gt;
      (L:Reversing,bool)&lt;br /&gt;
        if{&lt;br /&gt;
           491 (&amp;gt;K:THROTTLE_SET)&lt;br /&gt;
          -491 (&amp;gt;K:PROP_PITCH_SET)&lt;br /&gt;
        }&lt;br /&gt;
        els{&lt;br /&gt;
           (&amp;gt;K:PROP_PITCH_LO)&lt;br /&gt;
        }&lt;br /&gt;
   &amp;lt;/On&amp;gt;  &lt;br /&gt;
 &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: Prop reverse action will simulate correctly only on aircraft whose model and aircraft.cfg file are already appropriately configured, but the &amp;lt;On Event=&amp;quot;TOGGLE_WATER_RUDDER&amp;quot;&amp;gt; trap above will always fire the THROTTLE_SET and PROP_PITCH_SET events.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AIRCRAFT LOAD AND RE-LOAD ISSUES&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
When an aircraft loads or is re-loaded, gauge script begins running slightly before the sim’s event and trap handling system is operational.  Consequently, if events are fired as part of an &amp;lt;Update&amp;gt; initialization sequence, event and trap errors may occur where the events are apparently not processed, or may seem to be processed incorrectly.  &lt;br /&gt;
&lt;br /&gt;
In fact, however, triggered events are queued, and the queued events plus trap routines are processed all together when the event handling system finally becomes functional.  The length of delay is variable, on the order of 10s of update cycles, and is dependent upon how and when the aircraft is loaded, cache, where the gauge is defined in the panel.cfg, etc.  To deal with this, event triggering in an &amp;lt;Update&amp;gt; initialization sequence should be delayed until the sim’s event handling system is ready.&lt;br /&gt;
&lt;br /&gt;
There are a couple of approaches to construct the delay.  The first invokes a cycle counting routine; the other lets the sim tell you when it’s ready.&lt;br /&gt;
&lt;br /&gt;
Consider the initialization sequence below. The intention is to set one notch of flaps when the aircraft loads.  As written, however, that is not what occurs.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Initialization Sequence:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;Update&amp;gt;&lt;br /&gt;
   (L:MyVarA, enum) 0 ==&lt;br /&gt;
     if{&lt;br /&gt;
       (&amp;gt;K:FLAPS_INCR)&lt;br /&gt;
       (L:MyVarB, enum) ++ (&amp;gt;L:MyVarB, enum)&lt;br /&gt;
     }	&lt;br /&gt;
 &amp;lt;/Update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Event Trap:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;Keys&amp;gt;&lt;br /&gt;
   &amp;lt;On Event=&amp;quot;FLAPS_INCR&amp;quot;&amp;gt;&lt;br /&gt;
     (L:MyVarA, enum) ++ (&amp;gt;L:MyVarA, enum)&lt;br /&gt;
   &amp;lt;/On&amp;gt;&lt;br /&gt;
 &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On my system, nothing appears to happen until the 20th cycle after the gauge initialization sequence starts running, when the following is returned:&lt;br /&gt;
&lt;br /&gt;
 3	(A:FLAPS HANDLE INDEX, enum)&lt;br /&gt;
 100	(A:FLAPS HANDLE PERCENT, percent)	&lt;br /&gt;
 19	(L:MyVarA, enum)&lt;br /&gt;
 19	(L:MyVarB, enum)&lt;br /&gt;
&lt;br /&gt;
The flaps have been increased to the maximum, 100% position, not just one notch, and both MyVarB and MyVarA are 19.  This result seemingly does not make sense.  &lt;br /&gt;
&lt;br /&gt;
Without delaying execution of the initialization sequence, the (&amp;gt;K:FLAPS_INCR) event and it’s associated event trap responsible for incrementing MyVarA, is queued each cycle until the event handling system is ready, at which point the queue is processed &#039;&#039;at once&#039;&#039;: the flaps are incremented 19 times as is MyVarA which returns 19, not 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cycle Counting approach:&#039;&#039;&#039;  If &amp;lt;Update&amp;gt; is edited to include a cycle skipping delay after aircraft reload (the Event Trap is the same as above),&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Update&amp;gt;&lt;br /&gt;
   (L:CycleCounter, enum) 20 &amp;amp;lt;=&lt;br /&gt;
     if{ (L:CycleCounter, enum) ++ (&amp;gt;L:CycleCounter, enum) }&lt;br /&gt;
 &lt;br /&gt;
   (L:MyVarA, enum) 0 == (L:CycleCounter, enum) 20 &amp;amp;gt;= and&lt;br /&gt;
     if{&lt;br /&gt;
       (&amp;gt;K:FLAPS_INCR)&lt;br /&gt;
       (L:MyVarB, enum) ++ (&amp;gt;L:MyVarB, enum)&lt;br /&gt;
     }&lt;br /&gt;
 &amp;lt;/Update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then the following is obtained. One notch, only, of flaps and both MyVarA and MyVarB are 1. &lt;br /&gt;
&lt;br /&gt;
 1 	(A:FLAPS HANDLE INDEX, enum)&lt;br /&gt;
 33.3	(A:FLAPS HANDLE PERCENT, percent)	&lt;br /&gt;
 21	(L:CycleCounter, enum)&lt;br /&gt;
 1	(L:MyVarA, enum)&lt;br /&gt;
 1	(L:MyVarB, enum)&lt;br /&gt;
&lt;br /&gt;
In this case, the 20 cycle delay provided sufficient time for the event and trap handling system to load before the initialization sequence containing (&amp;gt;K:FLAPS_INCR) was executed.  The event trap was processed in the same cycle, incrementing MyVarA from 0 to 1, and thereby shut off the init sequence in the next cycle.  The event fire initialization sequence now works as intended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; &amp;lt;Update&amp;gt; could have been written:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Update&amp;gt;&lt;br /&gt;
   (L:MyVar&#039;&#039;&#039;[[B]]&#039;&#039;&#039;, enum) 0 ==&lt;br /&gt;
     if{&lt;br /&gt;
       (&amp;gt;K:FLAPS_INCR)&lt;br /&gt;
       (L:MyVarB, enum) ++ (&amp;gt;L:MyVarB, enum)&lt;br /&gt;
     }	&lt;br /&gt;
 &amp;lt;/Update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and the FLAPS_INCR event and trap would have been triggered and processed only once. For the purposes of this wiki, it was written as (L:MyVar&#039;&#039;&#039;A&#039;&#039;&#039;, enum) 0 == with the incrementer in the Event Trap rather than in Update to shed light on the event handling system delay.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Let FS tell you when it’s ready:&#039;&#039;&#039;  In another [http://www.fsdeveloper.com/forum/threads/fsx-ignores-events-at-flight-loading.429672/ FSDeveloper thread], Rob Barendregt proposed an elegant and more fool-proof method of introducing the necessary delay. He suggests to simply fire an event, in his case, the infrequently used&lt;br /&gt;
&lt;br /&gt;
 CABIN_SEATBELTS_ALERT_SWITCH_TOGGLE&lt;br /&gt;
&lt;br /&gt;
event, and when its associated simulation variable, &lt;br /&gt;
&lt;br /&gt;
 (A:CABIN SEATBELTS ALERT SWITCH, bool)&lt;br /&gt;
&lt;br /&gt;
returns 1 that means the sim&#039;s event handling system is operating. Following that, his desired initialization events can be executed successfully. &lt;br /&gt;
&lt;br /&gt;
A slight clarification is that if event traps are included, they will not execute until the cycle following (A:CABIN SEATBELTS ALERT SWITCH, bool) = 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; C-code version:  &#039;&#039;&#039;A &amp;quot;C&amp;quot; language version of Rob Barendregt&#039;s method was written by Dai Griffiths and posted in this [https://www.fsdeveloper.com/forum/threads/gauge-search-priority.442569/#post-796989/ FSDeveloper thread]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;“RACE” CONDITION - CONSTANT EVENT FIRING&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
As commonly defined in XML related discussions in this forum, a Race Condition is an uncontrolled and likely unintentional, repetitive event firing situation.  &lt;br /&gt;
&lt;br /&gt;
It’s an issue because continuously firing events can cause unforeseen errors across the gauge set and potentially interfere or conflict with other commands being received.  Race conditions can adversely affect stream code from &amp;lt;Update&amp;gt; and &amp;lt;Element&amp;gt; sections as well as event code from &amp;lt;Mouse&amp;gt; and &amp;lt;Keys&amp;gt; sections in any gauge, not just the gauge that is firing the event.  The culprit gauge (or controller) may be difficult to identify without use of an event logging application.  Doubly difficult if your panel contains a mix of XML and C/C++ gauges.&lt;br /&gt;
&lt;br /&gt;
To mitigate, there are a few best practices to incorporate in XML:&lt;br /&gt;
&lt;br /&gt;
 - Take care when including an event trigger in an &amp;lt;Update&amp;gt; section. Unless its execution is conditional, it will fire continuously.  &lt;br /&gt;
   Add a check, or condition that will limit the event to &#039;&#039;one&#039;&#039; firing only. A good example of such logic is included in this &lt;br /&gt;
   FSDeveloper post by Roman Stoviak ([http://fsdeveloper.com/forum/threads/setting-fuel-flow-order.430781/#post-677935 see response #16]).&lt;br /&gt;
 &lt;br /&gt;
 - Place the event trigger within a mouse click when applicable.  That way, the event is sure to be fired only once unless Repeat=&amp;quot;Yes&amp;quot;&lt;br /&gt;
   is invoked for example, in connection with a VOR1_OBI_INC event.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TOGGLE EVENTS&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
Event toggles come in two varieties; those that require an argument and those that do not.  Most event toggles are of the second type and simply reverse the state of the associated simulation variable.  If the variable was “On”, it now becomes “Off”.  If it was “Off”, it now becomes “On”.  &lt;br /&gt;
&lt;br /&gt;
The current state of the variable can be tricky to keep track of in a panel where multiple gauges can trigger the same event toggle.  To mitigate this, most contributors to this forum suggest instead of using toggles, use _SET, _ON, or _OFF events to explicitly set the state of the variables.  TOGGLE events are best avoided or limited to only a single gauge in the gauge set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 **&lt;br /&gt;
 (&amp;gt;K:MIXTURE_RICH) results in (A:GENERAL ENG MIXTURE LEVER POSITION:1, percent) = 100&lt;br /&gt;
 &lt;br /&gt;
 16383 (&amp;gt;K:MIXTURE_SET) results in (A:GENERAL ENG MIXTURE LEVER POSITION:1, percent) = 99.9939&lt;br /&gt;
 &lt;br /&gt;
 16384 (&amp;gt;K:MIXTURE_SET) results in (A:GENERAL ENG MIXTURE LEVER POSITION:1, percent) = 100&lt;br /&gt;
 &lt;br /&gt;
 Consequently, if you want &#039;&#039;&#039;100.000%&#039;&#039;&#039; full rich, then use (&amp;gt;K:MIXTURE_RICH), best, or 1638&#039;&#039;&#039;4&#039;&#039;&#039; (&amp;gt;K:MIXTURE_SET), second best.&lt;br /&gt;
 &lt;br /&gt;
 A similar situation may apply to other events, but experiment to be sure.&lt;br /&gt;
 &lt;br /&gt;
 16383 = 14 bit binary 11 1111 1111 1111&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Acknowledgments: Tom Aguilo, Bill Leaming, Paul (Gypsy Baron), Rob Barendregt, Manfred Jahn, Doug Dawson, Roy Holmes, Roman Stoviak, Arne Bartels, Dai Griffiths&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[[rpmc]] edited April 2018&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Events_and_Traps&amp;diff=10542</id>
		<title>XML: Events and Traps</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Events_and_Traps&amp;diff=10542"/>
		<updated>2018-04-15T16:17:21Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox-Applicable-FSVersion&lt;br /&gt;
| P3D2 = true&lt;br /&gt;
| P3D = true&lt;br /&gt;
| FSXI = false&lt;br /&gt;
| FSXA = true&lt;br /&gt;
| FSX = true&lt;br /&gt;
| FS2004 = true&lt;br /&gt;
| FS2002 = false&lt;br /&gt;
| FS2000 = unknown&lt;br /&gt;
| FS98 = unknown&lt;br /&gt;
| XP10 = unknown&lt;br /&gt;
| XP9 = unknown&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EVENT&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
An Event is a user-initiated instruction to execute a certain Flight Sim (FS) function.  Examples include control surface movement, radio tuning, landing gear retraction/extension, throttle movement, etc.  Events are initiated via joystick or other controller, keyboard, mouse, or gauge software. Initiating an event from within one’s gauge software is often referred to as “throwing”, “firing” or “triggering” an event. &lt;br /&gt;
&lt;br /&gt;
From within XML gauge script, an event is triggered using (&amp;gt;K:EVENT) or &amp;lt;Click Event=&amp;quot;EVENT&amp;quot;/&amp;gt;  instructions.  &lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
 (&amp;gt;K:MIXTURE_RICH) &lt;br /&gt;
instructs FS to set all mixture levers to maximum rich.  This event does not require a number, or argument, to be passed to it.  It’s just (&amp;gt;K:MIXTURE_RICH).  The majority of events require no argument.&lt;br /&gt;
&lt;br /&gt;
 8100 (&amp;gt;K:MIXTURE_SET) &lt;br /&gt;
instructs FS to set mixture levers to 8100, or about mid range.  This is an example of an event that requires an argument.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Almost all events have related read-only simulation variables (A:Variables) that change in response to the event’s execution. The simulation variable &lt;br /&gt;
&lt;br /&gt;
 (A:GENERAL ENG MIXTURE LEVER POSITION:&#039;&#039;index&#039;&#039;, percent) &lt;br /&gt;
&lt;br /&gt;
is associated with the MIXTURE_SET event. If 8100 is passed to MIXTURE_SET, then the A:Var will return 49.44. (Note: 8100/16383 = 49.44.  As per SDK, 16383 is the maximum value allowed for MIXTURE_SET.  Its range is 0 to 16383 **).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Events are single and instantaneous.  Even the smooth increase of the throttle on a game controller is sampled as a series of singular THROTTLE_INCR_SMALL events.&lt;br /&gt;
&lt;br /&gt;
Event expressions don’t contain Units.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The FSX SDK has the complete list in the Events ID section of the [http://msdn.microsoft.com/en-us/library/cc526980.aspx online Microsoft ESP SDK].&lt;br /&gt;
  &lt;br /&gt;
The [http://support.microsoft.com/kb/555857 FS9 SDK can be downloaded here].  Go to the Panels and Gauges link.&lt;br /&gt;
&lt;br /&gt;
Use the Simconnect Name / String Name entries for XML gauges rather than the Event ID name (containing KEY_) which is used with C++ gauges.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EVENT TRAP&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
An Event Trap is gauge code that ‘listens’ for specified events to be triggered. Its purpose is to allow customized, user-defined script to also be executed anytime the specified event is triggered.  By nature, it’s conditional: if Event A is triggered, then process the event trap script and then execute the event.&lt;br /&gt;
&lt;br /&gt;
In XML, the trap is defined using an &amp;lt;On Event&amp;gt; block placed within a &amp;lt;Keys&amp;gt; block:&lt;br /&gt;
 &amp;lt;Keys&amp;gt;&lt;br /&gt;
    &amp;lt;On Event=&amp;quot;LANDING_LIGHTS_TOGGLE&amp;quot;&amp;gt;&lt;br /&gt;
      1 (&amp;gt;L:Sound_Click,number)&lt;br /&gt;
    &amp;lt;/On&amp;gt;&lt;br /&gt;
 &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The event is LANDING_LIGHTS_TOGGLE.  The event trap routine is 1 (&amp;gt;L:Sound_Click,number).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;On Event&amp;gt; blocks should be placed at the bottom of the gauge script in order to catch all events triggered during each gauge update cycle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EVENT PROCESSING AND XML SCRIPT&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
All events that are triggered in the current gauge update cycle are queued and then executed sequentially along with their trap routines, if any exist, at the &#039;&#039;end&#039;&#039; of the cycle. All simulation variables (A:Vars) affected by the executed events return updated values on the subsequent cycle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Event Traps across the Gauge Set:&#039;&#039;&#039;  FS processes &amp;lt;On Event&amp;gt; trap routines found in all gauges of the aircraft’s panel (the ‘gauge set’) before coming back to the point where the original event was processed – at the end of the update cycle in the gauge that triggered the event. &lt;br /&gt;
&lt;br /&gt;
So, if Gauge00 contains the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Keys&amp;gt;&lt;br /&gt;
   &amp;lt;On Event=&amp;quot;PITOT_HEAT_ON&amp;quot;&amp;gt;&lt;br /&gt;
     (L:MyVarA,enum) 10 + (&amp;gt;L:MyVarA,enum)&lt;br /&gt;
   &amp;lt;/On&amp;gt;  &lt;br /&gt;
 &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and Gauge01 contains:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Keys&amp;gt;&lt;br /&gt;
   &amp;lt;On Event=&amp;quot;PITOT_HEAT_ON&amp;quot;&amp;gt;&lt;br /&gt;
     (L:MyVarA,enum) 20 + (&amp;gt;L:MyVarA,enum)&lt;br /&gt;
   &amp;lt;/On&amp;gt;  &lt;br /&gt;
 &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then on the update cycle of the triggering gauge following the PITOT_HEAT_ON event trigger, (L:MyVarA, enum) will return 30.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Visible Window:&#039;&#039;&#039; A condition is that gauges must be in a visible window for their trap routines to be processed. If a gauge is part of a window whose visibility is set to visibility=0, then no &amp;lt;On Event&amp;gt; routines in that gauge will be run until visibility of the window is set to 1, or until the window is made visible on the screen (e.g., drop down menu Views - Instrument Panel - &#039;&#039;Window whatever&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Another important condition is that event trap routines in XML gauges are disabled when the user is in External view. Code-fired events still work fine, but their &amp;lt;On Event&amp;gt; capture sections will not. This is a problem for those who like to manage systems (i.e. the autopilot) via keystrokes while flying in External (Spot plane) view.  A discussion of work-arounds for this limitation can be found in this [http://www.fsdeveloper.com/forum/threads/events-wiki.430484/#post-675044 EVENTS wiki thread] (see post number 13).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;  A recently released FSX expansion module (&#039;&#039;&#039;XMLTools&#039;&#039;&#039; v.1.0, June 2014, from Tom Aguilo) will handle &#039;&#039;FSX&#039;&#039; event traps in any view mode, thus overcoming the visible and external window limitations of stock FSX.  XMLTools can be freely downloaded from the [http://fsdeveloper.com/forum/resources/xmltools-a-common-xml-expansion-module-for-fsx.131/ FSDeveloper Resources] site.  Check that site or FSDeveloper Gauges Forum for XMLTools update notices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Events are processed regardless of aircraft type:&#039;&#039;&#039;  Events and event traps are processed whether or not the event is relevant for the current aircraft.  Any SDK defined event can be triggered and executed in any aircraft.  The event (&amp;gt;K:TOGGLE_WATER_RUDDER), for example, can be triggered and trap routines processed in an aircraft that is not a float plane.  Same thing for helicopter events; their events and traps will be processed in any aircraft.    &lt;br /&gt;
&lt;br /&gt;
As for associated simulation variables, however, following an event the sim will update only those A:Vars that are active for the current aircraft.  (A:WATER RUDDER HANDLE POSITION, percent) will return a non-zero value &#039;&#039;only if&#039;&#039; the current aircraft contains water rudders.  &lt;br /&gt;
&lt;br /&gt;
This can be helpful to know because sometimes a user may want to ‘hijack’ an otherwise useless event to accomplish an un-related chore.  A recent [http://www.fsdeveloper.com/forum/threads/water-rudder-mod-xml.430240/ FSDeveloper forum thread] discussed use of the default water rudder toggle keyboard assignment (ctrl+W) to actually perform a prop reversing routine in a non-seaplane aircraft.  The event trap routine, below, is performed whenever keyboard ctrl+W is pressed.  It has nothing to do with water rudders, but that doesn’t matter.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Keys&amp;gt;&lt;br /&gt;
   &amp;lt;On Event=&amp;quot;TOGGLE_WATER_RUDDER&amp;quot;&amp;gt;&lt;br /&gt;
      (L:Reversing,bool) ! (&amp;gt;L:Reversing,bool)&lt;br /&gt;
      (L:Reversing,bool)&lt;br /&gt;
        if{&lt;br /&gt;
           491 (&amp;gt;K:THROTTLE_SET)&lt;br /&gt;
          -491 (&amp;gt;K:PROP_PITCH_SET)&lt;br /&gt;
        }&lt;br /&gt;
        els{&lt;br /&gt;
           (&amp;gt;K:PROP_PITCH_LO)&lt;br /&gt;
        }&lt;br /&gt;
   &amp;lt;/On&amp;gt;  &lt;br /&gt;
 &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: Prop reverse action will simulate correctly only on aircraft whose model and aircraft.cfg file are already appropriately configured, but the &amp;lt;On Event=&amp;quot;TOGGLE_WATER_RUDDER&amp;quot;&amp;gt; trap above will always fire the THROTTLE_SET and PROP_PITCH_SET events.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AIRCRAFT LOAD AND RE-LOAD ISSUES&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
When an aircraft loads or is re-loaded, gauge script begins running slightly before the sim’s event and trap handling system is operational.  Consequently, if events are fired as part of an &amp;lt;Update&amp;gt; initialization sequence, event and trap errors may occur where the events are apparently not processed, or may seem to be processed incorrectly.  &lt;br /&gt;
&lt;br /&gt;
In fact, however, triggered events are queued, and the queued events plus trap routines are processed all together when the event handling system finally becomes functional.  The length of delay is variable, on the order of 10s of update cycles, and is dependent upon how and when the aircraft is loaded, cache, where the gauge is defined in the panel.cfg, etc.  To deal with this, event triggering in an &amp;lt;Update&amp;gt; initialization sequence should be delayed until the sim’s event handling system is ready.&lt;br /&gt;
&lt;br /&gt;
There are a couple of approaches to construct the delay.  The first invokes a cycle counting routine; the other lets the sim tell you when it’s ready.&lt;br /&gt;
&lt;br /&gt;
Consider the initialization sequence below. The intention is to set one notch of flaps when the aircraft loads.  As written, however, that is not what occurs.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Initialization Sequence:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;Update&amp;gt;&lt;br /&gt;
   (L:MyVarA, enum) 0 ==&lt;br /&gt;
     if{&lt;br /&gt;
       (&amp;gt;K:FLAPS_INCR)&lt;br /&gt;
       (L:MyVarB, enum) ++ (&amp;gt;L:MyVarB, enum)&lt;br /&gt;
     }	&lt;br /&gt;
 &amp;lt;/Update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Event Trap:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;Keys&amp;gt;&lt;br /&gt;
   &amp;lt;On Event=&amp;quot;FLAPS_INCR&amp;quot;&amp;gt;&lt;br /&gt;
     (L:MyVarA, enum) ++ (&amp;gt;L:MyVarA, enum)&lt;br /&gt;
   &amp;lt;/On&amp;gt;&lt;br /&gt;
 &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On my system, nothing appears to happen until the 20th cycle after the gauge initialization sequence starts running, when the following is returned:&lt;br /&gt;
&lt;br /&gt;
 3	(A:FLAPS HANDLE INDEX, enum)&lt;br /&gt;
 100	(A:FLAPS HANDLE PERCENT, percent)	&lt;br /&gt;
 19	(L:MyVarA, enum)&lt;br /&gt;
 19	(L:MyVarB, enum)&lt;br /&gt;
&lt;br /&gt;
The flaps have been increased to the maximum, 100% position, not just one notch, and both MyVarB and MyVarA are 19.  This result seemingly does not make sense.  &lt;br /&gt;
&lt;br /&gt;
Without delaying execution of the initialization sequence, the (&amp;gt;K:FLAPS_INCR) event and it’s associated event trap responsible for incrementing MyVarA, is queued each cycle until the event handling system is ready, at which point the queue is processed &#039;&#039;at once&#039;&#039;: the flaps are incremented 19 times as is MyVarA which returns 19, not 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cycle Counting approach:&#039;&#039;&#039;  If &amp;lt;Update&amp;gt; is edited to include a cycle skipping delay after aircraft reload (the Event Trap is the same as above),&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Update&amp;gt;&lt;br /&gt;
   (L:CycleCounter, enum) 20 &amp;amp;lt;=&lt;br /&gt;
     if{ (L:CycleCounter, enum) ++ (&amp;gt;L:CycleCounter, enum) }&lt;br /&gt;
 &lt;br /&gt;
   (L:MyVarA, enum) 0 == (L:CycleCounter, enum) 20 &amp;amp;gt;= and&lt;br /&gt;
     if{&lt;br /&gt;
       (&amp;gt;K:FLAPS_INCR)&lt;br /&gt;
       (L:MyVarB, enum) ++ (&amp;gt;L:MyVarB, enum)&lt;br /&gt;
     }&lt;br /&gt;
 &amp;lt;/Update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then the following is obtained. One notch, only, of flaps and both MyVarA and MyVarB are 1. &lt;br /&gt;
&lt;br /&gt;
 1 	(A:FLAPS HANDLE INDEX, enum)&lt;br /&gt;
 33.3	(A:FLAPS HANDLE PERCENT, percent)	&lt;br /&gt;
 21	(L:CycleCounter, enum)&lt;br /&gt;
 1	(L:MyVarA, enum)&lt;br /&gt;
 1	(L:MyVarB, enum)&lt;br /&gt;
&lt;br /&gt;
In this case, the 20 cycle delay provided sufficient time for the event and trap handling system to load before the initialization sequence containing (&amp;gt;K:FLAPS_INCR) was executed.  The event trap was processed in the same cycle, incrementing MyVarA from 0 to 1, and thereby shut off the init sequence in the next cycle.  The event fire initialization sequence now works as intended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; &amp;lt;Update&amp;gt; could have been written:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Update&amp;gt;&lt;br /&gt;
   (L:MyVar&#039;&#039;&#039;[[B]]&#039;&#039;&#039;, enum) 0 ==&lt;br /&gt;
     if{&lt;br /&gt;
       (&amp;gt;K:FLAPS_INCR)&lt;br /&gt;
       (L:MyVarB, enum) ++ (&amp;gt;L:MyVarB, enum)&lt;br /&gt;
     }	&lt;br /&gt;
 &amp;lt;/Update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and the FLAPS_INCR event and trap would have been triggered and processed only once. For the purposes of this wiki, it was written as (L:MyVar&#039;&#039;&#039;A&#039;&#039;&#039;, enum) 0 == with the incrementer in the Event Trap rather than in Update to shed light on the event handling system delay.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Let FS tell you when it’s ready:&#039;&#039;&#039;  In another [http://www.fsdeveloper.com/forum/threads/fsx-ignores-events-at-flight-loading.429672/ FSDeveloper thread], Rob Barendregt proposed an elegant and more fool-proof method of introducing the necessary delay. He suggests to simply fire an event, in his case, the infrequently used&lt;br /&gt;
&lt;br /&gt;
 CABIN_SEATBELTS_ALERT_SWITCH_TOGGLE&lt;br /&gt;
&lt;br /&gt;
event, and when its associated simulation variable, &lt;br /&gt;
&lt;br /&gt;
 (A:CABIN SEATBELTS ALERT SWITCH, bool)&lt;br /&gt;
&lt;br /&gt;
returns 1 that means the sim&#039;s event handling system is operating. Following that, his desired initialization events can be executed successfully. &lt;br /&gt;
&lt;br /&gt;
A slight clarification is that if event traps are included, they will not execute until the cycle following (A:CABIN SEATBELTS ALERT SWITCH, bool) = 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; C-code Version:  &#039;&#039;&#039;A &amp;quot;C&amp;quot; language version of Rob Barendregt&#039;s method was written by Dai Griffiths and posted in this [https://www.fsdeveloper.com/forum/threads/gauge-search-priority.442569/#post-796989/ FSDeveloper thread]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;“RACE” CONDITION - CONSTANT EVENT FIRING&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
As commonly defined in XML related discussions in this forum, a Race Condition is an uncontrolled and likely unintentional, repetitive event firing situation.  &lt;br /&gt;
&lt;br /&gt;
It’s an issue because continuously firing events can cause unforeseen errors across the gauge set and potentially interfere or conflict with other commands being received.  Race conditions can adversely affect stream code from &amp;lt;Update&amp;gt; and &amp;lt;Element&amp;gt; sections as well as event code from &amp;lt;Mouse&amp;gt; and &amp;lt;Keys&amp;gt; sections in any gauge, not just the gauge that is firing the event.  The culprit gauge (or controller) may be difficult to identify without use of an event logging application.  Doubly difficult if your panel contains a mix of XML and C/C++ gauges.&lt;br /&gt;
&lt;br /&gt;
To mitigate, there are a few best practices to incorporate in XML:&lt;br /&gt;
&lt;br /&gt;
 - Take care when including an event trigger in an &amp;lt;Update&amp;gt; section. Unless its execution is conditional, it will fire continuously.  &lt;br /&gt;
   Add a check, or condition that will limit the event to &#039;&#039;one&#039;&#039; firing only. A good example of such logic is included in this &lt;br /&gt;
   FSDeveloper post by Roman Stoviak ([http://fsdeveloper.com/forum/threads/setting-fuel-flow-order.430781/#post-677935 see response #16]).&lt;br /&gt;
 &lt;br /&gt;
 - Place the event trigger within a mouse click when applicable.  That way, the event is sure to be fired only once unless Repeat=&amp;quot;Yes&amp;quot;&lt;br /&gt;
   is invoked for example, in connection with a VOR1_OBI_INC event.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TOGGLE EVENTS&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
Event toggles come in two varieties; those that require an argument and those that do not.  Most event toggles are of the second type and simply reverse the state of the associated simulation variable.  If the variable was “On”, it now becomes “Off”.  If it was “Off”, it now becomes “On”.  &lt;br /&gt;
&lt;br /&gt;
The current state of the variable can be tricky to keep track of in a panel where multiple gauges can trigger the same event toggle.  To mitigate this, most contributors to this forum suggest instead of using toggles, use _SET, _ON, or _OFF events to explicitly set the state of the variables.  TOGGLE events are best avoided or limited to only a single gauge in the gauge set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 **&lt;br /&gt;
 (&amp;gt;K:MIXTURE_RICH) results in (A:GENERAL ENG MIXTURE LEVER POSITION:1, percent) = 100&lt;br /&gt;
 &lt;br /&gt;
 16383 (&amp;gt;K:MIXTURE_SET) results in (A:GENERAL ENG MIXTURE LEVER POSITION:1, percent) = 99.9939&lt;br /&gt;
 &lt;br /&gt;
 16384 (&amp;gt;K:MIXTURE_SET) results in (A:GENERAL ENG MIXTURE LEVER POSITION:1, percent) = 100&lt;br /&gt;
 &lt;br /&gt;
 Consequently, if you want &#039;&#039;&#039;100.000%&#039;&#039;&#039; full rich, then use (&amp;gt;K:MIXTURE_RICH), best, or 1638&#039;&#039;&#039;4&#039;&#039;&#039; (&amp;gt;K:MIXTURE_SET), second best.&lt;br /&gt;
 &lt;br /&gt;
 A similar situation may apply to other events, but experiment to be sure.&lt;br /&gt;
 &lt;br /&gt;
 16383 = 14 bit binary 11 1111 1111 1111&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Acknowledgments: Tom Aguilo, Bill Leaming, Paul (Gypsy Baron), Rob Barendregt, Manfred Jahn, Doug Dawson, Roy Holmes, Roman Stoviak, Arne Bartels, Dai Griffiths&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[[rpmc]] edited April 2018&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Events_and_Traps&amp;diff=10541</id>
		<title>XML: Events and Traps</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Events_and_Traps&amp;diff=10541"/>
		<updated>2018-04-15T16:12:16Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox-Applicable-FSVersion&lt;br /&gt;
| P3D2 = true&lt;br /&gt;
| P3D = true&lt;br /&gt;
| FSXI = false&lt;br /&gt;
| FSXA = true&lt;br /&gt;
| FSX = true&lt;br /&gt;
| FS2004 = true&lt;br /&gt;
| FS2002 = false&lt;br /&gt;
| FS2000 = unknown&lt;br /&gt;
| FS98 = unknown&lt;br /&gt;
| XP10 = unknown&lt;br /&gt;
| XP9 = unknown&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EVENT&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
An Event is a user-initiated instruction to execute a certain Flight Sim (FS) function.  Examples include control surface movement, radio tuning, landing gear retraction/extension, throttle movement, etc.  Events are initiated via joystick or other controller, keyboard, mouse, or gauge software. Initiating an event from within one’s gauge software is often referred to as “throwing”, “firing” or “triggering” an event. &lt;br /&gt;
&lt;br /&gt;
From within XML gauge script, an event is triggered using (&amp;gt;K:EVENT) or &amp;lt;Click Event=&amp;quot;EVENT&amp;quot;/&amp;gt;  instructions.  &lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
 (&amp;gt;K:MIXTURE_RICH) &lt;br /&gt;
instructs FS to set all mixture levers to maximum rich.  This event does not require a number, or argument, to be passed to it.  It’s just (&amp;gt;K:MIXTURE_RICH).  The majority of events require no argument.&lt;br /&gt;
&lt;br /&gt;
 8100 (&amp;gt;K:MIXTURE_SET) &lt;br /&gt;
instructs FS to set mixture levers to 8100, or about mid range.  This is an example of an event that requires an argument.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Almost all events have related read-only simulation variables (A:Variables) that change in response to the event’s execution. The simulation variable &lt;br /&gt;
&lt;br /&gt;
 (A:GENERAL ENG MIXTURE LEVER POSITION:&#039;&#039;index&#039;&#039;, percent) &lt;br /&gt;
&lt;br /&gt;
is associated with the MIXTURE_SET event. If 8100 is passed to MIXTURE_SET, then the A:Var will return 49.44. (Note: 8100/16383 = 49.44.  As per SDK, 16383 is the maximum value allowed for MIXTURE_SET.  Its range is 0 to 16383 **).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Events are single and instantaneous.  Even the smooth increase of the throttle on a game controller is sampled as a series of singular THROTTLE_INCR_SMALL events.&lt;br /&gt;
&lt;br /&gt;
Event expressions don’t contain Units.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The FSX SDK has the complete list in the Events ID section of the [http://msdn.microsoft.com/en-us/library/cc526980.aspx online Microsoft ESP SDK].&lt;br /&gt;
  &lt;br /&gt;
The [http://support.microsoft.com/kb/555857 FS9 SDK can be downloaded here].  Go to the Panels and Gauges link.&lt;br /&gt;
&lt;br /&gt;
Use the Simconnect Name / String Name entries for XML gauges rather than the Event ID name (containing KEY_) which is used with C++ gauges.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EVENT TRAP&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
An Event Trap is gauge code that ‘listens’ for specified events to be triggered. Its purpose is to allow customized, user-defined script to also be executed anytime the specified event is triggered.  By nature, it’s conditional: if Event A is triggered, then process the event trap script and then execute the event.&lt;br /&gt;
&lt;br /&gt;
In XML, the trap is defined using an &amp;lt;On Event&amp;gt; block placed within a &amp;lt;Keys&amp;gt; block:&lt;br /&gt;
 &amp;lt;Keys&amp;gt;&lt;br /&gt;
    &amp;lt;On Event=&amp;quot;LANDING_LIGHTS_TOGGLE&amp;quot;&amp;gt;&lt;br /&gt;
      1 (&amp;gt;L:Sound_Click,number)&lt;br /&gt;
    &amp;lt;/On&amp;gt;&lt;br /&gt;
 &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The event is LANDING_LIGHTS_TOGGLE.  The event trap routine is 1 (&amp;gt;L:Sound_Click,number).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;On Event&amp;gt; blocks should be placed at the bottom of the gauge script in order to catch all events triggered during each gauge update cycle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EVENT PROCESSING AND XML SCRIPT&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
All events that are triggered in the current gauge update cycle are queued and then executed sequentially along with their trap routines, if any exist, at the &#039;&#039;end&#039;&#039; of the cycle. All simulation variables (A:Vars) affected by the executed events return updated values on the subsequent cycle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Event Traps across the Gauge Set:&#039;&#039;&#039;  FS processes &amp;lt;On Event&amp;gt; trap routines found in all gauges of the aircraft’s panel (the ‘gauge set’) before coming back to the point where the original event was processed – at the end of the update cycle in the gauge that triggered the event. &lt;br /&gt;
&lt;br /&gt;
So, if Gauge00 contains the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Keys&amp;gt;&lt;br /&gt;
   &amp;lt;On Event=&amp;quot;PITOT_HEAT_ON&amp;quot;&amp;gt;&lt;br /&gt;
     (L:MyVarA,enum) 10 + (&amp;gt;L:MyVarA,enum)&lt;br /&gt;
   &amp;lt;/On&amp;gt;  &lt;br /&gt;
 &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and Gauge01 contains:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Keys&amp;gt;&lt;br /&gt;
   &amp;lt;On Event=&amp;quot;PITOT_HEAT_ON&amp;quot;&amp;gt;&lt;br /&gt;
     (L:MyVarA,enum) 20 + (&amp;gt;L:MyVarA,enum)&lt;br /&gt;
   &amp;lt;/On&amp;gt;  &lt;br /&gt;
 &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then on the update cycle of the triggering gauge following the PITOT_HEAT_ON event trigger, (L:MyVarA, enum) will return 30.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Visible Window:&#039;&#039;&#039; A condition is that gauges must be in a visible window for their trap routines to be processed. If a gauge is part of a window whose visibility is set to visibility=0, then no &amp;lt;On Event&amp;gt; routines in that gauge will be run until visibility of the window is set to 1, or until the window is made visible on the screen (e.g., drop down menu Views - Instrument Panel - &#039;&#039;Window whatever&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Another important condition is that event trap routines in XML gauges are disabled when the user is in External view. Code-fired events still work fine, but their &amp;lt;On Event&amp;gt; capture sections will not. This is a problem for those who like to manage systems (i.e. the autopilot) via keystrokes while flying in External (Spot plane) view.  A discussion of work-arounds for this limitation can be found in this [http://www.fsdeveloper.com/forum/threads/events-wiki.430484/#post-675044 EVENTS wiki thread] (see post number 13).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;  A recently released FSX expansion module (&#039;&#039;&#039;XMLTools&#039;&#039;&#039; v.1.0, June 2014, from Tom Aguilo) will handle &#039;&#039;FSX&#039;&#039; event traps in any view mode, thus overcoming the visible and external window limitations of stock FSX.  XMLTools can be freely downloaded from the [http://fsdeveloper.com/forum/resources/xmltools-a-common-xml-expansion-module-for-fsx.131/ FSDeveloper Resources] site.  Check that site or FSDeveloper Gauges Forum for XMLTools update notices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Events are processed regardless of aircraft type:&#039;&#039;&#039;  Events and event traps are processed whether or not the event is relevant for the current aircraft.  Any SDK defined event can be triggered and executed in any aircraft.  The event (&amp;gt;K:TOGGLE_WATER_RUDDER), for example, can be triggered and trap routines processed in an aircraft that is not a float plane.  Same thing for helicopter events; their events and traps will be processed in any aircraft.    &lt;br /&gt;
&lt;br /&gt;
As for associated simulation variables, however, following an event the sim will update only those A:Vars that are active for the current aircraft.  (A:WATER RUDDER HANDLE POSITION, percent) will return a non-zero value &#039;&#039;only if&#039;&#039; the current aircraft contains water rudders.  &lt;br /&gt;
&lt;br /&gt;
This can be helpful to know because sometimes a user may want to ‘hijack’ an otherwise useless event to accomplish an un-related chore.  A recent [http://www.fsdeveloper.com/forum/threads/water-rudder-mod-xml.430240/ FSDeveloper forum thread] discussed use of the default water rudder toggle keyboard assignment (ctrl+W) to actually perform a prop reversing routine in a non-seaplane aircraft.  The event trap routine, below, is performed whenever keyboard ctrl+W is pressed.  It has nothing to do with water rudders, but that doesn’t matter.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Keys&amp;gt;&lt;br /&gt;
   &amp;lt;On Event=&amp;quot;TOGGLE_WATER_RUDDER&amp;quot;&amp;gt;&lt;br /&gt;
      (L:Reversing,bool) ! (&amp;gt;L:Reversing,bool)&lt;br /&gt;
      (L:Reversing,bool)&lt;br /&gt;
        if{&lt;br /&gt;
           491 (&amp;gt;K:THROTTLE_SET)&lt;br /&gt;
          -491 (&amp;gt;K:PROP_PITCH_SET)&lt;br /&gt;
        }&lt;br /&gt;
        els{&lt;br /&gt;
           (&amp;gt;K:PROP_PITCH_LO)&lt;br /&gt;
        }&lt;br /&gt;
   &amp;lt;/On&amp;gt;  &lt;br /&gt;
 &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: Prop reverse action will simulate correctly only on aircraft whose model and aircraft.cfg file are already appropriately configured, but the &amp;lt;On Event=&amp;quot;TOGGLE_WATER_RUDDER&amp;quot;&amp;gt; trap above will always fire the THROTTLE_SET and PROP_PITCH_SET events.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AIRCRAFT LOAD AND RE-LOAD ISSUES&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
When an aircraft loads or is re-loaded, gauge script begins running slightly before the sim’s event and trap handling system is operational.  Consequently, if events are fired as part of an &amp;lt;Update&amp;gt; initialization sequence, event and trap errors may occur where the events are apparently not processed, or may seem to be processed incorrectly.  &lt;br /&gt;
&lt;br /&gt;
In fact, however, triggered events are queued, and the queued events plus trap routines are processed all together when the event handling system finally becomes functional.  The length of delay is variable, on the order of 10s of update cycles, and is dependent upon how and when the aircraft is loaded, cache, where the gauge is defined in the panel.cfg, etc.  To deal with this, event triggering in an &amp;lt;Update&amp;gt; initialization sequence should be delayed until the sim’s event handling system is ready.&lt;br /&gt;
&lt;br /&gt;
There are a couple of approaches to construct the delay.  The first invokes a cycle counting routine; the other lets the sim tell you when it’s ready.&lt;br /&gt;
&lt;br /&gt;
Consider the initialization sequence below. The intention is to set one notch of flaps when the aircraft loads.  As written, however, that is not what occurs.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Initialization Sequence:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;Update&amp;gt;&lt;br /&gt;
   (L:MyVarA, enum) 0 ==&lt;br /&gt;
     if{&lt;br /&gt;
       (&amp;gt;K:FLAPS_INCR)&lt;br /&gt;
       (L:MyVarB, enum) ++ (&amp;gt;L:MyVarB, enum)&lt;br /&gt;
     }	&lt;br /&gt;
 &amp;lt;/Update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Event Trap:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;Keys&amp;gt;&lt;br /&gt;
   &amp;lt;On Event=&amp;quot;FLAPS_INCR&amp;quot;&amp;gt;&lt;br /&gt;
     (L:MyVarA, enum) ++ (&amp;gt;L:MyVarA, enum)&lt;br /&gt;
   &amp;lt;/On&amp;gt;&lt;br /&gt;
 &amp;lt;/Keys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On my system, nothing appears to happen until the 20th cycle after the gauge initialization sequence starts running, when the following is returned:&lt;br /&gt;
&lt;br /&gt;
 3	(A:FLAPS HANDLE INDEX, enum)&lt;br /&gt;
 100	(A:FLAPS HANDLE PERCENT, percent)	&lt;br /&gt;
 19	(L:MyVarA, enum)&lt;br /&gt;
 19	(L:MyVarB, enum)&lt;br /&gt;
&lt;br /&gt;
The flaps have been increased to the maximum, 100% position, not just one notch, and both MyVarB and MyVarA are 19.  This result seemingly does not make sense.  &lt;br /&gt;
&lt;br /&gt;
Without delaying execution of the initialization sequence, the (&amp;gt;K:FLAPS_INCR) event and it’s associated event trap responsible for incrementing MyVarA, is queued each cycle until the event handling system is ready, at which point the queue is processed &#039;&#039;at once&#039;&#039;: the flaps are incremented 19 times as is MyVarA which returns 19, not 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cycle Counting approach:&#039;&#039;&#039;  If &amp;lt;Update&amp;gt; is edited to include a cycle skipping delay after aircraft reload (the Event Trap is the same as above),&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Update&amp;gt;&lt;br /&gt;
   (L:CycleCounter, enum) 20 &amp;amp;lt;=&lt;br /&gt;
     if{ (L:CycleCounter, enum) ++ (&amp;gt;L:CycleCounter, enum) }&lt;br /&gt;
 &lt;br /&gt;
   (L:MyVarA, enum) 0 == (L:CycleCounter, enum) 20 &amp;amp;gt;= and&lt;br /&gt;
     if{&lt;br /&gt;
       (&amp;gt;K:FLAPS_INCR)&lt;br /&gt;
       (L:MyVarB, enum) ++ (&amp;gt;L:MyVarB, enum)&lt;br /&gt;
     }&lt;br /&gt;
 &amp;lt;/Update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then the following is obtained. One notch, only, of flaps and both MyVarA and MyVarB are 1. &lt;br /&gt;
&lt;br /&gt;
 1 	(A:FLAPS HANDLE INDEX, enum)&lt;br /&gt;
 33.3	(A:FLAPS HANDLE PERCENT, percent)	&lt;br /&gt;
 21	(L:CycleCounter, enum)&lt;br /&gt;
 1	(L:MyVarA, enum)&lt;br /&gt;
 1	(L:MyVarB, enum)&lt;br /&gt;
&lt;br /&gt;
In this case, the 20 cycle delay provided sufficient time for the event and trap handling system to load before the initialization sequence containing (&amp;gt;K:FLAPS_INCR) was executed.  The event trap was processed in the same cycle, incrementing MyVarA from 0 to 1, and thereby shut off the init sequence in the next cycle.  The event fire initialization sequence now works as intended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; &amp;lt;Update&amp;gt; could have been written:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Update&amp;gt;&lt;br /&gt;
   (L:MyVar&#039;&#039;&#039;[[B]]&#039;&#039;&#039;, enum) 0 ==&lt;br /&gt;
     if{&lt;br /&gt;
       (&amp;gt;K:FLAPS_INCR)&lt;br /&gt;
       (L:MyVarB, enum) ++ (&amp;gt;L:MyVarB, enum)&lt;br /&gt;
     }	&lt;br /&gt;
 &amp;lt;/Update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and the FLAPS_INCR event and trap would have been triggered and processed only once. For the purposes of this wiki, it was written as (L:MyVar&#039;&#039;&#039;A&#039;&#039;&#039;, enum) 0 == with the incrementer in the Event Trap rather than in Update to shed light on the event handling system delay.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Let FS tell you when it’s ready:&#039;&#039;&#039;  In another [http://www.fsdeveloper.com/forum/threads/fsx-ignores-events-at-flight-loading.429672/ FSDeveloper thread], Rob Barendregt proposed an elegant and more fool-proof method of introducing the necessary delay. He suggests to simply fire an event, in his case, the infrequently used&lt;br /&gt;
&lt;br /&gt;
 CABIN_SEATBELTS_ALERT_SWITCH_TOGGLE&lt;br /&gt;
&lt;br /&gt;
event, and when its associated simulation variable, &lt;br /&gt;
&lt;br /&gt;
 (A:CABIN SEATBELTS ALERT SWITCH, bool)&lt;br /&gt;
&lt;br /&gt;
returns 1 that means the sim&#039;s event handling system is operating. Following that, his desired initialization events can be executed successfully. &lt;br /&gt;
&lt;br /&gt;
A slight clarification is that if event traps are included, they will not execute until the cycle following (A:CABIN SEATBELTS ALERT SWITCH, bool) = 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; C Version:  &#039;&#039;&#039;A &amp;quot;C&amp;quot; language version of Rob Barendregt&#039;s method was written by Dai Griffiths and posted in this [https://www.fsdeveloper.com/forum/threads/gauge-search-priority.442569/#post-796989/ FSDeveloper thread]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;“RACE” CONDITION - CONSTANT EVENT FIRING&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
As commonly defined in XML related discussions in this forum, a Race Condition is an uncontrolled and likely unintentional, repetitive event firing situation.  &lt;br /&gt;
&lt;br /&gt;
It’s an issue because continuously firing events can cause unforeseen errors across the gauge set and potentially interfere or conflict with other commands being received.  Race conditions can adversely affect stream code from &amp;lt;Update&amp;gt; and &amp;lt;Element&amp;gt; sections as well as event code from &amp;lt;Mouse&amp;gt; and &amp;lt;Keys&amp;gt; sections in any gauge, not just the gauge that is firing the event.  The culprit gauge (or controller) may be difficult to identify without use of an event logging application.  Doubly difficult if your panel contains a mix of XML and C/C++ gauges.&lt;br /&gt;
&lt;br /&gt;
To mitigate, there are a few best practices to incorporate in XML:&lt;br /&gt;
&lt;br /&gt;
 - Take care when including an event trigger in an &amp;lt;Update&amp;gt; section. Unless its execution is conditional, it will fire continuously.  &lt;br /&gt;
   Add a check, or condition that will limit the event to &#039;&#039;one&#039;&#039; firing only. A good example of such logic is included in this &lt;br /&gt;
   FSDeveloper post by Roman Stoviak ([http://fsdeveloper.com/forum/threads/setting-fuel-flow-order.430781/#post-677935 see response #16]).&lt;br /&gt;
 &lt;br /&gt;
 - Place the event trigger within a mouse click when applicable.  That way, the event is sure to be fired only once unless Repeat=&amp;quot;Yes&amp;quot;&lt;br /&gt;
   is invoked for example, in connection with a VOR1_OBI_INC event.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TOGGLE EVENTS&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
Event toggles come in two varieties; those that require an argument and those that do not.  Most event toggles are of the second type and simply reverse the state of the associated simulation variable.  If the variable was “On”, it now becomes “Off”.  If it was “Off”, it now becomes “On”.  &lt;br /&gt;
&lt;br /&gt;
The current state of the variable can be tricky to keep track of in a panel where multiple gauges can trigger the same event toggle.  To mitigate this, most contributors to this forum suggest instead of using toggles, use _SET, _ON, or _OFF events to explicitly set the state of the variables.  TOGGLE events are best avoided or limited to only a single gauge in the gauge set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 **&lt;br /&gt;
 (&amp;gt;K:MIXTURE_RICH) results in (A:GENERAL ENG MIXTURE LEVER POSITION:1, percent) = 100&lt;br /&gt;
 &lt;br /&gt;
 16383 (&amp;gt;K:MIXTURE_SET) results in (A:GENERAL ENG MIXTURE LEVER POSITION:1, percent) = 99.9939&lt;br /&gt;
 &lt;br /&gt;
 16384 (&amp;gt;K:MIXTURE_SET) results in (A:GENERAL ENG MIXTURE LEVER POSITION:1, percent) = 100&lt;br /&gt;
 &lt;br /&gt;
 Consequently, if you want &#039;&#039;&#039;100.000%&#039;&#039;&#039; full rich, then use (&amp;gt;K:MIXTURE_RICH), best, or 1638&#039;&#039;&#039;4&#039;&#039;&#039; (&amp;gt;K:MIXTURE_SET), second best.&lt;br /&gt;
 &lt;br /&gt;
 A similar situation may apply to other events, but experiment to be sure.&lt;br /&gt;
 &lt;br /&gt;
 16383 = 14 bit binary 11 1111 1111 1111&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Acknowledgments: Tom Aguilo, Bill Leaming, Paul (Gypsy Baron), Rob Barendregt, Manfred Jahn, Doug Dawson, Roy Holmes, Roman Stoviak, Arne Bartels, Dai Griffiths&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[[rpmc]] edited April 2018&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Units:_How_FS_handles_Units&amp;diff=10468</id>
		<title>XML: Units: How FS handles Units</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Units:_How_FS_handles_Units&amp;diff=10468"/>
		<updated>2017-03-03T16:27:23Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox-Applicable-FSVersion&lt;br /&gt;
| P3D2 = true&lt;br /&gt;
| P3D = true&lt;br /&gt;
| FSXI = false&lt;br /&gt;
| FSXA = true&lt;br /&gt;
| FSX = true&lt;br /&gt;
| FS2004 = false&lt;br /&gt;
| FS2002 = false&lt;br /&gt;
| FS2000 = unknown&lt;br /&gt;
| FS98 = unknown&lt;br /&gt;
| XP10 = false &lt;br /&gt;
| XP9 = false &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Thanks go to Tom Aguilo for providing the following information on Units:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A:Vars&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Simulation Variables (A: type) have values saved together with their units&#039; &#039;&#039;flag&#039;&#039;. The numerical value saved is always that associated with the default unit of measurement for the appropriate measurement category. The default is what is considered by Flight Simulator as the reference unit in the Metric system.&lt;br /&gt;
&lt;br /&gt;
Units grouped within the same category maintain a given relationship, or conversion factor, for its reciprocal conversion except Miscellaneous, which generally maintains a 1:1 factor (ie: (A:Light Landing, bool/number/part/enum,etc) all return the same value, 0 or 1 )&lt;br /&gt;
&lt;br /&gt;
If an ( A: ) variable is written without a unit (ie: (A:Fuel weight per gallon) ) a 0 is returned as the relationship of nothing is of course 0.&lt;br /&gt;
&lt;br /&gt;
If an ( A: ) variable is written with a unit not corresponding with its category, the value returned means a conversion between the unit defined and the default unit of the category that unit belongs to.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A:Var Example 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Suppose an aircraft is holding on Rwy 32L at Chicago O’Hare International Airport. The aircraft altimeter will indicate about 673 feet and (A:PLANE ALTITUDE, feet) will return 672.9. However, the numerical value actually saved is 205.1 which is the value of the altitude measured in the default units for the Distance Category, meters.&lt;br /&gt;
&lt;br /&gt;
If the unit of measurement is changed to a unit not corresponding to the Distance category, for example, (A:PLANE ALTITUDE, Kelvin), then the number 205.1 is returned because Kelvin is the default unit of measurement in the Temperature Category. On the other hand, (A:PLANE ALTITUDE, Fahrenheit) will return -90.5 because that is the degrees Fahrenheit equivalent of 205.1 degrees Kelvin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A:Var Example 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A:FUEL TANK LEFT MAIN QUANTITY is a volume variable, and the default unit of measurement for volume is cubic meter. For some Cessna 421 sim models, a full left main tank contains 121 gallons (U.S. liquid gallons), so, for that aircraft, with a full left main tank, Flight Sim stores the value 0.458038 into memory (121 gallons=0.458038 cubic meters), together with a flag that says its a volume type of unit. When Flight Sim is asked to display (A:FUEL TANK LEFT MAIN QUANTITY, &#039;&#039;gallons&#039;&#039;), then it recognizes &#039;&#039;gallons&#039;&#039; as a volume type unit, applies the cubic meter to gallons conversion, and returns 121.&lt;br /&gt;
&lt;br /&gt;
However, if Flight Sim is asked to display (A:FUEL TANK LEFT MAIN QUANTITY, &#039;&#039;pounds&#039;&#039;), then it assumes this is a &#039;&#039;weight&#039;&#039; variable. The default weight unit is kilogram, so Flight Sim assumes that the 0.458038 stored in memory represents 0.458038 &#039;&#039;&#039;kg&#039;&#039;&#039;. When it is asked to covert that to pounds, it returns 1.0098 (0.458038 kg=1.0098 pounds), or in other words, (A:FUEL TANK LEFT MAIN QUANTITY, pounds) = 1.0098.  This value isn&#039;t intuitive and has no meaning because A:FUEL TANK LEFT MAIN QUANTITY is a volume variable, not a weight variable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;L:Vars&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Local Variables (L:type) follow the same logic, although when expressed without a unit, or if expressed using a unit that is not defined by Flight Simulator, no conversion occurs and their values return as literal, taking by default a 1:1 relationship.&lt;br /&gt;
&lt;br /&gt;
L:Var Example:&lt;br /&gt;
 1 (&amp;gt;L:Test) or 1 (&amp;gt;L:Test, dogs) then &lt;br /&gt;
 (L:Test, seconds/minutes/cu meter/number,etc) returns 1&lt;br /&gt;
&lt;br /&gt;
 2 (&amp;gt;L:Test, number) then &lt;br /&gt;
 (L:Test, seconds) returns 2 because seconds is the default unit in the Time Category&lt;br /&gt;
 (L:Test, minutes) returns 0.03333 because seconds is the default unit in the Time Category and there are 0.03333 minutes in two seconds.&lt;br /&gt;
 (L:Test, liters) returns 2000 because cu meter is the default unit in Volume Category and there are 2000 liters in two cubic meters.&lt;br /&gt;
&lt;br /&gt;
 1 (&amp;gt;L:Test, minutes) then &lt;br /&gt;
 (L:Test, seconds) returns 60&lt;br /&gt;
 (L:Test, number) returns 60&lt;br /&gt;
 (L:Test, liters) returns 60000&lt;br /&gt;
 (L:Test) or (L:Test, dogs) returns 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default Unit of Measurement&#039;&#039;&#039;&lt;br /&gt;
 DISTANCE: meter&lt;br /&gt;
 AREA: sq m&lt;br /&gt;
 VOLUME: cubic meter&lt;br /&gt;
 TEMPERATURE: kelvin&lt;br /&gt;
 ANGLE: radian&lt;br /&gt;
 ANGULAR VELOCITY: radian per second&lt;br /&gt;
 SPEED: meter per second&lt;br /&gt;
 ACCELERATION: meter per second squared&lt;br /&gt;
 TIME: second&lt;br /&gt;
 POWER: watt&lt;br /&gt;
 VOLUME RATE: meter cubed per second&lt;br /&gt;
 WEIGHT: kilogram&lt;br /&gt;
 WEIGHT RATE: kilogram per second&lt;br /&gt;
 ELECTRICAL CURRENT: ampere&lt;br /&gt;
 ELECTRICAL POTENTIAL: volt&lt;br /&gt;
 FREQUENCY: hertz&lt;br /&gt;
 DENSITY: kilogram per cubic meter&lt;br /&gt;
 PRESSURE: pascal = newton per square meter&lt;br /&gt;
 TORQUE: newton meter&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No conversion applied&#039;&#039;&#039;&lt;br /&gt;
 SPEED: mach&lt;br /&gt;
 TIME: year&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Not a Pressure Unit&#039;&#039;&#039;&lt;br /&gt;
 PRESSURE: slug feet squared&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1 : 1&#039;&#039;&#039;&lt;br /&gt;
 MISCELLANEOUS: part&lt;br /&gt;
 MISCELLANEOUS: percent over 100&lt;br /&gt;
 MISCELLANEOUS: times&lt;br /&gt;
 MISCELLANEOUS: ratio&lt;br /&gt;
 MISCELLANEOUS: number&lt;br /&gt;
 MISCELLANEOUS: scaler&lt;br /&gt;
 MISCELLANEOUS: position&lt;br /&gt;
 MISCELLANEOUS: enum&lt;br /&gt;
 MISCELLANEOUS: bool&lt;br /&gt;
 MISCELLANEOUS: mask&lt;br /&gt;
 MISCELLANEOUS: flags&lt;br /&gt;
 MISCELLANEOUS: per radian&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conversion is applied&#039;&#039;&#039;&lt;br /&gt;
 MISCELLANEOUS: per degree&lt;br /&gt;
 MISCELLANEOUS: half&lt;br /&gt;
 MISCELLANEOUS: third&lt;br /&gt;
 MISCELLANEOUS: percent&lt;br /&gt;
 MISCELLANEOUS: bel&lt;br /&gt;
 MISCELLANEOUS: decibel&lt;br /&gt;
 MISCELLANEOUS: more_than_a_half&lt;br /&gt;
 MISCELLANEOUS: bco16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Non-functional Unit of Measurement (in FSX)&#039;&#039;&#039;&lt;br /&gt;
 DENSITY: pound per gallon&lt;br /&gt;
&lt;br /&gt;
The system variable (A:Fuel weight per gallon, pounds per gallon) returns 6 in FS9, but the units are not valid in FSX, so the variable returns 0.  This is a handy phenomenon, in that the difference can be exploited to distinguish between FS9 and FSX simulations. See wiki&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;XML: Refreshing Panels in FS9 &amp;amp; FSX&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
for an example application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Non-Numerical value&#039;&#039;&#039;&lt;br /&gt;
 MISCELLANEOUS: string&lt;br /&gt;
&lt;br /&gt;
[[- rpmc]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Units:_How_FS_handles_Units&amp;diff=10467</id>
		<title>XML: Units: How FS handles Units</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Units:_How_FS_handles_Units&amp;diff=10467"/>
		<updated>2017-03-02T03:54:08Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox-Applicable-FSVersion&lt;br /&gt;
| P3D2 = true&lt;br /&gt;
| P3D = true&lt;br /&gt;
| FSXI = false&lt;br /&gt;
| FSXA = true&lt;br /&gt;
| FSX = true&lt;br /&gt;
| FS2004 = false&lt;br /&gt;
| FS2002 = false&lt;br /&gt;
| FS2000 = unknown&lt;br /&gt;
| FS98 = unknown&lt;br /&gt;
| XP10 = false &lt;br /&gt;
| XP9 = false &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Thanks go to Tom Aguilo for providing the following information on Units:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A:Vars&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Simulation Variables (A: type) have values saved together with their units&#039; &#039;&#039;flag&#039;&#039;. The numerical value saved is always that associated with the default unit of measurement for the appropriate measurement category. The default is what is considered by Flight Simulator as the reference unit in the Metric system.&lt;br /&gt;
&lt;br /&gt;
Units grouped within the same category maintain a given relationship, or conversion factor, for its reciprocal conversion except Miscellaneous, which generally maintains a 1:1 factor (ie: (A:Light Landing, bool/number/part/enum,etc) all return the same value, 0 or 1 )&lt;br /&gt;
&lt;br /&gt;
If an ( A: ) variable is written without a unit (ie: (A:Fuel weight per gallon) ) a 0 is returned as the relationship of nothing is of course 0.&lt;br /&gt;
&lt;br /&gt;
If an ( A: ) variable is written with a unit not corresponding with its category, the value returned means a conversion between the unit defined and the default unit of the category that unit belongs to.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A:Var Example 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Suppose an aircraft is holding on Rwy 32L at Chicago O’Hare International Airport. The aircraft altimeter will indicate about 673 feet and (A:PLANE ALTITUDE, feet) will return 672.9. However, the numerical value actually saved is 205.1 which is the value of the altitude measured in the default units for the Distance Category, meters.&lt;br /&gt;
&lt;br /&gt;
If the unit of measurement is changed to a unit not corresponding to the Distance category, for example, (A:PLANE ALTITUDE, Kelvin), then the number 205.1 is returned because Kelvin is the default unit of measurement in the Temperature Category. On the other hand, (A:PLANE ALTITUDE, Fahrenheit) will return -90.5 because that is the degrees Fahrenheit equivalent of 205.1 degrees Kelvin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A:Var Example 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A:FUEL TANK LEFT MAIN QUANTITY is a volume variable, and the default unit of measurement for volume is cubic meter. For some Cessna 421 sim models, a full left main tank contains 121 gallons (U.S. liquid gallons), so, for that aircraft, with a full left main tank, Flight Sim stores the value 0.458038 into memory (121 gallons=0.458038 cubic meters), together with a flag that says its a volume type of unit. When Flight Sim is asked to display (A:FUEL TANK LEFT MAIN QUANTITY, &#039;&#039;gallons&#039;&#039;), then it recognizes this as a volume type unit, applies the cubic meter to gallons conversion, and returns 121.&lt;br /&gt;
&lt;br /&gt;
However, if Flight Sim is asked to display (A:FUEL TANK LEFT MAIN QUANTITY, &#039;&#039;pounds&#039;&#039;), then it assumes this is a &#039;&#039;weight&#039;&#039; variable. The default weight unit is kilogram, so Flight Sim assumes that the 0.458038 stored in memory represents 0.458038 &#039;&#039;&#039;kg&#039;&#039;&#039;. When it is asked to covert that to pounds, it returns 1.0098 (0.458038 kg=1.0098 pounds), or in other words, (A:FUEL TANK LEFT MAIN QUANTITY, pounds) = 1.0098.  This value isn&#039;t intuitive and has no meaning because A:FUEL TANK LEFT MAIN QUANTITY is a volume variable, not a weight variable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;L:Vars&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Local Variables (L:type) follow the same logic, although when expressed without a unit, or if expressed using a unit that is not defined by Flight Simulator, no conversion occurs and their values return as literal, taking by default a 1:1 relationship.&lt;br /&gt;
&lt;br /&gt;
L:Var Example:&lt;br /&gt;
 1 (&amp;gt;L:Test) or 1 (&amp;gt;L:Test, dogs) then &lt;br /&gt;
 (L:Test, seconds/minutes/cu meter/number,etc) returns 1&lt;br /&gt;
&lt;br /&gt;
 2 (&amp;gt;L:Test, number) then &lt;br /&gt;
 (L:Test, seconds) returns 2 because seconds is the default unit in the Time Category&lt;br /&gt;
 (L:Test, minutes) returns 0.03333 because seconds is the default unit in the Time Category and there are 0.03333 minutes in two seconds.&lt;br /&gt;
 (L:Test, liters) returns 2000 because cu meter is the default unit in Volume Category and there are 2000 liters in two cubic meters.&lt;br /&gt;
&lt;br /&gt;
 1 (&amp;gt;L:Test, minutes) then &lt;br /&gt;
 (L:Test, seconds) returns 60&lt;br /&gt;
 (L:Test, number) returns 60&lt;br /&gt;
 (L:Test, liters) returns 60000&lt;br /&gt;
 (L:Test) or (L:Test, dogs) returns 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default Unit of Measurement&#039;&#039;&#039;&lt;br /&gt;
 DISTANCE: meter&lt;br /&gt;
 AREA: sq m&lt;br /&gt;
 VOLUME: cubic meter&lt;br /&gt;
 TEMPERATURE: kelvin&lt;br /&gt;
 ANGLE: radian&lt;br /&gt;
 ANGULAR VELOCITY: radian per second&lt;br /&gt;
 SPEED: meter per second&lt;br /&gt;
 ACCELERATION: meter per second squared&lt;br /&gt;
 TIME: second&lt;br /&gt;
 POWER: watt&lt;br /&gt;
 VOLUME RATE: meter cubed per second&lt;br /&gt;
 WEIGHT: kilogram&lt;br /&gt;
 WEIGHT RATE: kilogram per second&lt;br /&gt;
 ELECTRICAL CURRENT: ampere&lt;br /&gt;
 ELECTRICAL POTENTIAL: volt&lt;br /&gt;
 FREQUENCY: hertz&lt;br /&gt;
 DENSITY: kilogram per cubic meter&lt;br /&gt;
 PRESSURE: pascal = newton per square meter&lt;br /&gt;
 TORQUE: newton meter&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No conversion applied&#039;&#039;&#039;&lt;br /&gt;
 SPEED: mach&lt;br /&gt;
 TIME: year&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Not a Pressure Unit&#039;&#039;&#039;&lt;br /&gt;
 PRESSURE: slug feet squared&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1 : 1&#039;&#039;&#039;&lt;br /&gt;
 MISCELLANEOUS: part&lt;br /&gt;
 MISCELLANEOUS: percent over 100&lt;br /&gt;
 MISCELLANEOUS: times&lt;br /&gt;
 MISCELLANEOUS: ratio&lt;br /&gt;
 MISCELLANEOUS: number&lt;br /&gt;
 MISCELLANEOUS: scaler&lt;br /&gt;
 MISCELLANEOUS: position&lt;br /&gt;
 MISCELLANEOUS: enum&lt;br /&gt;
 MISCELLANEOUS: bool&lt;br /&gt;
 MISCELLANEOUS: mask&lt;br /&gt;
 MISCELLANEOUS: flags&lt;br /&gt;
 MISCELLANEOUS: per radian&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conversion is applied&#039;&#039;&#039;&lt;br /&gt;
 MISCELLANEOUS: per degree&lt;br /&gt;
 MISCELLANEOUS: half&lt;br /&gt;
 MISCELLANEOUS: third&lt;br /&gt;
 MISCELLANEOUS: percent&lt;br /&gt;
 MISCELLANEOUS: bel&lt;br /&gt;
 MISCELLANEOUS: decibel&lt;br /&gt;
 MISCELLANEOUS: more_than_a_half&lt;br /&gt;
 MISCELLANEOUS: bco16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Non-functional Unit of Measurement (in FSX)&#039;&#039;&#039;&lt;br /&gt;
 DENSITY: pound per gallon&lt;br /&gt;
&lt;br /&gt;
The system variable (A:Fuel weight per gallon, pounds per gallon) returns 6 in FS9, but the units are not valid in FSX, so the variable returns 0.  This is a handy phenomenon, in that the difference can be exploited to distinguish between FS9 and FSX simulations. See wiki&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;XML: Refreshing Panels in FS9 &amp;amp; FSX&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
for an example application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Non-Numerical value&#039;&#039;&#039;&lt;br /&gt;
 MISCELLANEOUS: string&lt;br /&gt;
&lt;br /&gt;
[[- rpmc]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_PID_Controller&amp;diff=10448</id>
		<title>XML: PID Controller</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_PID_Controller&amp;diff=10448"/>
		<updated>2017-02-04T17:21:21Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: Created page with &amp;quot;[http://fsdeveloper.com/forum/threads/ap-speed-hold-pid-controller.437633/ AP speed hold PID controller]  Thank you to Bjoern K. (Heretic) for providing a detailed explanation...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://fsdeveloper.com/forum/threads/ap-speed-hold-pid-controller.437633/ AP speed hold PID controller]&lt;br /&gt;
&lt;br /&gt;
Thank you to Bjoern K. (Heretic) for providing a detailed explanation and XML example of a PID Controller and consolidating a link list of PID threads authored by various FSDeveloper contributors.&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_NOT_Operator_!&amp;diff=10438</id>
		<title>XML: NOT Operator !</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_NOT_Operator_!&amp;diff=10438"/>
		<updated>2016-12-27T18:22:45Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* NOT Operator ! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== NOT Operator ! ==&lt;br /&gt;
&#039;&#039;Explanation of the &#039;&#039;&#039;[[!]]&#039;&#039;&#039; Operator courtesy Tom Aguilo:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The NOT Operator, &#039;&#039;&#039;!&#039;&#039;&#039; (negation sign) acts like a toggle operator. It works by extracting the top value on the stack and converting it:&lt;br /&gt;
&lt;br /&gt;
  - to 0 when it is &amp;gt;= 1 or &amp;lt;= -1 (equivalent to logical FALSE, or &amp;quot;zero&amp;quot; )&lt;br /&gt;
  - to 1 when it is &amp;gt; -1 and &amp;lt; 1  (equivalent to logical TRUE, or &amp;quot;not zero&amp;quot; )&lt;br /&gt;
From FSDeveloper thread: [[http://fsdeveloper.com/forum/threads/landing-variable.439017/#post-761124]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_NOT_Operator_!&amp;diff=10437</id>
		<title>XML: NOT Operator !</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_NOT_Operator_!&amp;diff=10437"/>
		<updated>2016-12-26T16:06:02Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* NOT Operator ! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== NOT Operator ! ==&lt;br /&gt;
&#039;&#039;Explanation of the &#039;&#039;&#039;[[!]]&#039;&#039;&#039; Operator courtesy Tom Aguilo:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The NOT Operator, &#039;&#039;&#039;!&#039;&#039;&#039; (negation sign) acts like a toggle operator. It works by extracting the last value on the stack and converting it:&lt;br /&gt;
&lt;br /&gt;
  - to 0 when it is &amp;gt;= 1 or &amp;lt;= -1 (equivalent to logical FALSE, or &amp;quot;zero&amp;quot; )&lt;br /&gt;
  - to 1 when it is &amp;gt; -1 and &amp;lt; 1  (equivalent to logical TRUE, or &amp;quot;not zero&amp;quot; )&lt;br /&gt;
From FSDeveloper thread: [[http://fsdeveloper.com/forum/threads/landing-variable.439017/#post-761124]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_NOT_Operator_!&amp;diff=10436</id>
		<title>XML: NOT Operator !</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_NOT_Operator_!&amp;diff=10436"/>
		<updated>2016-12-26T16:05:45Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* NOT Operator ! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== NOT Operator ! ==&lt;br /&gt;
&#039;&#039;Explanation of the &#039;&#039;&#039;[[!]]&#039;&#039;&#039; Operator courtesy Tom Aguilo:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The NOT Operator, ! (negation sign) acts like a toggle operator. It works by extracting the last value on the stack and converting it:&lt;br /&gt;
&lt;br /&gt;
  - to 0 when it is &amp;gt;= 1 or &amp;lt;= -1 (equivalent to logical FALSE, or &amp;quot;zero&amp;quot; )&lt;br /&gt;
  - to 1 when it is &amp;gt; -1 and &amp;lt; 1  (equivalent to logical TRUE, or &amp;quot;not zero&amp;quot; )&lt;br /&gt;
From FSDeveloper thread: [[http://fsdeveloper.com/forum/threads/landing-variable.439017/#post-761124]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=Units:_How_FS_handles_Units&amp;diff=10435</id>
		<title>Units: How FS handles Units</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=Units:_How_FS_handles_Units&amp;diff=10435"/>
		<updated>2016-12-26T16:03:12Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: Rpmc moved page Units: How FS handles Units to XML: Units: How FS handles Units&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[XML: Units: How FS handles Units]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Units:_How_FS_handles_Units&amp;diff=10434</id>
		<title>XML: Units: How FS handles Units</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Units:_How_FS_handles_Units&amp;diff=10434"/>
		<updated>2016-12-26T16:03:12Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: Rpmc moved page Units: How FS handles Units to XML: Units: How FS handles Units&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox-Applicable-FSVersion&lt;br /&gt;
| P3D2 = true&lt;br /&gt;
| P3D = true&lt;br /&gt;
| FSXI = false&lt;br /&gt;
| FSXA = true&lt;br /&gt;
| FSX = true&lt;br /&gt;
| FS2004 = false&lt;br /&gt;
| FS2002 = false&lt;br /&gt;
| FS2000 = unknown&lt;br /&gt;
| FS98 = unknown&lt;br /&gt;
| XP10 = false &lt;br /&gt;
| XP9 = false &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Thanks go to Tom Aguilo for providing the following information on Units:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A:Vars&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Simulation Variables (A: type) have values saved together with their units&#039; &#039;&#039;flag&#039;&#039;. The numerical value saved is always that associated with the default unit of measurement for the appropriate measurement category. The default is what is considered by Flight Simulator as the reference unit in the Metric system.&lt;br /&gt;
&lt;br /&gt;
Units grouped within the same category maintain a given relationship, or conversion factor, for its reciprocal conversion except Miscellaneous, which generally maintains a 1:1 factor (ie: (A:Light Landing, bool/number/part/enum,etc) all return the same value, 0 or 1 )&lt;br /&gt;
&lt;br /&gt;
If an ( A: ) variable is written without a unit (ie: (A:Fuel weight per gallon) ) a 0 is returned as the relationship of nothing is of course 0.&lt;br /&gt;
&lt;br /&gt;
If an ( A: ) variable is written with a unit not corresponding with its category, the value returned means a conversion between the unit defined and the default unit of the category that unit belongs to.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A:Var Example 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Suppose an aircraft is holding on Rwy 32L at Chicago O’Hare International Airport. The aircraft altimeter will indicate about 673 feet and (A:PLANE ALTITUDE, feet) will return 672.9. However, the numerical value actually saved is 205.1 which is the value of the altitude measured in the default units for the Distance Category, meters.&lt;br /&gt;
&lt;br /&gt;
If the unit of measurement is changed to a unit not corresponding to the Distance category, for example, (A:PLANE ALTITUDE, Kelvin), then the number 205.1 is returned because Kelvin is the default unit of measurement in the Temperature Category. On the other hand, (A:PLANE ALTITUDE, Fahrenheit) will return -90.5 because that is the degrees Fahrenheit equivalent of 205.1 degrees Kelvin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A:Var Example 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A:FUEL TANK LEFT MAIN QUANTITY is a volume variable, and the default unit of measurement for volume is cubic meter. For some Cessna 421 sim models, a full left main tank contains 121 gallons (U.S. liquid gallons), so, for that aircraft, with a full left main tank, Flight Sim stores the value 0.458038 into memory (121 gallons=0.458038 cubic meters), together with a flag that says its a volume type of unit. When Flight Sim is asked to display (A:FUEL TANK LEFT MAIN QUANTITY, &#039;&#039;gallons&#039;&#039;), then it recognizes this as a volume type unit, applies the cubic meter to gallons conversion, and returns 121.&lt;br /&gt;
&lt;br /&gt;
However, if Flight Sim is asked to display (A:FUEL TANK LEFT MAIN QUANTITY, &#039;&#039;pounds&#039;&#039;), then it assumes this as a &#039;&#039;weight&#039;&#039; variable. The default weight unit is kilogram, so Flight Sim assumes that the 0.458038 stored in memory represents 0.458038 &#039;&#039;&#039;kg&#039;&#039;&#039;. When it is asked to covert that to pounds, it returns 1.0098 (0.458038 kg=1.0098 pounds), or in other words, (A:FUEL TANK LEFT MAIN QUANTITY, pounds) = 1.0098.  This value isn&#039;t intuitive and has no meaning because A:FUEL TANK LEFT MAIN QUANTITY is a volume variable, not a weight variable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;L:Vars&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Local Variables (L:type) follow the same logic, although when expressed without a unit, or if expressed using a unit that is not defined by Flight Simulator, no conversion occurs and their values return as literal, taking by default a 1:1 relationship.&lt;br /&gt;
&lt;br /&gt;
L:Var Example:&lt;br /&gt;
 1 (&amp;gt;L:Test) or 1 (&amp;gt;L:Test, dogs) then &lt;br /&gt;
 (L:Test, seconds/minutes/cu meter/number,etc) returns 1&lt;br /&gt;
&lt;br /&gt;
 2 (&amp;gt;L:Test, number) then &lt;br /&gt;
 (L:Test, seconds) returns 2 because seconds is the default unit in the Time Category&lt;br /&gt;
 (L:Test, minutes) returns 0.03333 because seconds is the default unit in the Time Category and there are 0.03333 minutes in two seconds.&lt;br /&gt;
 (L:Test, liters) returns 2000 because cu meter is the default unit in Volume Category and there are 2000 liters in two cubic meters.&lt;br /&gt;
&lt;br /&gt;
 1 (&amp;gt;L:Test, minutes) then &lt;br /&gt;
 (L:Test, seconds) returns 60&lt;br /&gt;
 (L:Test, number) returns 60&lt;br /&gt;
 (L:Test, liters) returns 60000&lt;br /&gt;
 (L:Test) or (L:Test, dogs) returns 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default Unit of Measurement&#039;&#039;&#039;&lt;br /&gt;
 DISTANCE: meter&lt;br /&gt;
 AREA: sq m&lt;br /&gt;
 VOLUME: cubic meter&lt;br /&gt;
 TEMPERATURE: kelvin&lt;br /&gt;
 ANGLE: radian&lt;br /&gt;
 ANGULAR VELOCITY: radian per second&lt;br /&gt;
 SPEED: meter per second&lt;br /&gt;
 ACCELERATION: meter per second squared&lt;br /&gt;
 TIME: second&lt;br /&gt;
 POWER: watt&lt;br /&gt;
 VOLUME RATE: meter cubed per second&lt;br /&gt;
 WEIGHT: kilogram&lt;br /&gt;
 WEIGHT RATE: kilogram per second&lt;br /&gt;
 ELECTRICAL CURRENT: ampere&lt;br /&gt;
 ELECTRICAL POTENTIAL: volt&lt;br /&gt;
 FREQUENCY: hertz&lt;br /&gt;
 DENSITY: kilogram per cubic meter&lt;br /&gt;
 PRESSURE: pascal = newton per square meter&lt;br /&gt;
 TORQUE: newton meter&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No conversion applied&#039;&#039;&#039;&lt;br /&gt;
 SPEED: mach&lt;br /&gt;
 TIME: year&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Not a Pressure Unit&#039;&#039;&#039;&lt;br /&gt;
 PRESSURE: slug feet squared&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1 : 1&#039;&#039;&#039;&lt;br /&gt;
 MISCELLANEOUS: part&lt;br /&gt;
 MISCELLANEOUS: percent over 100&lt;br /&gt;
 MISCELLANEOUS: times&lt;br /&gt;
 MISCELLANEOUS: ratio&lt;br /&gt;
 MISCELLANEOUS: number&lt;br /&gt;
 MISCELLANEOUS: scaler&lt;br /&gt;
 MISCELLANEOUS: position&lt;br /&gt;
 MISCELLANEOUS: enum&lt;br /&gt;
 MISCELLANEOUS: bool&lt;br /&gt;
 MISCELLANEOUS: mask&lt;br /&gt;
 MISCELLANEOUS: flags&lt;br /&gt;
 MISCELLANEOUS: per radian&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conversion is applied&#039;&#039;&#039;&lt;br /&gt;
 MISCELLANEOUS: per degree&lt;br /&gt;
 MISCELLANEOUS: half&lt;br /&gt;
 MISCELLANEOUS: third&lt;br /&gt;
 MISCELLANEOUS: percent&lt;br /&gt;
 MISCELLANEOUS: bel&lt;br /&gt;
 MISCELLANEOUS: decibel&lt;br /&gt;
 MISCELLANEOUS: more_than_a_half&lt;br /&gt;
 MISCELLANEOUS: bco16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Non-functional Unit of Measurement (in FSX)&#039;&#039;&#039;&lt;br /&gt;
 DENSITY: pound per gallon&lt;br /&gt;
&lt;br /&gt;
The system variable (A:Fuel weight per gallon, pounds per gallon) returns 6 in FS9, but the units are not valid in FSX, so the variable returns 0.  This is a handy phenomenon, in that the difference can be exploited to distinguish between FS9 and FSX simulations. See wiki&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;XML: Refreshing Panels in FS9 &amp;amp; FSX&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
for an example application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Non-Numerical value&#039;&#039;&#039;&lt;br /&gt;
 MISCELLANEOUS: string&lt;br /&gt;
&lt;br /&gt;
[[- rpmc]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=NOT_Operator_!&amp;diff=10433</id>
		<title>NOT Operator !</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=NOT_Operator_!&amp;diff=10433"/>
		<updated>2016-12-26T16:01:27Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: Rpmc moved page NOT Operator ! to XML: NOT Operator !&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[XML: NOT Operator !]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_NOT_Operator_!&amp;diff=10432</id>
		<title>XML: NOT Operator !</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_NOT_Operator_!&amp;diff=10432"/>
		<updated>2016-12-26T16:01:27Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: Rpmc moved page NOT Operator ! to XML: NOT Operator !&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== NOT Operator ! ==&lt;br /&gt;
&#039;&#039;Explanation of the &#039;&#039;&#039;!&#039;&#039;&#039; Operator courtesy Tom Aguilo:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The NOT Operator, ! (negation sign) acts like a toggle operator. It works by extracting the last value on the stack and converting it:&lt;br /&gt;
&lt;br /&gt;
  - to 0 when it is &amp;gt;= 1 or &amp;lt;= -1 (equivalent to logical FALSE, or &amp;quot;zero&amp;quot; )&lt;br /&gt;
  - to 1 when it is &amp;gt; -1 and &amp;lt; 1  (equivalent to logical TRUE, or &amp;quot;not zero&amp;quot; )&lt;br /&gt;
From FSDeveloper thread: [[http://fsdeveloper.com/forum/threads/landing-variable.439017/#post-761124]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_NOT_Operator_!&amp;diff=10431</id>
		<title>XML: NOT Operator !</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_NOT_Operator_!&amp;diff=10431"/>
		<updated>2016-12-26T15:59:05Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* NOT Operator ! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== NOT Operator ! ==&lt;br /&gt;
&#039;&#039;Explanation of the &#039;&#039;&#039;!&#039;&#039;&#039; Operator courtesy Tom Aguilo:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The NOT Operator, ! (negation sign) acts like a toggle operator. It works by extracting the last value on the stack and converting it:&lt;br /&gt;
&lt;br /&gt;
  - to 0 when it is &amp;gt;= 1 or &amp;lt;= -1 (equivalent to logical FALSE, or &amp;quot;zero&amp;quot; )&lt;br /&gt;
  - to 1 when it is &amp;gt; -1 and &amp;lt; 1  (equivalent to logical TRUE, or &amp;quot;not zero&amp;quot; )&lt;br /&gt;
From FSDeveloper thread: [[http://fsdeveloper.com/forum/threads/landing-variable.439017/#post-761124]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_NOT_Operator_!&amp;diff=10430</id>
		<title>XML: NOT Operator !</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_NOT_Operator_!&amp;diff=10430"/>
		<updated>2016-12-26T15:55:41Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* NOT Operator ! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== NOT Operator ! ==&lt;br /&gt;
&#039;&#039;Explanation of the &#039;&#039;&#039;!&#039;&#039;&#039; Operator courtesy Tom Aguilo:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The NOT Operator, ! (negation sign) acts like a toggle operator. It works by extracting the last value on the stack and converting it:&lt;br /&gt;
&lt;br /&gt;
  - to 0 when it is &amp;gt;= 1 or &amp;lt;= -1 (equivalent to logical FALSE, or &amp;quot;zero&amp;quot; )&lt;br /&gt;
  - to 1 when it is &amp;gt; -1 and &amp;lt; 1 (equivalent to logical TRUE, or &amp;quot;not zero&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
Reference [http://fsdeveloper.com/forum/threads/landing-variable.439017/#post-761124&lt;br /&gt;
/ Tom Aguilo]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_NOT_Operator_!&amp;diff=10429</id>
		<title>XML: NOT Operator !</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_NOT_Operator_!&amp;diff=10429"/>
		<updated>2016-12-26T15:53:45Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* NOT Operator ! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== NOT Operator ! ==&lt;br /&gt;
&lt;br /&gt;
Explanation of the ! Operator courtesy Tom Aguilo:&lt;br /&gt;
&lt;br /&gt;
The NOT Operator, ! (negation sign) acts like a toggle operator. It works by extracting the last value on the stack and converting it:&lt;br /&gt;
&lt;br /&gt;
  - to 0 when it is &amp;gt;= 1 or &amp;lt;= -1 (equivalent to logical FALSE, or &amp;quot;zero&amp;quot; )&lt;br /&gt;
  - to 1 when it is &amp;gt; -1 and &amp;lt; 1 (equivalent to logical TRUE, or &amp;quot;not zero&amp;quot; )&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_NOT_Operator_!&amp;diff=10428</id>
		<title>XML: NOT Operator !</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_NOT_Operator_!&amp;diff=10428"/>
		<updated>2016-12-26T15:53:25Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: Created page with &amp;quot; == NOT Operator ! ==  Explanation of the ! Operator courtesy Tom Aguilo:  The NOT Operator, ! (negation sign) acts like a toggle operator. It works by extracting the last val...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== NOT Operator ! ==&lt;br /&gt;
&lt;br /&gt;
Explanation of the ! Operator courtesy Tom Aguilo:&lt;br /&gt;
&lt;br /&gt;
The NOT Operator, ! (negation sign) acts like a toggle operator. It works by extracting the last value on the stack and converting it:&lt;br /&gt;
&lt;br /&gt;
- to 0 when it is &amp;gt;= 1 or &amp;lt;= -1 (equivalent to logical FALSE, or &amp;quot;zero&amp;quot; )&lt;br /&gt;
- to 1 when it is &amp;gt; -1 and &amp;lt; 1 (equivalent to logical TRUE, or &amp;quot;not zero&amp;quot; )&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10370</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10370"/>
		<updated>2016-04-25T06:45:37Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* Stack examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to [http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx this old blog]&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack XML operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load/Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STACK GAUGE&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Attached to this [http://fsdeveloper.com/forum/threads/colored-trim-position-in-percent-text-string.437125/#post-741953 FSDeveloper thread] is a simple XML gauge that can be used to view the stack at any point in an XML script.  To understand what the lesser known XML Operators actually do or to Q/C complicated script logic, it is sometimes useful to see the stack, step by step.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[- rpmc]]&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10369</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10369"/>
		<updated>2016-04-25T04:35:52Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* Stack examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to [http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx this old blog]&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack XML operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load/Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STACK GAUGE&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Attached to this [http://fsdeveloper.com/forum/threads/colored-trim-position-in-percent-text-string.437125/#post-741953 FSDeveloper thread] is a simple XML gauge that can be used to view the stack at any point in an XML script.  To understand what the lesser known XML Operators actually do or to Q/C complicated script logic, it is sometimes useful to see the stack, step by step.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[- rpmc]]&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10368</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10368"/>
		<updated>2016-04-25T04:33:44Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* Stack examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog [http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx]&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack XML operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load/Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STACK GAUGE&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Attached to this [FSDeveloper thread [http://fsdeveloper.com/forum/threads/colored-trim-position-in-percent-text-string.437125/#post-741953]] is a simple XML gauge that can be used to view the stack at any point in an XML script.  To understand what the lesser known XML Operators actually do or to Q/C complicated script logic, it is sometimes useful to see the stack, step by step.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[- rpmc]]&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10367</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10367"/>
		<updated>2016-04-25T04:33:15Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* Stack examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog [http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx]&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack XML operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load/Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STACK GAUGE&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Attached to this [FSDeveloper thread http://fsdeveloper.com/forum/threads/colored-trim-position-in-percent-text-string.437125/#post-741953] is a simple XML gauge that can be used to view the stack at any point in an XML script.  To understand what the lesser known XML Operators actually do or to Q/C complicated script logic, it is sometimes useful to see the stack, step by step.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[- rpmc]]&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10366</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10366"/>
		<updated>2016-04-25T04:31:24Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog [http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx]&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack XML operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load/Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STACK GAUGE&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Attached to this FSDeveloper thread [http://fsdeveloper.com/forum/threads/colored-trim-position-in-percent-text-string.437125/#post-741953] is a simple XML gauge that can be used to view the stack at any point in an XML script.  To understand what the lesser known XML Operators actually do or to Q/C complicated script logic, it is sometimes useful to see the stack, step by step.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[- rpmc]]&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10365</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10365"/>
		<updated>2016-04-25T04:27:40Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* Stack examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog [http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx]&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack XML operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load/Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STACK GAUGE&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Attached to this FSDeveloper thread [http://fsdeveloper.com/forum/threads/colored-trim-position-in-percent-text-string.437125/#post-741953] is a simple XML gauge that can be used to view the stack at any point in an XML script.  To understand what the lesser known XML Operators actually do, it is sometimes useful to see how they influence the stack.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[- rpmc]]&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10364</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10364"/>
		<updated>2016-04-25T04:23:24Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* Stack examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog [http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx]&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack XML operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load/Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STACK GAUGE&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Attached to this FSDeveloper thread [http://fsdeveloper.com/forum/threads/colored-trim-position-in-percent-text-string.437125/#post-741953] is a simple XML gauge that can be used to view the stack at any point in the XML script.  To understand what the lesser known XML Operators actually do, it is sometimes useful to see how they influence the stack.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[- rpmc]]&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10363</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10363"/>
		<updated>2016-04-25T04:22:22Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* Stack examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog [http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx]&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack XML operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load/Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STACK GAUGE&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Attached to this FSDeveloper thread [[http://fsdeveloper.com/forum/threads/colored-trim-position-in-percent-text-string.437125/#post-741953]] is a simple XML gauge that can be used to view the stack at any point in the XML script.  To understand what the lesser known XML Operators actually do, it is sometimes useful to see how they influence the stack.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[- rpmc]]&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10362</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10362"/>
		<updated>2016-04-25T04:20:53Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack XML operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load/Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STACK GAUGE&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Attached to this FSDeveloper thread [[http://fsdeveloper.com/forum/threads/colored-trim-position-in-percent-text-string.437125/#post-741953]] is a simple XML gauge that can be used to view the stack at any point in the XML script.  To understand what the lesser known XML Operators actually do, it is sometimes useful to see how they influence the stack.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[- rpmc]]&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10361</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10361"/>
		<updated>2016-04-25T04:10:43Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* Stack examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack XML operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load/Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[- rpmc]]&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10360</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10360"/>
		<updated>2016-04-25T04:10:06Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack XML operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load/Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[[Acknowledgement:]]  Thanks to Tom Aguilo for information on stack structure.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[- rpmc]]&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10359</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10359"/>
		<updated>2016-04-25T04:09:39Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* Stack examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack XML operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load/Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[- rpmc]]&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10358</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10358"/>
		<updated>2016-04-25T04:08:52Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack XML operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load/Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- rpmc&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10357</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10357"/>
		<updated>2016-04-25T04:08:00Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack XML operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load/Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- rpmc&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10356</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10356"/>
		<updated>2016-04-25T04:06:33Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack XML operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load/Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&lt;br /&gt;
&lt;br /&gt;
- rpmc&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10355</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10355"/>
		<updated>2016-04-25T04:05:49Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load/Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&lt;br /&gt;
&lt;br /&gt;
- rpmc&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10354</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10354"/>
		<updated>2016-04-25T04:04:24Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* Stack examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load or Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&lt;br /&gt;
&lt;br /&gt;
- rpmc&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10353</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10353"/>
		<updated>2016-04-25T04:04:09Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* Stack examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load or Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&lt;br /&gt;
&lt;br /&gt;
- rpmc&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10352</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10352"/>
		<updated>2016-04-25T04:03:48Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* Stack examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load or Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&lt;br /&gt;
&lt;br /&gt;
- rpmc&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10351</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10351"/>
		<updated>2016-04-25T04:03:26Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* Stack examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load or Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&lt;br /&gt;
&lt;br /&gt;
- rpmc&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10350</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10350"/>
		<updated>2016-04-25T04:02:57Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load or Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&lt;br /&gt;
&lt;br /&gt;
- rpmc&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10349</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10349"/>
		<updated>2016-04-25T04:02:32Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* Stack examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load or Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Acknowledgement:  Thanks to Tom Aguilo for information on stack structure.&lt;br /&gt;
&lt;br /&gt;
- rpmc&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10348</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10348"/>
		<updated>2016-04-25T04:01:14Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx&lt;br /&gt;
the maximum stack depth is 30.  When the stack is full, any new value pushed onto the top causes the bottom value to be removed and discarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is cleared at the beginning of each gauge cycle, or by applying the Clear Stack operator, &amp;quot;c&amp;quot;.  Of course, also during a panel Load or Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DIFFERENT STACKS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The stack is shared between &amp;lt;Update&amp;gt; and all of the &amp;lt;Element&amp;gt; set. As well, each &amp;lt;Area&amp;gt;, &amp;lt;On Event&amp;gt; and &amp;lt;On Key&amp;gt; structures hold their own stacks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Acknowledgement:  Thanks to Tom Aguilo for information on stack structure&lt;br /&gt;
&lt;br /&gt;
- rpmc&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10347</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10347"/>
		<updated>2016-04-24T14:25:38Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* Stack examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx&lt;br /&gt;
the maximum stack depth is 30.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[... Work in progress]]&lt;br /&gt;
&lt;br /&gt;
- rpmc&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10346</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10346"/>
		<updated>2016-04-24T14:25:14Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* Stack examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAXIMUM STACK DEPTH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx&lt;br /&gt;
the maximum stack depth is 30.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLEARING THE STACK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Work in progress]]&lt;br /&gt;
&lt;br /&gt;
- rpmc&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10345</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10345"/>
		<updated>2016-04-24T05:12:40Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* Stack examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OTHER&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx&lt;br /&gt;
the maximum stack depth is 30.&lt;br /&gt;
&lt;br /&gt;
- rpmc&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10344</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10344"/>
		<updated>2016-04-24T05:12:15Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* Stack examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OTHER&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
According to this old blog http://blogs.technet.com/b/engauged/archive/2005/11/08/413947.aspx&lt;br /&gt;
the maximum stack depth is 30.&lt;br /&gt;
&lt;br /&gt;
- rpmc&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10343</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10343"/>
		<updated>2016-04-24T05:07:19Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
- rpmc&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10342</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10342"/>
		<updated>2016-04-24T05:06:52Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack examples ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example.png]]&lt;br /&gt;
&lt;br /&gt;
- rpmc&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10341</id>
		<title>XML: Stack Example</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=XML:_Stack_Example&amp;diff=10341"/>
		<updated>2016-04-24T05:05:33Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: /* Stack example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Stack example ==&lt;br /&gt;
&lt;br /&gt;
[[File:Stack Example 0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- rpmc&lt;br /&gt;
[[Category:Aircraft Design]]&lt;br /&gt;
[[Category:Panel and Gauge Design]]&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=File:Stack_Example.png&amp;diff=10340</id>
		<title>File:Stack Example.png</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=File:Stack_Example.png&amp;diff=10340"/>
		<updated>2016-04-24T05:04:04Z</updated>

		<summary type="html">&lt;p&gt;Rpmc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rpmc</name></author>
	</entry>
</feed>