classdef Channel %CHANNEL Summary of this class goes here % Detailed explanation goes here properties (Hidden, Access = private) scope channelnumber end properties (Dependent) state coupling bandwidth scale offset probe label type 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 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 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 % function c = CHANsend(ch,string,in) % c = ['CHAN',num2str(ch.channelnumber),':',string,' ',in]; % end end end