ELAB-080 Programming

Download Sourcecode for Microsoft Visual C++ 6
DPlot graphing software. This is extremely useful.

This is from Ian at Dynon in regards to their currently undocumented functions:


	(I asked Ian about a function to check if it's okay to go and get the DSO data)

    The latest DLL has a function in it, bool PollDSOReady(), that does just that.
    The documentation isn't done yet, but that's the major change to the DLL, so you can probably use it. The latest DLL is on the website.
 
    The other big changes are that it no longer requires the C style unique identifiers, and the structure of CaptureDSOData changed so that the LA trigger value is seperate.
 
int CaptureDSOData(unsigned int total_blocks, unsigned int pre_trigger_blocks, unsigned int trigger_channel, double trigger_value, unsigned int LA_trigger, unsigned int auto_roll, long OverrideOtherClocks)


int RetrieveFFTData(double *data_buffer, int channel, int db, int direction) PARAMETERS: // ## data_buffer - a pointer to an array where the FFT data will be stored // ## channel - integer value where value 2 is Channel 2 and anything else is Channel 1 // ## db - integer value of 1 will cause the function to return FFT data in dB, anything else will cause the function to return raw data (volts) // ## direction - an integer value to specify the direction sign I think a direction of 0 is time->FFT and 1 is FFT->time, but you may need to play with that. You call this function after you have taken a capture.

Change log:
01-MARCH-2006 9:30AM

This demo doesn't do much.  Click the "SetupAWG" button to load a buffer 
with nearly 1 kilobyte of data.

This data is a sine wave created like this:

	for(x=0;x<=BufferSize-1;x++)
			AnalogVoltage[x]=(0.5)*sin(((double)x/(double)BufferSize)*(2*3.1415));


The sin function's argument is an angle in radians.  2*PI radians in a 
circle.  All we're doing is stretching the sine wave across 1000 data 
points, cutting the amplitude in half (-0.5V to +0.5V or 1V peak to peak) 
and then populating the array.

Next you click "AWGStart" and it will play back the data in the buffer 
continuously.  ..., 998, 999, 0, 1, 2, ...

This demo out of the box will produce a 100kHz sine wave.  (Number of 
samples * sample rate we wish to use for playback)

1000 samples * 100000 Hz (remember the 1000 samples is ONE sine function 
cycle!)  My (old) frequency counter says 100.128kHz.

I wrote this to learn how to code for the ELAB-080 a few months back.  I 
updated it to work with the current DLL that Dynon distributes.  They 
fixed the weirdness with the function call names and a few other things.  
Look through the code to see what the buttons do.

Please feel free to drop me a line if you're stuck.  bobd@x-division.com

------------------------------------------------------------------------------

01-MARCH-2006 12:30PM 

I added an undocumented feature to check if data is in the buffer before 
retrieving it from the DSO:

bool PollDSOReady()

and implemented the new calling convention for CaptureDSOData(): 

int CaptureDSOData(unsigned int total_blocks, unsigned int pre_trigger_blocks, unsigned int trigger_channel, double trigger_value, unsigned int LA_trigger, unsigned int auto_roll, long OverrideOtherClocks) 

Note the addition of uint LA_trigger.

------------------------------------------------------------------------------

02-MARCH-2006 10:13AM 

Adjusted the sample rate for reading channel 1.  Loop the AWG output to 
DSO1 input and start the AWG.  Click capture, then retrieve, and then you 
should have a plain text file with one data point per line at 
c:\output.txt.  I bring this in with dplot (free demo!) and see a nice 
pretty graph.