Oscilloscope addon
The oscilloscope addon was created as an example of the use of 3 helpers included in the addon:
skinnable.nas
to create Canvas GUI dialogs including multiple clickable layers.graph.nas
to create various types of Canvas instruments.[2]plot2D.nas
the very basic Canvas helpers.
But apart from that, the oscilloscope addon itself may be an useful tool for developers and coders. Although I do not know any aircraft that has this instrument in its panel, the on-board engineer will eventually appreciate having it on hand at some point.
Background
I was just thinking today that it might be cool to have a built in grapher for simple / quick graphing needs.
With the property system it would be trivial to pick an arbitrary property from the property tree and graph it over time -- superimposed on top of everything else. Things get a bit trickier if you want to control scaling, how much time history get's graphed, multiple values, etc., but even graphing a single value (or maybe just two values) over time could be of some use. I thought I'd toss this out there in case someone thought it was worth while enough to tackle.[3]— Curtis Olson
|
How to install
Note This is the latest version (Jan 30, 2018) |
Note From version 2017.4.0, the FlightGear launcher accepts the --addon option in the Settings/Additional Settings tab.
|
If your FlightGear version accepts Addons, you can download this feature from the FGAddon repository. Download all the 11 files into the directory of your choice.
Launch FlightGear including --addon
argument, for example:
fgfs <usual args> --addon=/path/to/fgaddon/Oscilloscope
Otherwise, you can install it as a submodule. Contact the author for further instructions.
How to use
Manual mode
Just pressing the o key the oscilloscope window appears:
Clicking the ? button you will have a basic help about clickable areas and readings. Click ? again to close the help.
Connecting to a source
Click any BNC connector (Channel 1 or Channel 2) to open the Channel Source dialog.
Enter a valid source as:
- A numeric or boolean property, for example:
/position/altitude-agl-ft
- A numeric Nasal expression, for example:
getprop("/engines/engine/rpm") /100 ;
(do not forget the;
)0 ;
(only useful to adjust Offset)5+4*math.sin(D2R*int(100*systime())) ;
Since the time of oscilloscope is the same as simulated one, simulation must not be paused in order to see the resulting plots.
The window above the connector will display the current source value.
Adjusting gain and offset
Clicking the upper/lower half of the Gain knobs will increase/decrease the gain of the channel.
The window below the knob will display the current gain (units/div).
The Offset knobs respond in a similar way.
Adjusting timebase
Proceed in the same way with the Timebase knob. The window below the knob will display the current sweep speed (secs/div).
One Shot store
Clicking this button will erase the screen and prepare Channel 2 to act as trigger.
Channel 2 must be an integer or boolean property. Once its value changes, a single sweep is triggered and the screen freezes.
Click this button again in order to return to the default continuous sweeps.
Scripted mode
Note Buttons and knobs will still reacting to manual clicks. |
Instead of launching the oscilloscope with the o key and clicking buttons and knobs, it is possible to instantiate the instrument from a Nasal script.
Open the Nasal Console (or the REPL interpreter if you prefer) and execute these lines:
var Osc = oscilloscope.show.new();
var myFunc = func {return 10+4*math.sin(D2R*int(100*systime()));};
Osc.setTimeBase(0.2);
Osc.setChannelInput(2,'/controls/engines/engine/magnetos');
Osc.setChannelInput(1, myFunc);
Osc.setGain(channel:1, gain:2);
Osc.setGain(channel:2, gain:2);
You can explore other nasal instructions like:
Osc.setChannelInput(2, func {return 5.5;});
Osc.setChannelInput(1, 'var alt = getprop("/position/altitude-ft"); return alt/10;');
References
References
|
Related content
Wiki article
- FGPlot - A preceding effort to create a plotting dialog.
Forum topic
- Plot2D and graph helpers topic on the forum (December 2017-March 2018) - Partially the development topic