source: MML/trunk/mml/doc_html/mml/family2channel.html @ 4

Last change on this file since 4 was 4, checked in by zhangj, 10 years ago

Initial import--MML version from SOLEIL@2013

File size: 15.4 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2                "http://www.w3.org/TR/REC-html40/loose.dtd">
3<html>
4<head>
5  <title>Description of family2channel</title>
6  <meta name="keywords" content="family2channel">
7  <meta name="description" content="FAMILY2CHANNEL - Converts the family name to a channel name">
8  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
9  <meta name="generator" content="m2html &copy; 2003 Guillaume Flandin">
10  <meta name="robots" content="index, follow">
11  <link type="text/css" rel="stylesheet" href="../m2html.css">
12</head>
13<body>
14<a name="_top"></a>
15<div><a href="../index.html">Home</a> &gt;  <a href="index.html">mml</a> &gt; family2channel.m</div>
16
17<!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png">&nbsp;Master index</a></td>
18<td align="right"><a href="index.html">Index for mml&nbsp;<img alt=">" border="0" src="../right.png"></a></td></tr></table>-->
19
20<h1>family2channel
21</h1>
22
23<h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
24<div class="box"><strong>FAMILY2CHANNEL - Converts the family name to a channel name</strong></div>
25
26<h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
27<div class="box"><strong>function [ChannelNames, ErrorFlag] = family2channel(varargin); </strong></div>
28
29<h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
30<div class="fragment"><pre class="comment">FAMILY2CHANNEL - Converts the family name to a channel name
31  ChannelName = family2channel(Family, Field, DeviceList)
32  ChannelName = family2channel(Family, DeviceList)
33
34  INPUTS
35  1. Family - Family Name
36              Data Structure
37              Accelerator Object
38              or Cell Array of Families
39  2. Field = Accelerator Object field name ('Monitor', 'Setpoint', etc) {Default: 'Monitor'}
40  3. DeviceList ([Sector Device #] or [element #]) {Default: whole family}
41
42  OUTPUTS
43  1. ChannelName - Channel name corresponding to the Family, Field, and DeviceList
44
45  Written by Greg Portmann</pre></div>
46
47<!-- crossreference -->
48<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
49This function calls:
50<ul style="list-style-image:url(../matlabicon.gif)">
51<li><a href="common2dev.html" class="code" title="function [DeviceList, FamilyName, ErrorFlag] = common2dev(CommonNames, FamilyList)">common2dev</a>    COMMON2DEV - Converts a common name to a device list</li><li><a href="family2channel.html" class="code" title="function [ChannelNames, ErrorFlag] = family2channel(varargin);">family2channel</a>       FAMILY2CHANNEL - Converts the family name to a channel name</li><li><a href="family2dev.html" class="code" title="function DeviceList = family2dev(Family, varargin);">family2dev</a>   FAMILY2DEV - Return the device list for a family</li><li><a href="getfamilydata.html" class="code" title="function [Data, ErrorFlag] = getfamilydata(Family, Field1, Field2, DeviceList)">getfamilydata</a>     GETFAMILYDATA - Gets data associated with the accelerator control</li></ul>
52This function is called by:
53<ul style="list-style-image:url(../matlabicon.gif)">
54<li><a href="family2channel.html" class="code" title="function [ChannelNames, ErrorFlag] = family2channel(varargin);">family2channel</a>        FAMILY2CHANNEL - Converts the family name to a channel name</li><li><a href="family2dev.html" class="code" title="function DeviceList = family2dev(Family, varargin);">family2dev</a>   FAMILY2DEV - Return the device list for a family</li><li><a href="family2handle.html" class="code" title="function [Handles, ErrorFlag] = family2handle(Family, Field, DeviceList);">family2handle</a>  [Handles, ErrorFlag] = family2handle(Family, Field, DeviceList)</li></ul>
55<!-- crossreference -->
56
57
58<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
59<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function [ChannelNames, ErrorFlag] = family2channel(varargin);</a>
600002 <span class="comment">%FAMILY2CHANNEL - Converts the family name to a channel name</span>
610003 <span class="comment">%  ChannelName = family2channel(Family, Field, DeviceList)</span>
620004 <span class="comment">%  ChannelName = family2channel(Family, DeviceList)</span>
630005 <span class="comment">%</span>
640006 <span class="comment">%  INPUTS</span>
650007 <span class="comment">%  1. Family - Family Name</span>
660008 <span class="comment">%              Data Structure</span>
670009 <span class="comment">%              Accelerator Object</span>
680010 <span class="comment">%              or Cell Array of Families</span>
690011 <span class="comment">%  2. Field = Accelerator Object field name ('Monitor', 'Setpoint', etc) {Default: 'Monitor'}</span>
700012 <span class="comment">%  3. DeviceList ([Sector Device #] or [element #]) {Default: whole family}</span>
710013 <span class="comment">%</span>
720014 <span class="comment">%  OUTPUTS</span>
730015 <span class="comment">%  1. ChannelName - Channel name corresponding to the Family, Field, and DeviceList</span>
740016 <span class="comment">%</span>
750017 <span class="comment">%  Written by Greg Portmann</span>
760018
770019
780020 <span class="keyword">if</span> nargin == 0
790021     error(<span class="string">'Must have at least one input (''Family'')!'</span>);
800022 <span class="keyword">end</span>
810023
820024
830025 <span class="comment">%%%%%%%%%%%%%%%%%%%%%</span>
840026 <span class="comment">% Cell Array Inputs %</span>
850027 <span class="comment">%%%%%%%%%%%%%%%%%%%%%</span>
860028 <span class="keyword">if</span> iscell(varargin{1})
870029     <span class="keyword">if</span> length(varargin) &gt;= 3 &amp;&amp; iscell(varargin{3})
880030         <span class="keyword">if</span> length(varargin{1}) ~= length(varargin{3})
890031             error(<span class="string">'Family and DeviceList must be the same size cell arrays.'</span>);
900032         <span class="keyword">end</span>
910033     <span class="keyword">end</span>
920034     <span class="keyword">if</span> length(varargin) &gt;= 2 &amp;&amp; iscell(varargin{2})
930035         <span class="keyword">if</span> length(varargin{1}) ~= length(varargin{2})
940036             error(<span class="string">'If Field is a cell array, then must be the same size as Family.'</span>);
950037         <span class="keyword">end</span>
960038     <span class="keyword">end</span>
970039     
980040     
990041     ErrorFlag = 0;
1000042     <span class="keyword">for</span> i = 1:length(varargin{1})
1010043         <span class="keyword">if</span> length(varargin) == 1
1020044             [ChannelNames{i}, ErrorTmp] = <a href="family2channel.html" class="code" title="function [ChannelNames, ErrorFlag] = family2channel(varargin);">family2channel</a>(varargin{1}{i});
1030045         <span class="keyword">elseif</span> length(varargin) == 2
1040046             <span class="keyword">if</span> iscell(varargin{2})
1050047                 [ChannelNames{i}, ErrorTmp] = <a href="family2channel.html" class="code" title="function [ChannelNames, ErrorFlag] = family2channel(varargin);">family2channel</a>(varargin{1}{i}, varargin{2}{i});
1060048             <span class="keyword">else</span>
1070049                 [ChannelNames{i}, ErrorTmp] = <a href="family2channel.html" class="code" title="function [ChannelNames, ErrorFlag] = family2channel(varargin);">family2channel</a>(varargin{1}{i}, varargin{2});
1080050             <span class="keyword">end</span>
1090051         <span class="keyword">else</span>           
1100052             <span class="keyword">if</span> iscell(varargin{2})
1110053                 <span class="keyword">if</span> iscell(varargin{3})
1120054                     [ChannelNames{i}, ErrorTmp] = <a href="family2channel.html" class="code" title="function [ChannelNames, ErrorFlag] = family2channel(varargin);">family2channel</a>(varargin{1}{i}, varargin{2}{i}, varargin{3}{i});
1130055                 <span class="keyword">else</span>
1140056                     [ChannelNames{i}, ErrorTmp] = <a href="family2channel.html" class="code" title="function [ChannelNames, ErrorFlag] = family2channel(varargin);">family2channel</a>(varargin{1}{i}, varargin{2}{i}, varargin{3});
1150057                 <span class="keyword">end</span>
1160058             <span class="keyword">else</span>
1170059                 <span class="keyword">if</span> iscell(varargin{3})
1180060                     [ChannelNames{i}, ErrorTmp] = <a href="family2channel.html" class="code" title="function [ChannelNames, ErrorFlag] = family2channel(varargin);">family2channel</a>(varargin{1}{i}, varargin{2}, varargin{3}{i});
1190061                 <span class="keyword">else</span>
1200062                     [ChannelNames{i}, ErrorTmp] = <a href="family2channel.html" class="code" title="function [ChannelNames, ErrorFlag] = family2channel(varargin);">family2channel</a>(varargin{1}{i}, varargin{2}, varargin{3});
1210063                 <span class="keyword">end</span>
1220064             <span class="keyword">end</span>
1230065         <span class="keyword">end</span>
1240066         ErrorFlag = ErrorFlag | ErrorTmp;
1250067     <span class="keyword">end</span>
1260068     <span class="keyword">return</span>   
1270069 <span class="keyword">end</span>
1280070
1290071
1300072
1310073 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
1320074 <span class="comment">% Family or data structure inputs beyond this point %</span>
1330075 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
1340076 <span class="keyword">if</span> isstruct(varargin{1})
1350077     <span class="keyword">if</span> isfield(varargin{1},<span class="string">'FamilyName'</span>) &amp; isfield(varargin{1},<span class="string">'Field'</span>)
1360078         <span class="comment">% Data structure inputs</span>
1370079         Family = varargin{1}.FamilyName;
1380080
1390081         Field = varargin{1}.Field;
1400082         <span class="keyword">if</span> length(varargin) &gt;= 2
1410083             <span class="keyword">if</span> ischar(varargin{2})
1420084                 Field = varargin{2};
1430085                 varargin(2) = [];
1440086             <span class="keyword">end</span>
1450087         <span class="keyword">end</span>
1460088         <span class="keyword">if</span> length(varargin) &gt;= 2
1470089             DeviceList = varargin{2};
1480090         <span class="keyword">else</span>
1490091             DeviceList = varargin{1}.DeviceList;
1500092         <span class="keyword">end</span>
1510093     <span class="keyword">else</span>
1520094         <span class="comment">% AO input</span>
1530095         Field = <span class="string">''</span>;
1540096         <span class="keyword">if</span> length(varargin) &gt;= 2
1550097             <span class="keyword">if</span> ischar(varargin{2})
1560098                 Field = varargin{2};
1570099                 varargin(2) = [];
1580100             <span class="keyword">end</span>
1590101         <span class="keyword">end</span>
1600102         <span class="keyword">if</span> length(varargin) &gt;= 2
1610103             DeviceList = varargin{2};
1620104         <span class="keyword">else</span>
1630105             DeviceList = varargin{1}.DeviceList;
1640106         <span class="keyword">end</span>
1650107         
1660108         <span class="keyword">if</span> isempty(Field)
1670109             Field = <span class="string">'Monitor'</span>;
1680110         <span class="keyword">end</span>
1690111         <span class="keyword">if</span> isempty(DeviceList)
1700112             DeviceList = varargin{1}.DeviceList;
1710113         <span class="keyword">end</span>
1720114         <span class="keyword">if</span> isempty(DeviceList)
1730115             DeviceList = <a href="family2dev.html" class="code" title="function DeviceList = family2dev(Family, varargin);">family2dev</a>(Family);
1740116         <span class="keyword">end</span>
1750117
1760118         <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
1770119         <span class="comment">% CommonName Input:  Convert common names to a varargin{3} %</span>
1780120         <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
1790121         <span class="keyword">if</span> isstr(DeviceList)
1800122             DeviceList = <a href="common2dev.html" class="code" title="function [DeviceList, FamilyName, ErrorFlag] = common2dev(CommonNames, FamilyList)">common2dev</a>(DeviceList, Family);
1810123             <span class="keyword">if</span> isempty(DeviceList)
1820124                 error(<span class="string">'DeviceList was a string but common names could not be found.'</span>);
1830125             <span class="keyword">end</span>
1840126         <span class="keyword">end</span>
1850127
1860128         [i,iNotFound] = findrowindex(DeviceList, varargin{1}.DeviceList);
1870129         <span class="keyword">if</span> ~isempty(iNotFound)
1880130             error(<span class="string">'Device at found in the input structure'</span>);
1890131         <span class="keyword">end</span>
1900132         ChannelNames = varargin{1}.(Field).ChannelNames(i,:);
1910133         ErrorFlag = 0;
1920134
1930135         <span class="keyword">return</span>;
1940136     <span class="keyword">end</span>
1950137
1960138 <span class="keyword">else</span>
1970139     
1980140     <span class="comment">% Family input</span>
1990141     Family = varargin{1};
2000142     
2010143     Field = <span class="string">''</span>;
2020144     <span class="keyword">if</span> length(varargin) &gt;= 2
2030145         <span class="keyword">if</span> ischar(varargin{2})
2040146             Field = varargin{2};
2050147             varargin(2) = [];
2060148         <span class="keyword">end</span>
2070149     <span class="keyword">end</span>
2080150     <span class="keyword">if</span> length(varargin) &gt;= 2
2090151         DeviceList = varargin{2};
2100152     <span class="keyword">else</span>
2110153         DeviceList = [];
2120154     <span class="keyword">end</span>
2130155     
2140156 <span class="keyword">end</span>
2150157
2160158 <span class="keyword">if</span> isempty(Field)
2170159     Field = <span class="string">'Monitor'</span>;
2180160 <span class="keyword">end</span>
2190161 <span class="keyword">if</span> isempty(DeviceList)
2200162     DeviceList = <a href="family2dev.html" class="code" title="function DeviceList = family2dev(Family, varargin);">family2dev</a>(Family);
2210163 <span class="keyword">end</span>
2220164
2230165
2240166 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
2250167 <span class="comment">% CommonName Input:  Convert common names to a varargin{3} %</span>
2260168 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
2270169 <span class="keyword">if</span> isstr(DeviceList)
2280170     DeviceList = <a href="common2dev.html" class="code" title="function [DeviceList, FamilyName, ErrorFlag] = common2dev(CommonNames, FamilyList)">common2dev</a>(DeviceList, Family);
2290171     <span class="keyword">if</span> isempty(DeviceList)
2300172         error(<span class="string">'DeviceList was a string but common names could not be found.'</span>);
2310173     <span class="keyword">end</span>
2320174 <span class="keyword">end</span>
2330175
2340176
2350177 <span class="comment">%%%%%%%%%%%%</span>
2360178 <span class="comment">% Get data %</span>
2370179 <span class="comment">%%%%%%%%%%%%</span>
2380180 [ChannelNames, ErrorFlag] = <a href="getfamilydata.html" class="code" title="function [Data, ErrorFlag] = getfamilydata(Family, Field1, Field2, DeviceList)">getfamilydata</a>(Family, Field, <span class="string">'ChannelNames'</span>, DeviceList);</pre></div>
239<hr><address>Generated on Mon 21-May-2007 15:29:18 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
240</body>
241</html>
Note: See TracBrowser for help on using the repository browser.