選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

418 行
17KB

  1. <!DOCTYPE html
  2. PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html><head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. <!--
  6. This HTML was auto-generated from MATLAB code.
  7. To make changes, update the MATLAB code and republish this document.
  8. --><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">
  9. 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}
  10. html { min-height:100%; margin-bottom:1px; }
  11. 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; }
  12. html body td { vertical-align:top; text-align:left; }
  13. 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; }
  14. 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; }
  15. 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%; }
  16. a { color:#005fce; text-decoration:none; }
  17. a:hover { color:#005fce; text-decoration:underline; }
  18. a:visited { color:#004aa0; text-decoration:none; }
  19. p { padding:0px; margin:0px 0px 20px; }
  20. img { padding:0px; margin:0px 0px 20px; border:none; }
  21. p img, pre img, tt img, li img, h1 img, h2 img { margin-bottom:0px; }
  22. ul { padding:0px; margin:0px 0px 20px 23px; list-style:square; }
  23. ul li { padding:0px; margin:0px 0px 7px 0px; }
  24. ul li ul { padding:5px 0px 0px; margin:0px 0px 7px 23px; }
  25. ul li ol li { list-style:decimal; }
  26. ol { padding:0px; margin:0px 0px 20px 0px; list-style:decimal; }
  27. ol li { padding:0px; margin:0px 0px 7px 23px; list-style-type:decimal; }
  28. ol li ol { padding:5px 0px 0px; margin:0px 0px 7px 0px; }
  29. ol li ol li { list-style-type:lower-alpha; }
  30. ol li ul { padding-top:7px; }
  31. ol li ul li { list-style:square; }
  32. .content { font-size:1.2em; line-height:140%; padding: 20px; }
  33. pre, code { font-size:12px; }
  34. tt { font-size: 1.2em; }
  35. pre { margin:0px 0px 20px; }
  36. pre.codeinput { padding:10px; border:1px solid #d3d3d3; background:#f7f7f7; }
  37. pre.codeoutput { padding:10px 11px; margin:0px 0px 20px; color:#4c4c4c; }
  38. pre.error { color:red; }
  39. @media print { pre.codeinput, pre.codeoutput { word-wrap:break-word; width:100%; } }
  40. span.keyword { color:#0000FF }
  41. span.comment { color:#228B22 }
  42. span.string { color:#A020F0 }
  43. span.untermstring { color:#B20000 }
  44. span.syscmd { color:#B28C00 }
  45. .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; }
  46. .footer p { margin:0px; }
  47. .footer a { color:#878787; }
  48. .footer a:hover { color:#878787; text-decoration:underline; }
  49. .footer a:visited { color:#878787; }
  50. table th { padding:7px 5px; text-align:left; vertical-align:middle; border: 1px solid #d6d4d4; font-weight:bold; }
  51. table td { padding:7px 5px; text-align:left; vertical-align:top; border:1px solid #d6d4d4; }
  52. </style></head><body><div class="content"><pre class="codeinput"><span class="keyword">classdef</span> Channel
  53. <span class="comment">% CHANNEL is the class for one channel of the oscilloscope. Multiple</span>
  54. <span class="comment">% settings for the different channels of the oscilloscope can be changed</span>
  55. <span class="comment">% via this class definition</span>
  56. <span class="keyword">properties</span> (Hidden, Access = private)
  57. scope <span class="comment">% Contains the class of the scope that is parent of this channel.</span>
  58. channelnumber <span class="comment">% is the number of the channel on the scope.</span>
  59. <span class="keyword">end</span>
  60. <span class="keyword">properties</span> (Dependent)
  61. state
  62. coupling
  63. bandwidth
  64. scale
  65. offset
  66. probe
  67. label
  68. type
  69. probeunit
  70. <span class="keyword">end</span>
  71. <span class="keyword">methods</span>
  72. <span class="keyword">function</span> ch = Channel(scope,channelnumber)
  73. ch.channelnumber = channelnumber;
  74. ch.scope = scope;
  75. <span class="keyword">end</span>
  76. <span class="keyword">function</span> s = get.state(ch)
  77. s = ch.CHAN(<span class="string">'state?'</span>);
  78. <span class="keyword">end</span>
  79. <span class="keyword">function</span> out = get.coupling(ch)
  80. out = ch.CHAN(<span class="string">'coup?'</span>);
  81. <span class="keyword">end</span>
  82. <span class="keyword">function</span> out = get.bandwidth(ch)
  83. out = ch.CHAN(<span class="string">'band?'</span>);
  84. <span class="keyword">end</span>
  85. <span class="keyword">function</span> out = get.offset(ch)
  86. out = ch.CHAN(<span class="string">'offs?'</span>);
  87. <span class="keyword">end</span>
  88. <span class="keyword">function</span> out = get.scale(ch)
  89. out = ch.CHAN(<span class="string">'scal?'</span>);
  90. <span class="keyword">end</span>
  91. <span class="keyword">function</span> out = get.label(ch)
  92. out = ch.CHAN(<span class="string">'lab?'</span>);
  93. <span class="keyword">end</span>
  94. <span class="keyword">function</span> out = get.type(ch)
  95. out = ch.CHAN(<span class="string">'type?'</span>);
  96. <span class="keyword">end</span>
  97. <span class="keyword">function</span> out = get.probeunit(ch)
  98. out = ch.scope.query([<span class="string">'PROB'</span>,num2str(ch.channelnumber),<span class="string">':SET:ATT:UNIT?'</span>]);
  99. <span class="keyword">end</span>
  100. <span class="keyword">function</span> out = get.probe(ch)
  101. out = ch.scope.query([<span class="string">'PROB'</span>,num2str(ch.channelnumber),<span class="string">':SET:ATT:MAN?'</span>]);
  102. <span class="keyword">end</span>
  103. <span class="keyword">function</span> ch = set.state(ch,in)
  104. ch.CHAN(<span class="string">'state'</span>,in);
  105. <span class="keyword">end</span>
  106. <span class="keyword">function</span> ch = set.coupling(ch,in)
  107. ch.CHAN(<span class="string">'coup'</span>,in);
  108. <span class="keyword">end</span>
  109. <span class="keyword">function</span> ch = set.bandwidth(ch,in)
  110. ch.CHAN(<span class="string">'band'</span>,in);
  111. <span class="keyword">end</span>
  112. <span class="keyword">function</span> ch = set.offset(ch,in)
  113. ch.CHAN(<span class="string">'offs'</span>,in);
  114. <span class="keyword">end</span>
  115. <span class="keyword">function</span> ch = set.scale(ch,in)
  116. ch.CHAN(<span class="string">'scal'</span>,in);
  117. <span class="keyword">end</span>
  118. <span class="keyword">function</span> ch = set.label(ch,in)
  119. ch.CHAN(<span class="string">'lab'</span>,in);
  120. <span class="keyword">end</span>
  121. <span class="keyword">function</span> ch = set.type(ch,in)
  122. ch.CHAN(<span class="string">'type'</span>,in);
  123. <span class="keyword">end</span>
  124. <span class="keyword">function</span> out = frequency(ch)
  125. out = str2double(ch.MEAS(<span class="string">'freq'</span>));
  126. <span class="keyword">end</span>
  127. <span class="keyword">function</span> out = peak2peak(ch)
  128. out = str2double(ch.MEAS(<span class="string">'peak'</span>));
  129. <span class="keyword">end</span>
  130. <span class="keyword">function</span> out = period(ch)
  131. out = str2double(ch.MEAS(<span class="string">'per'</span>));
  132. <span class="keyword">end</span>
  133. <span class="keyword">function</span> out = amplitude(ch)
  134. out = str2double(ch.MEAS(<span class="string">'ampl'</span>));
  135. <span class="keyword">end</span>
  136. <span class="keyword">function</span> out = mean(ch)
  137. out = str2double(ch.MEAS(<span class="string">'mean'</span>));
  138. <span class="keyword">end</span>
  139. <span class="keyword">function</span> out = rms(ch)
  140. out = str2double(ch.MEAS(<span class="string">'rms'</span>));
  141. <span class="keyword">end</span>
  142. <span class="keyword">function</span> out = phase(ch)
  143. out = str2double(ch.MEAS(<span class="string">'phas'</span>));
  144. <span class="keyword">end</span>
  145. <span class="keyword">function</span> ch = set.probeunit(ch,unit)
  146. ch.scope.write([<span class="string">'PROB'</span>,num2str(ch.channelnumber),<span class="string">':SET:ATT:UNIT '</span>, unit]);
  147. <span class="keyword">end</span>
  148. <span class="keyword">function</span> ch = set.probe(ch,man)
  149. ch.scope.write([<span class="string">'PROB'</span>,num2str(ch.channelnumber),<span class="string">':SET:ATT:MAN '</span>, man]);
  150. <span class="keyword">end</span>
  151. <span class="keyword">function</span> data = waveform(ch,window)
  152. ch.scope.single;
  153. <span class="keyword">if</span> nargin &lt; 2
  154. window = <span class="string">'DEF'</span>;
  155. <span class="keyword">end</span>
  156. ch.scope.setWaveformSettings(window,<span class="string">'REAL'</span>)
  157. data = ch.getWaveform;
  158. <span class="keyword">end</span>
  159. <span class="keyword">function</span> data = getWaveform(ch)
  160. header = str2num(ch.CHAN(<span class="string">'DATA:HEAD?'</span>));
  161. data.length = header(3);
  162. data.start = header(1);
  163. data.stop = header(2);
  164. data.sampletime = str2double(ch.CHAN(<span class="string">'DATA:XINC?'</span>));
  165. ch.scope.opc;
  166. ch.scope.write_unsafe([<span class="string">'CHAN'</span>,num2str(ch.channelnumber),<span class="string">':DATA?'</span>]);
  167. data.data = ch.scope.readWaveform(data.length);
  168. <span class="keyword">end</span>
  169. <span class="keyword">end</span>
  170. <span class="keyword">methods</span> (Hidden, Access = private)
  171. <span class="keyword">function</span> c = CHAN(ch,string,in)
  172. <span class="keyword">if</span> nargin == 2
  173. <span class="keyword">if</span> strcmp(string(end),<span class="string">'?'</span>)
  174. c = ch.scope.query([<span class="string">'CHAN'</span>,num2str(ch.channelnumber),<span class="string">':'</span>,string]);
  175. <span class="keyword">else</span>
  176. ch.scope.write([<span class="string">'CHAN'</span>,num2str(ch.channelnumber),<span class="string">':'</span>,string]);
  177. <span class="keyword">end</span>
  178. <span class="keyword">else</span>
  179. ch.scope.write([<span class="string">'CHAN'</span>,num2str(ch.channelnumber),<span class="string">':'</span>,string,<span class="string">' '</span>,in]);
  180. <span class="keyword">end</span>
  181. <span class="keyword">end</span>
  182. <span class="keyword">function</span> c = MEAS(ch,string)
  183. c = ch.scope.query([<span class="string">'MEAS'</span>,num2str(ch.channelnumber),<span class="string">':RES:ACT?'</span>,string]);
  184. <span class="keyword">end</span>
  185. <span class="comment">% function c = CHANsend(ch,string,in)</span>
  186. <span class="comment">% c = ['CHAN',num2str(ch.channelnumber),':',string,' ',in];</span>
  187. <span class="comment">% end</span>
  188. <span class="keyword">end</span>
  189. <span class="keyword">end</span>
  190. </pre><pre class="codeoutput error">Not enough input arguments.
  191. Error in Channel (line 24)
  192. ch.channelnumber = channelnumber;
  193. </pre><p class="footer"><br><a href="https://www.mathworks.com/products/matlab/">Published with MATLAB&reg; R2018a</a><br></p></div><!--
  194. ##### SOURCE BEGIN #####
  195. classdef Channel
  196. % CHANNEL is the class for one channel of the oscilloscope. Multiple
  197. % settings for the different channels of the oscilloscope can be changed
  198. % via this class definition
  199. properties (Hidden, Access = private)
  200. scope % Contains the class of the scope that is parent of this channel.
  201. channelnumber % is the number of the channel on the scope.
  202. end
  203. properties (Dependent)
  204. state
  205. coupling
  206. bandwidth
  207. scale
  208. offset
  209. probe
  210. label
  211. type
  212. probeunit
  213. end
  214. methods
  215. function ch = Channel(scope,channelnumber)
  216. ch.channelnumber = channelnumber;
  217. ch.scope = scope;
  218. end
  219. function s = get.state(ch)
  220. s = ch.CHAN('state?');
  221. end
  222. function out = get.coupling(ch)
  223. out = ch.CHAN('coup?');
  224. end
  225. function out = get.bandwidth(ch)
  226. out = ch.CHAN('band?');
  227. end
  228. function out = get.offset(ch)
  229. out = ch.CHAN('offs?');
  230. end
  231. function out = get.scale(ch)
  232. out = ch.CHAN('scal?');
  233. end
  234. function out = get.label(ch)
  235. out = ch.CHAN('lab?');
  236. end
  237. function out = get.type(ch)
  238. out = ch.CHAN('type?');
  239. end
  240. function out = get.probeunit(ch)
  241. out = ch.scope.query(['PROB',num2str(ch.channelnumber),':SET:ATT:UNIT?']);
  242. end
  243. function out = get.probe(ch)
  244. out = ch.scope.query(['PROB',num2str(ch.channelnumber),':SET:ATT:MAN?']);
  245. end
  246. function ch = set.state(ch,in)
  247. ch.CHAN('state',in);
  248. end
  249. function ch = set.coupling(ch,in)
  250. ch.CHAN('coup',in);
  251. end
  252. function ch = set.bandwidth(ch,in)
  253. ch.CHAN('band',in);
  254. end
  255. function ch = set.offset(ch,in)
  256. ch.CHAN('offs',in);
  257. end
  258. function ch = set.scale(ch,in)
  259. ch.CHAN('scal',in);
  260. end
  261. function ch = set.label(ch,in)
  262. ch.CHAN('lab',in);
  263. end
  264. function ch = set.type(ch,in)
  265. ch.CHAN('type',in);
  266. end
  267. function out = frequency(ch)
  268. out = str2double(ch.MEAS('freq'));
  269. end
  270. function out = peak2peak(ch)
  271. out = str2double(ch.MEAS('peak'));
  272. end
  273. function out = period(ch)
  274. out = str2double(ch.MEAS('per'));
  275. end
  276. function out = amplitude(ch)
  277. out = str2double(ch.MEAS('ampl'));
  278. end
  279. function out = mean(ch)
  280. out = str2double(ch.MEAS('mean'));
  281. end
  282. function out = rms(ch)
  283. out = str2double(ch.MEAS('rms'));
  284. end
  285. function out = phase(ch)
  286. out = str2double(ch.MEAS('phas'));
  287. end
  288. function ch = set.probeunit(ch,unit)
  289. ch.scope.write(['PROB',num2str(ch.channelnumber),':SET:ATT:UNIT ', unit]);
  290. end
  291. function ch = set.probe(ch,man)
  292. ch.scope.write(['PROB',num2str(ch.channelnumber),':SET:ATT:MAN ', man]);
  293. end
  294. function data = waveform(ch,window)
  295. ch.scope.single;
  296. if nargin < 2
  297. window = 'DEF';
  298. end
  299. ch.scope.setWaveformSettings(window,'REAL')
  300. data = ch.getWaveform;
  301. end
  302. function data = getWaveform(ch)
  303. header = str2num(ch.CHAN('DATA:HEAD?'));
  304. data.length = header(3);
  305. data.start = header(1);
  306. data.stop = header(2);
  307. data.sampletime = str2double(ch.CHAN('DATA:XINC?'));
  308. ch.scope.opc;
  309. ch.scope.write_unsafe(['CHAN',num2str(ch.channelnumber),':DATA?']);
  310. data.data = ch.scope.readWaveform(data.length);
  311. end
  312. end
  313. methods (Hidden, Access = private)
  314. function c = CHAN(ch,string,in)
  315. if nargin == 2
  316. if strcmp(string(end),'?')
  317. c = ch.scope.query(['CHAN',num2str(ch.channelnumber),':',string]);
  318. else
  319. ch.scope.write(['CHAN',num2str(ch.channelnumber),':',string]);
  320. end
  321. else
  322. ch.scope.write(['CHAN',num2str(ch.channelnumber),':',string,' ',in]);
  323. end
  324. end
  325. function c = MEAS(ch,string)
  326. c = ch.scope.query(['MEAS',num2str(ch.channelnumber),':RES:ACT?',string]);
  327. end
  328. % function c = CHANsend(ch,string,in)
  329. % c = ['CHAN',num2str(ch.channelnumber),':',string,' ',in];
  330. % end
  331. end
  332. end
  333. ##### SOURCE END #####
  334. --></body></html>