|
-
- <!DOCTYPE html
- PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html><head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <!--
- This HTML was auto-generated from MATLAB code.
- To make changes, update the MATLAB code and republish this document.
- --><title>Channel</title><meta name="generator" content="MATLAB 9.4"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2018-03-24"><meta name="DC.source" content="Channel.m"><style type="text/css">
- html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}:focus{outine:0}ins{text-decoration:none}del{text-decoration:line-through}table{border-collapse:collapse;border-spacing:0}
-
- html { min-height:100%; margin-bottom:1px; }
- html body { height:100%; margin:0px; font-family:Arial, Helvetica, sans-serif; font-size:10px; color:#000; line-height:140%; background:#fff none; overflow-y:scroll; }
- html body td { vertical-align:top; text-align:left; }
-
- h1 { padding:0px; margin:0px 0px 25px; font-family:Arial, Helvetica, sans-serif; font-size:1.5em; color:#d55000; line-height:100%; font-weight:normal; }
- h2 { padding:0px; margin:0px 0px 8px; font-family:Arial, Helvetica, sans-serif; font-size:1.2em; color:#000; font-weight:bold; line-height:140%; border-bottom:1px solid #d6d4d4; display:block; }
- h3 { padding:0px; margin:0px 0px 5px; font-family:Arial, Helvetica, sans-serif; font-size:1.1em; color:#000; font-weight:bold; line-height:140%; }
-
- a { color:#005fce; text-decoration:none; }
- a:hover { color:#005fce; text-decoration:underline; }
- a:visited { color:#004aa0; text-decoration:none; }
-
- p { padding:0px; margin:0px 0px 20px; }
- img { padding:0px; margin:0px 0px 20px; border:none; }
- p img, pre img, tt img, li img, h1 img, h2 img { margin-bottom:0px; }
-
- ul { padding:0px; margin:0px 0px 20px 23px; list-style:square; }
- ul li { padding:0px; margin:0px 0px 7px 0px; }
- ul li ul { padding:5px 0px 0px; margin:0px 0px 7px 23px; }
- ul li ol li { list-style:decimal; }
- ol { padding:0px; margin:0px 0px 20px 0px; list-style:decimal; }
- ol li { padding:0px; margin:0px 0px 7px 23px; list-style-type:decimal; }
- ol li ol { padding:5px 0px 0px; margin:0px 0px 7px 0px; }
- ol li ol li { list-style-type:lower-alpha; }
- ol li ul { padding-top:7px; }
- ol li ul li { list-style:square; }
-
- .content { font-size:1.2em; line-height:140%; padding: 20px; }
-
- pre, code { font-size:12px; }
- tt { font-size: 1.2em; }
- pre { margin:0px 0px 20px; }
- pre.codeinput { padding:10px; border:1px solid #d3d3d3; background:#f7f7f7; }
- pre.codeoutput { padding:10px 11px; margin:0px 0px 20px; color:#4c4c4c; }
- pre.error { color:red; }
-
- @media print { pre.codeinput, pre.codeoutput { word-wrap:break-word; width:100%; } }
-
- span.keyword { color:#0000FF }
- span.comment { color:#228B22 }
- span.string { color:#A020F0 }
- span.untermstring { color:#B20000 }
- span.syscmd { color:#B28C00 }
-
- .footer { width:auto; padding:10px 0px; margin:25px 0px 0px; border-top:1px dotted #878787; font-size:0.8em; line-height:140%; font-style:italic; color:#878787; text-align:left; float:none; }
- .footer p { margin:0px; }
- .footer a { color:#878787; }
- .footer a:hover { color:#878787; text-decoration:underline; }
- .footer a:visited { color:#878787; }
-
- table th { padding:7px 5px; text-align:left; vertical-align:middle; border: 1px solid #d6d4d4; font-weight:bold; }
- table td { padding:7px 5px; text-align:left; vertical-align:top; border:1px solid #d6d4d4; }
-
-
-
-
-
- </style></head><body><div class="content"><pre class="codeinput"><span class="keyword">classdef</span> Channel
- <span class="comment">% CHANNEL is the class for one channel of the oscilloscope. Multiple</span>
- <span class="comment">% settings for the different channels of the oscilloscope can be changed</span>
- <span class="comment">% via this class definition</span>
-
- <span class="keyword">properties</span> (Hidden, Access = private)
- scope <span class="comment">% Contains the class of the scope that is parent of this channel.</span>
- channelnumber <span class="comment">% is the number of the channel on the scope.</span>
- <span class="keyword">end</span>
- <span class="keyword">properties</span> (Dependent)
- state
- coupling
- bandwidth
- scale
- offset
- probe
- label
- type
- probeunit
- <span class="keyword">end</span>
-
- <span class="keyword">methods</span>
- <span class="keyword">function</span> ch = Channel(scope,channelnumber)
- ch.channelnumber = channelnumber;
- ch.scope = scope;
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> s = get.state(ch)
- s = ch.CHAN(<span class="string">'state?'</span>);
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> out = get.coupling(ch)
- out = ch.CHAN(<span class="string">'coup?'</span>);
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> out = get.bandwidth(ch)
- out = ch.CHAN(<span class="string">'band?'</span>);
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> out = get.offset(ch)
- out = ch.CHAN(<span class="string">'offs?'</span>);
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> out = get.scale(ch)
- out = ch.CHAN(<span class="string">'scal?'</span>);
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> out = get.label(ch)
- out = ch.CHAN(<span class="string">'lab?'</span>);
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> out = get.type(ch)
- out = ch.CHAN(<span class="string">'type?'</span>);
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> out = get.probeunit(ch)
- out = ch.scope.query([<span class="string">'PROB'</span>,num2str(ch.channelnumber),<span class="string">':SET:ATT:UNIT?'</span>]);
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> out = get.probe(ch)
- out = ch.scope.query([<span class="string">'PROB'</span>,num2str(ch.channelnumber),<span class="string">':SET:ATT:MAN?'</span>]);
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> ch = set.state(ch,in)
- ch.CHAN(<span class="string">'state'</span>,in);
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> ch = set.coupling(ch,in)
- ch.CHAN(<span class="string">'coup'</span>,in);
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> ch = set.bandwidth(ch,in)
- ch.CHAN(<span class="string">'band'</span>,in);
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> ch = set.offset(ch,in)
- ch.CHAN(<span class="string">'offs'</span>,in);
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> ch = set.scale(ch,in)
- ch.CHAN(<span class="string">'scal'</span>,in);
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> ch = set.label(ch,in)
- ch.CHAN(<span class="string">'lab'</span>,in);
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> ch = set.type(ch,in)
- ch.CHAN(<span class="string">'type'</span>,in);
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> out = frequency(ch)
- out = str2double(ch.MEAS(<span class="string">'freq'</span>));
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> out = peak2peak(ch)
- out = str2double(ch.MEAS(<span class="string">'peak'</span>));
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> out = period(ch)
- out = str2double(ch.MEAS(<span class="string">'per'</span>));
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> out = amplitude(ch)
- out = str2double(ch.MEAS(<span class="string">'ampl'</span>));
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> out = mean(ch)
- out = str2double(ch.MEAS(<span class="string">'mean'</span>));
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> out = rms(ch)
- out = str2double(ch.MEAS(<span class="string">'rms'</span>));
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> out = phase(ch)
- out = str2double(ch.MEAS(<span class="string">'phas'</span>));
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> ch = set.probeunit(ch,unit)
- ch.scope.write([<span class="string">'PROB'</span>,num2str(ch.channelnumber),<span class="string">':SET:ATT:UNIT '</span>, unit]);
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> ch = set.probe(ch,man)
- ch.scope.write([<span class="string">'PROB'</span>,num2str(ch.channelnumber),<span class="string">':SET:ATT:MAN '</span>, man]);
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> data = waveform(ch,window)
- ch.scope.single;
- <span class="keyword">if</span> nargin < 2
- window = <span class="string">'DEF'</span>;
- <span class="keyword">end</span>
- ch.scope.setWaveformSettings(window,<span class="string">'REAL'</span>)
- data = ch.getWaveform;
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> data = getWaveform(ch)
- header = str2num(ch.CHAN(<span class="string">'DATA:HEAD?'</span>));
- data.length = header(3);
- data.start = header(1);
- data.stop = header(2);
- data.sampletime = str2double(ch.CHAN(<span class="string">'DATA:XINC?'</span>));
- ch.scope.opc;
- ch.scope.write_unsafe([<span class="string">'CHAN'</span>,num2str(ch.channelnumber),<span class="string">':DATA?'</span>]);
- data.data = ch.scope.readWaveform(data.length);
- <span class="keyword">end</span>
-
- <span class="keyword">end</span>
-
- <span class="keyword">methods</span> (Hidden, Access = private)
- <span class="keyword">function</span> c = CHAN(ch,string,in)
- <span class="keyword">if</span> nargin == 2
- <span class="keyword">if</span> strcmp(string(end),<span class="string">'?'</span>)
- c = ch.scope.query([<span class="string">'CHAN'</span>,num2str(ch.channelnumber),<span class="string">':'</span>,string]);
- <span class="keyword">else</span>
- ch.scope.write([<span class="string">'CHAN'</span>,num2str(ch.channelnumber),<span class="string">':'</span>,string]);
- <span class="keyword">end</span>
- <span class="keyword">else</span>
- ch.scope.write([<span class="string">'CHAN'</span>,num2str(ch.channelnumber),<span class="string">':'</span>,string,<span class="string">' '</span>,in]);
- <span class="keyword">end</span>
- <span class="keyword">end</span>
-
- <span class="keyword">function</span> c = MEAS(ch,string)
- c = ch.scope.query([<span class="string">'MEAS'</span>,num2str(ch.channelnumber),<span class="string">':RES:ACT?'</span>,string]);
- <span class="keyword">end</span>
-
- <span class="comment">% function c = CHANsend(ch,string,in)</span>
- <span class="comment">% c = ['CHAN',num2str(ch.channelnumber),':',string,' ',in];</span>
- <span class="comment">% end</span>
- <span class="keyword">end</span>
- <span class="keyword">end</span>
- </pre><pre class="codeoutput error">Not enough input arguments.
-
- Error in Channel (line 24)
- ch.channelnumber = channelnumber;
- </pre><p class="footer"><br><a href="https://www.mathworks.com/products/matlab/">Published with MATLAB® R2018a</a><br></p></div><!--
- ##### SOURCE BEGIN #####
- classdef Channel
- % CHANNEL is the class for one channel of the oscilloscope. Multiple
- % settings for the different channels of the oscilloscope can be changed
- % via this class definition
-
- properties (Hidden, Access = private)
- scope % Contains the class of the scope that is parent of this channel.
- channelnumber % is the number of the channel on the scope.
- 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
-
- % function c = CHANsend(ch,string,in)
- % c = ['CHAN',num2str(ch.channelnumber),':',string,' ',in];
- % end
- end
- end
- ##### SOURCE END #####
- --></body></html>
|