classdef Channel
properties (Hidden, Access = private)
scope
channelnumber
end
properties (Dependent)
state
coupling
bandwidth
scale
offset
probe
label
type
probeunit
end
methods
function ch = Channel(scope,channelnumber)
ch.channelnumber = channelnumber;
ch.scope = scope;
end
function s = get.state(ch)
s = ch.CHAN('state?');
end
function out = get.coupling(ch)
out = ch.CHAN('coup?');
end
function out = get.bandwidth(ch)
out = ch.CHAN('band?');
end
function out = get.offset(ch)
out = ch.CHAN('offs?');
end
function out = get.scale(ch)
out = ch.CHAN('scal?');
end
function out = get.label(ch)
out = ch.CHAN('lab?');
end
function out = get.type(ch)
out = ch.CHAN('type?');
end
function out = get.probeunit(ch)
out = ch.scope.query(['PROB',num2str(ch.channelnumber),':SET:ATT:UNIT?']);
end
function out = get.probe(ch)
out = ch.scope.query(['PROB',num2str(ch.channelnumber),':SET:ATT:MAN?']);
end
function ch = set.state(ch,in)
ch.CHAN('state',in);
end
function ch = set.coupling(ch,in)
ch.CHAN('coup',in);
end
function ch = set.bandwidth(ch,in)
ch.CHAN('band',in);
end
function ch = set.offset(ch,in)
ch.CHAN('offs',in);
end
function ch = set.scale(ch,in)
ch.CHAN('scal',in);
end
function ch = set.label(ch,in)
ch.CHAN('lab',in);
end
function ch = set.type(ch,in)
ch.CHAN('type',in);
end
function out = frequency(ch)
out = str2double(ch.MEAS('freq'));
end
function out = peak2peak(ch)
out = str2double(ch.MEAS('peak'));
end
function out = period(ch)
out = str2double(ch.MEAS('per'));
end
function out = amplitude(ch)
out = str2double(ch.MEAS('ampl'));
end
function out = mean(ch)
out = str2double(ch.MEAS('mean'));
end
function out = rms(ch)
out = str2double(ch.MEAS('rms'));
end
function out = phase(ch)
out = str2double(ch.MEAS('phas'));
end
function ch = set.probeunit(ch,unit)
ch.scope.write(['PROB',num2str(ch.channelnumber),':SET:ATT:UNIT ', unit]);
end
function ch = set.probe(ch,man)
ch.scope.write(['PROB',num2str(ch.channelnumber),':SET:ATT:MAN ', man]);
end
function data = waveform(ch,window)
ch.scope.single;
if nargin < 2
window = 'DEF';
end
ch.scope.setWaveformSettings(window,'REAL')
data = ch.getWaveform;
end
function data = getWaveform(ch)
header = str2num(ch.CHAN('DATA:HEAD?'));
data.length = header(3);
data.start = header(1);
data.stop = header(2);
data.sampletime = str2double(ch.CHAN('DATA:XINC?'));
ch.scope.opc;
ch.scope.write_unsafe(['CHAN',num2str(ch.channelnumber),':DATA?']);
data.data = ch.scope.readWaveform(data.length);
end
end
methods (Hidden, Access = private)
function c = CHAN(ch,string,in)
if nargin == 2
if strcmp(string(end),'?')
c = ch.scope.query(['CHAN',num2str(ch.channelnumber),':',string]);
else
ch.scope.write(['CHAN',num2str(ch.channelnumber),':',string]);
end
else
ch.scope.write(['CHAN',num2str(ch.channelnumber),':',string,' ',in]);
end
end
function c = MEAS(ch,string)
c = ch.scope.query(['MEAS',num2str(ch.channelnumber),':RES:ACT?',string]);
end
end
end
Not enough input arguments.
Error in Channel (line 24)
ch.channelnumber = channelnumber;