source: MML/trunk/mml/channel2handle.m @ 4

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

Initial import--MML version from SOLEIL@2013

File size: 3.0 KB
Line 
1function [Handle, ErrorFlag] = channel2handle(ChannelNames, FamilyList)
2%CHANNEL2HANDLE - Returns the MCA handle (obsolete)
3%  [Handle, ErrorFlag] = channel2handle(ChannelNames, Family)
4%
5%  INPUTS
6%  1. ChannelNames - List of channel names (string, matrix, cell array)
7%  2. Family - Family Name
8%              Data Structure
9%              Accelerator Object
10%
11%  OUTPUTS
12%  1. Handle - Handles corresponding to the channel name
13%              0 if channel name cannot be found
14%  2. ErrorFlag - Number of errors found
15%
16%  Written by Greg Portmann
17
18
19
20if nargin < 1
21    error('Must have 1 input (''ChannelNames'')');
22end
23if nargin < 2
24    FamilyList = [];
25end
26
27% Cell inputs
28if iscell(ChannelNames)
29    if iscell(FamilyList)
30        if length(FamilyList) ~= length(CommonNames)
31            error('Family and CommonNames must be the same size cell arrays.');
32        end
33    end
34   
35    for i = 1:length(ChannelNames)
36        if iscell(FamilyList)
37            [Handle{i}, ErrorFlag{i}] = channel2handle(ChannelNames{i}, FamilyList{i});
38        else
39            [Handle{i}, ErrorFlag{i}] = channel2handle(ChannelNames{i}, FamilyList);
40        end
41        return   
42    end
43end
44% End cell input
45
46
47ErrorFlag = 0;
48Handle = [];
49if isempty(FamilyList)
50    FamilyList = getfamilylist;
51elseif isstruct(FamilyList)
52    % Structures are ok
53    FamilyList = FamilyList.FamilyName;
54end
55
56for i = 1:size(ChannelNames,1)
57    Found = 0;
58    for l = 1:size(FamilyList, 1)
59       
60        FamilyTest = deblank(FamilyList(l,:));
61       
62        Fields = fieldnames(getfamilydata(FamilyTest));
63        for m = 1:length(Fields)
64            ChannelNamesTotal = getfamilydata(FamilyTest, Fields{m}, 'ChannelNames');
65           
66            if ~isempty(ChannelNamesTotal)
67                Name = deblank(ChannelNames(i,:));
68                [name,j,k] = intersect(Name, ChannelNamesTotal, 'rows');
69               
70                if isempty(name) & length(Name)~=size(ChannelNamesTotal)
71                    Name = [repmat(' ',size(Name,1),size(ChannelNamesTotal,2)-size(Name,2)) Name];
72                    [name,j,k] = intersect(Name, ChannelNamesTotal, 'rows');
73                end
74               
75                if isempty(name)
76                    Name = deblank(ChannelNames(i,:));
77                    if length(Name)~=size(ChannelNamesTotal)
78                        Name = [Name repmat(' ',size(Name,1),size(ChannelNamesTotal,2)-size(Name,2))];
79                        [name,j,k] = intersect(Name, ChannelNamesTotal, 'rows');
80                    end
81                end
82               
83                if ~isempty(k)
84                    Found = 1;
85                    break
86                end
87            end
88            if Found
89                break
90            end
91        end
92        if Found
93            break
94        end
95    end
96    if Found
97        HandleTotal = getfamilydata(FamilyTest, Fields{m}, 'Handles');
98        h = HandleTotal(k,:);
99    else
100        h = 0;
101        ErrorFlag = ErrorFlag + 1;
102    end
103   
104    Handle = [Handle; h];
105end
106% if all(~Handle)
107%     Handle = [];
108% end
109% End all family search
110
111
112
Note: See TracBrowser for help on using the repository browser.