|
- classdef Oscilloscope < Equipment
- %OSCILLOSCOPE Summary of this class goes here
- % Detailed explanation goes here
-
- properties
- nchannels
- horizontalPosition
- timescale
- ch1
- ch2
- ch3
- ch4
- trigger
- acquisition
- end
-
- methods
- function sc = Oscilloscope(ipAddress,port,nchannels)
- %OSCILLOSCOPE Construct an instance of this class
- % Detailed explanation goes here
- sc@Equipment(ipAddress,port,-1);
- sc.trigger = Trigger(sc);
- sc.nchannels = nchannels;
- for i = 1:nchannels
- sc.(['ch',num2str(i)]) = Channel(sc,i);
- end
- end
-
- function s = get.acquisition(sc)
- s = sc.query('ACQ:STAT?');
- end
-
- function run(sc)
- sc.write_noerror('RUN');
- end
-
- function single(sc)
- sc.write_noerror('SING');
- end
-
- function stop(sc)
- sc.write_noerror('STOP');
- end
-
- function auto(sc)
- sc.write_noerror('AUT');
- end
-
- function enable_channels(sc)
- sc.write('CHAN:AON')
- end
-
- function disable_channels(sc)
- sc.write('CHAN:AOFF')
- end
-
- function setMeasurement(sc,measurement,type,source1,source2)
- prefix = ['MEAS',num2str(measurement),':'];
- fprintf(num2str(nargin))
- if nargin < 5
- source2 = 'CH2';
- if nargin < 4
- source1 = 'CH1';
- end
- end
- source = [source1,', ',source2];
- sc.write([prefix,'SOUR ',source]);
- sc.write([prefix,'MAIN ',type]);
- end
-
- function m = getMeasurement(sc,measurement)
- m = str2double(sc.query(['MEAS',num2str(measurement),':RES:ACT?']));
- end
-
- function setWaveformSettings(sc,window,format)
- if nargin < 3
- format = 'REAL';
- if nargin < 2
- window = 'DEF';
- end
- end
- sc.clear;
- sc.write('CHAN:TYPE HRES');
- sc.write(['FORM ',format]);
- sc.write('FORM:BORD MSBF');
- sc.write(['CHAN:DATA:POIN ',window]);
- sc.single;
- end
-
- function data = readWaveform(sc,datalength)
- prefixstring = fscanf(sc.tcp,'%c',2);
- prefixlength = str2double(prefixstring(2));
- fscanf(sc.tcp,'%c',prefixlength);
- data = sc.bin_read_float(datalength);
- flushinput(sc.tcp);
- end
-
-
- function data = waveform(sc,channels,window)
- if nargin < 3
- window = 'DEF';
- if nargin < 2
- channels = 1:sc.nchannels;
- end
- end
- sc.enable_channels;
- sc.setWaveformSettings(window);
- for i = channels
- curcha = ['ch',num2str(i)];
- wave = sc.(curcha).getWaveform;
- data.(curcha) = wave.data;
- end
- data.sampletime = wave.sampletime;
- data.length = wave.length;
- end
-
-
- % function data = waveform(ch,cha)
- % ch.scope.clear;
- % ch.scope.write('CHAN1:TYPE HRES');
- % ch.scope.write('FORM REAL');
- % ch.scope.write('FORM:BORD MSBF');
- % ch.scope.write('CHAN1:DATA:POIN DEF');
- % ch.scope.write('SING');
- % header = str2num(ch.scope.query('CHAN1:DATA:HEAD?'));
- % ch.scope.write_unsafe('CHAN1:DATA?');
- % prefixstring = fscanf(ch.scope.tcp,'%c',2);
- % prefixlength = str2double(prefixstring(2));
- % datalength = fscanf(ch.scope.tcp,'%c',prefixlength);
- % data = fread(ch.scope.tcp,header(3),'float');
- % flushinput(ch.scope.tcp);
- % end
- end
- end
-
-
-
-
|