9Programming Examples
/* Write image data to file. */
fp = fopen ("c:\\scope\\data\\screen.bmp", "wb");
img_size = fwrite(image_data, sizeof(unsigned char), img_size, fp); fclose (fp);
printf("Wrote image data (%d bytes) to file.\n", img_size); viSetAttribute(vi, VI_ATTR_TMO_VALUE, 5000);
/* MEASURE - The commands in the MEASURE subsystem are used to
*make measurements on displayed waveforms.
*/
/* Set source to measure. */
viPrintf(vi, ":MEASURE:SOURCE CHANNEL1\n");
/* Query for frequency. */
viQueryf(vi, ":MEASURE:FREQUENCY?\n", "%lf", &frequency); printf("The frequency is: %.4f kHz\n", frequency / 1000);
/* Query for peak to peak voltage. */ viQueryf(vi, ":MEASURE:VPP?\n", "%lf", &vpp); printf("The peak to peak voltage is: %.2f V\n", vpp);
/* WAVEFORM_DATA - Get waveform data from oscilloscope. */
get_waveform();
/* Make | some calculations from the preamble | data. */ | ||
vdiv | = | 32 * preamble [7]; |
| |
off | = | preamble [8]; |
|
|
sdiv | = | preamble [2] * preamble [4] / 10; |
| |
delay = | (preamble [2] / | 2) * preamble [4] + | preamble [5]; | |
/* Print them out... */ |
|
| ||
printf ("Scope Settings | for Channel 1:\n"); |
| ||
printf ("Volts per Division = %f\n", vdiv); |
|
printf ("Offset = %f\n", off);
printf ("Seconds per Division = %f\n", sdiv); printf ("Delay = %f\n", delay);
/* print out the waveform voltage at selected points */ for (i = 0; i < 1000; i = i + 50)
printf ("Data Point %4d = %6.2f Volts at %10f Seconds\n", i, ((float)waveform_data[i] - preamble[9]) * preamble[7] + preamble[8],
((float)i - preamble[6]) * preamble[4] + preamble[5]);
save_waveform(); | /* | Save | waveform | data | to disk. */ |
retrieve_waveform(); | /* | Load | waveform | data | from disk. */ |
}
/*
*get_waveform
*
*This function transfers the data displayed on the oscilloscope to
*the computer for storage, plotting, or further analysis.
*/
564 | Agilent InfiniiVision 5000 Series Oscilloscopes Programmer's Reference |