[Next Page] [Contents] [Previous Page] [Exit]

SECTION 3

SOFTWARE PROGRAMMING

The AMCA computer runs a program called METEOR which samples the audio output and signal meter voltage of the receiver, searches these data for meteor echoes, and logs the number of meteors in each 45 and 60 minute interval along with ancillary information. Both intervals are used in order to avoid aliasing with other geophysical effects. This section describes METEOR for a programmer who may need to modify it. The sub-sections provide an overview of the software, a description of the program flow, a summary of each software module. A complete listing of the program, with variables defined, is contained in the Appendix.

Software overview

METEOR is written in the MicroSoft QuickBasic programming language. QuickBasic was chosen because of its suitability for rapid prototyping, its integrated set of development tools, and its ease of use in controlling input/output (I/O) to peripheral devices such as A/D boards.

The program is about 800 lines in length, including 10 modules, and a section documenting the variables. Each subroutine is a block of code that begins with a Label statement and ends with a Return. Flow between the modules is controlled by Gosub statements. Thus, all the program's variables are in common to all the subroutines. Each module begins with a prologue, and contains in-line documentation. In keeping with QuickBasic conventions, the source code file is named METEOR.BAS and the executable is called METEOR.EXE.

The QuickBasic development environment allows for building small executable files that can be run from a computer with QuickBasic run-time libraries, or larger executables that have been linked to the run-time libraries and may be run from any computer. The size of the METEOR.EXE file in the former case is 19 kilobytes (KB) and in the latter case is 65 KB.

METEOR presently runs under DOS, though most of the program could easily be converted to a Windows application using Microsoft VisualBasic. Objects such as command buttons and text boxes might be an asset to the user. Microsoft-supplied classes, such as Graph, would also be useful to the programmer. The interface with the A/D board could be more complicated however.

Program flow

The MAIN module of METEOR calls AAinit to define and initialize variables. Next, MAIN calls UserInput to get user supplied parameters for the run. Then, MAIN contains a loop over Audio which samples and autocorrelates the audio signal, Power which samples signal power and plots it, RefreshScreen which redraws the screen when required, PressQ which allows the user to quit, and CheckTime which contains logic that executes based on elapsed time. The basic timing and logical flow are depicted in Figure 3.1.

FIGURE 3.1

image: Block Diagram of AMCA software

In the innermost loop, the power is sampled every 0.1 second. If the new power sample is much larger than the old, it triggers an audio sample. If the autocorrelation of the triggered audio is greater than that of the reference audio, then a meteor is counted, or else a false trigger is counted. If 10 seconds have elapsed since the last reference audio, then a new audio sample is taken, or else a new power sample is taken.

Module descriptions

The following routines constitute METEOR:

AAinit
initializes variables, format statements, A/D board address, and error trapping
Audio
samples audio input and autocorrelates it, also accumulates audio and power for averages
CheckTime
checks the time for sampling signal and audio, and for storing 45 and 60 minute interval data
LongEcho
tests to see if a meteor echo is of long duration
PlotAudio
plots the audio correlation
Power
samples signal power from A/D board and converts to decibel milliwatts (dBm) units, also looks for power jump and calls for an audio sample if found
PressQ
allows the user to quit the program
RefreshScreen
redraws the screen after it is filled with data along the time axis
UserInput
gets user supplied parameters, defaults are on disk

[Next Page] [Contents] [Previous Page] [Exit]