source: MML/trunk/mml/monitorchannels.m @ 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: 3.5 KB
Line 
1function [Out1, Out2, Out3, Out4, Out5, Out6, Out7, Out8, Out9, Out10] = monitorchannels(In1, In2, In3, In4, In5, In6, In7, In8, In9, In10);
2%MONITORCHANNELS - Monitor a groups of families or channel names
3%  [Out1, Out2, ... , t] = monitor(FuncStr1, FuncStr2, ... , t);
4%   
5%  INPUTS
6%  1. FuncStr1, FuncStr2, ... - functions to be evaluated (max. 9) (string)
7%                              (must return a scalar or column vector)
8%  2. t - time (row vector)
9%
10%  OUTPUTS
11%  1. tout (row vector) - time at the start of each set of measurements,
12%                         tout will be the last output matrix
13%
14%  NOTES
15%  1. One should compare tout to t, to varify timing accuracy.
16%  2. This function can also be done by getpv using cell arrays.
17%
18%  EXAMPLES
19%  1. [BPMx, BPMy, tout]     = Monitor('getx', 'gety', t);
20%  2. [VCMam, Current, tout] = Monitor('getam(''VCM'')', 'getdcct', t);
21%
22%  Written by Greg Portmann
23
24
25if nargin > 10
26    error('10 inputs maximum');
27end
28
29FuncNum = nargin - 1;
30eval(['t = In',num2str(nargin),';']);
31
32if nargout < nargin
33    disp('WARNING:  Not enough outputs arguments!');
34end
35
36% Create data arrays
37if nargout >=1 & FuncNum >= 1
38    a = eval(In1);
39    Out1 = zeros(size(a,1), size(t,2));
40end
41if nargout >=2 & FuncNum >= 2
42    a = eval(In2);
43    Out2 = zeros(size(a,1), size(t,2));
44end
45if nargout >=3 & FuncNum >= 3
46    a = eval(In3);
47    Out3 = zeros(size(a,1), size(t,2));
48end
49if nargout >=4 & FuncNum >= 4
50    a = eval(In4);
51    Out4 = zeros(size(a,1), size(t,2));
52end
53if nargout >=5 & FuncNum >= 5
54    a = eval(In5);
55    Out5 = zeros(size(a,1), size(t,2));
56end
57if nargout >=6 & FuncNum >= 6
58    a = eval(In6);
59    Out6 = zeros(size(a,1), size(t,2));
60end
61if nargout >=7 & FuncNum >= 7
62    a = eval(In7);
63    Out7 = zeros(size(a,1), size(t,2));
64end
65if nargout >=8 & FuncNum >= 8
66    a = eval(In8);
67    Out8 = zeros(size(a,1), size(t,2));
68end
69if nargout >=9 & FuncNum >= 9
70    a = eval(In9);
71    Out9 = zeros(size(a,1), size(t,2));
72end
73
74% Read once to setup channels (for SCA)
75i=1;
76if nargout >=1 & FuncNum >= 1
77    Out1(:,i) = [eval(In1)];
78end
79if nargout >=2 & FuncNum >= 2
80    Out2(:,i) = [eval(In2)];
81end
82if nargout >=3 & FuncNum >= 3
83    Out3(:,i) = [eval(In3)];
84end
85if nargout >=4 & FuncNum >= 4
86    Out4(:,i) = [eval(In4)];
87end
88if nargout >=5 & FuncNum >= 5
89    Out5(:,i) = [eval(In5)];
90end
91if nargout >=6 & FuncNum >= 6
92    Out6(:,i) = [eval(In6)];
93end
94if nargout >=7 & FuncNum >= 7
95    Out7(:,i) = [eval(In7)];
96end
97if nargout >=8 & FuncNum >= 8
98    Out8(:,i) = [eval(In8)];
99end
100if nargout >=9 & FuncNum >= 9
101    Out9(:,i) = [eval(In9)];
102end
103
104
105% Get data
106%t0 = clock;
107t0 = gettime;
108for i = 1:size(t,2);
109    %tout(1,i) = etime(clock,t0);
110    while gettime-t0 < t(i)-.002
111    end
112   
113    tout(1,i) = gettime-t0;
114   
115    if nargout >=1 & FuncNum >= 1
116        Out1(:,i) = [eval(In1)];
117    end
118    if nargout >=2 & FuncNum >= 2
119        Out2(:,i) = [eval(In2)];
120    end
121    if nargout >=3 & FuncNum >= 3
122        Out3(:,i) = [eval(In3)];
123    end
124    if nargout >=4 & FuncNum >= 4
125        Out4(:,i) = [eval(In4)];
126    end
127    if nargout >=5 & FuncNum >= 5
128        Out5(:,i) = [eval(In5)];
129    end
130    if nargout >=6 & FuncNum >= 6
131        Out6(:,i) = [eval(In6)];
132    end
133    if nargout >=7 & FuncNum >= 7
134        Out7(:,i) = [eval(In7)];
135    end
136    if nargout >=8 & FuncNum >= 8
137        Out8(:,i) = [eval(In8)];
138    end
139    if nargout >=9 & FuncNum >= 9
140        Out9(:,i) = [eval(In9)];
141    end
142end
143
144% Output number for tout
145if nargout > FuncNum
146    OutStr = ['Out',num2str(FuncNum+1)];
147    eval([OutStr,'=tout;']);
148end
Note: See TracBrowser for help on using the repository browser.