source: MML/trunk/machine/SOLEIL/StorageRing/bpm/getx.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: 2.4 KB
Line 
1function [AM, tout, DataTime, ErrorFlag] = getx(varargin)
2%GETX - Returns the horizontal orbit
3%  [AM, tout, DataTime]  = getx(DeviceList, t, FreshDataFlag, TimeOutPeriod)
4%         or
5%  [AM, tout, DataTime]  = getx(DataStructure, t, FreshDataFlag, TimeOutPeriod)
6%
7%  INPUTS
8%  1. DeviceList or DataStructure  (see help getpv)
9%  2. t  (see help getpv)
10%  3. FreshDataFlag  (see help getpv)
11%  4. TimeOutPeriod  (see help getpv)
12%  5. 'Struct' will return a data structure
13%     'Numeric' will return a vector output {default}
14%  6. 'Archive' will save a BPM data structure to \<DataRoot>\BPM\
15%      with filename BPMy<Date><Time>.mat
16%
17%  OUTPUTS
18%  1. AM = orbit vector or data structure
19%  2. tout  (see help getpv)
20%  3. DataTime
21%  4. ErrorFlag  (see help getpv)
22%
23%  NOTE
24%  1. 'Struct', 'Numeric', and 'Archive' are not case sensitive
25%  2. All inputs are optional
26%
27%  EXAMPLE
28%  1. <a href="matlab: plot(getspos(gethbpmfamily),getx); xlabel('BPM Position [meters]'); ylabel('Horizontal Orbit');">plot(getx);</a>
29%
30%  See also gety, getbpm, getam, getpv
31%
32%  Written by Greg Portmann
33
34
35%  Family = gethbpmfamily;
36Family = 'BPMx'; % faster
37
38
39% Get input flags
40StructOutputFlag = 0;
41ArchiveFlag = 0;
42for i = length(varargin):-1:1
43    if isstr(varargin{i})
44        if strcmpi(varargin{i},'struct')
45            StructOutputFlag = 1;
46            %varargin(i) = [];
47        elseif strcmpi(varargin{i},'numeric')
48            StructOutputFlag = 0;
49            %varargin(i) = [];
50        elseif strcmpi(varargin{i},'archive')
51            ArchiveFlag = 1;
52            varargin(i) = [];
53        end
54    end
55end
56
57
58% Get data
59if isempty(varargin)
60    [AM, tout, DataTime, ErrorFlag] = getpv(Family, 'Monitor');
61elseif isstruct(varargin{1})
62    [AM, tout, DataTime, ErrorFlag] = getpv(varargin{:});
63else
64    [AM, tout, DataTime, ErrorFlag] = getpv(Family, 'Monitor', varargin{:});
65end
66
67if StructOutputFlag
68    % Structure output
69    AM.CreatedBy = 'getx';
70    AM.DataDescriptor = 'Horizontal Orbit';   
71end
72
73
74% Archive data structure
75if ArchiveFlag
76    DirStart = pwd;
77    FileName = appendtimestamp([getfamilydata('Default', 'BPMArchiveFile') 'x'], clock);
78    DirectoryName = getfamilydata('Directory','BPMData');
79    if isempty(DirectoryName)
80        DirectoryName = [getfamilydata('Directory','DataRoot') 'BPM\'];
81    end
82    [DirectoryName, ErrorFlag] = gotodirectory(DirectoryName);
83    BPMxData = getx('struct');
84    save(FileName, 'BPMxData');
85    cd(DirStart);
86end
87
Note: See TracBrowser for help on using the repository browser.