%{
AsciiArb is a sample program that demonstrates how to download an arbitrary waveform
	into instrument volatile memory and play back the same with the configuration below:
	This arb generates a 8192 point pulse waveform, of which the first 400 points define a
	positive pulse from 0 volts to the maximum defined voltage amplitude.

Wave Shape: Arb
Amplitude:	2 Volt Peak to Peak
Offset:		0 Volt
Output Impedance:	50 Ohm
Output: Enabled

This example will work with the Agilent 33210A, 33220A, and 33250A
%}


% clears all variables, closes all open files

clear all; close all; clc;

%opens and creates a visa session for communication with function generator

fgen = visa('AGILENT','GPIB1::11::INSTR');
set (fgen,'OutputBufferSize',100000);
fopen(fgen);

%Query Idendity string and report
fprintf (fgen, '*IDN?');
idn = fscanf (fgen);
fprintf (idn)
fprintf ('\n\n')

%Clear and reset instrument
fprintf (fgen, '*RST');
fprintf (fgen, '*CLS');


	

	%Set desired configuration.
	
    fprintf(fgen,'FUNCTION SIN');
    fprintf(fgen,'VOLT 2'); % set max waveform amplitude to 2 Vpp
    fprintf(fgen,'VOLT:OFFSET 0'); % set offset to 0 V
    fprintf(fgen,'OUTPUT:LOAD 50'); % set output load to 50 ohms
    fprintf(fgen,'FREQ 2000'); %set frequency to 1KHz
   
 

    %Enable Output
    fprintf(fgen,'OUTPUT ON'); % turn on channel 1 output


% Read Error
fprintf(fgen, 'SYST:ERR?');
errorstr = fscanf (fgen);

% error checking
if strncmp (errorstr, '+0,"No error"',13)
   errorcheck = 'Waveform generated without any error \n';
   fprintf (errorcheck)
else
   errorcheck = ['Error reported: ', errorstr];
   fprintf (errorcheck)
end

%closes the visa session with the function generator
fclose(fgen);