1 | function ErrorFlag = setpvonline(TangoNames, NewSP, varargin) |
---|
2 | %SETPVONLINE - Set value to online machine |
---|
3 | % ErrorFlag = setpvonline(ChannelNames, NewSP, DataType); |
---|
4 | % |
---|
5 | % INPUTS |
---|
6 | % 1. TangoNames - Tango attribute names |
---|
7 | % 2. NewSP - Setpoint value |
---|
8 | % Optional |
---|
9 | % 1. DataType - 'double' or 'string' |
---|
10 | % 2. 'Retry' - try several time if tango communication is down |
---|
11 | % |
---|
12 | % OUTPUTS |
---|
13 | % 1. ErrorFlag |
---|
14 | % |
---|
15 | % See also getpvonline |
---|
16 | |
---|
17 | % |
---|
18 | % Written for by Laurent S. Nadolski |
---|
19 | % 29 Sept. 2009 - Add Retry flag |
---|
20 | % ErrorFlag missing, Corrected September 12, 2012 |
---|
21 | |
---|
22 | % TODO group |
---|
23 | |
---|
24 | RetryFlag = 0; % Retry Flag |
---|
25 | RetryTime = 1; % Pause between retries |
---|
26 | RetryNumber = 3; % number of times to try connection |
---|
27 | |
---|
28 | |
---|
29 | for i = length(varargin):-1:1 |
---|
30 | if strcmpi(varargin{i},'Retry') |
---|
31 | RetryFlag = 1; |
---|
32 | varargin(i) = []; |
---|
33 | elseif strcmpi(varargin{i},'NoRetry') |
---|
34 | RetryFlag = 0; |
---|
35 | varargin(i) = []; |
---|
36 | end |
---|
37 | end |
---|
38 | |
---|
39 | if ~exist('TangoNames', 'var') || ~exist('NewSP', 'var') |
---|
40 | error('Must have at least two inputs'); |
---|
41 | end |
---|
42 | |
---|
43 | if length(varargin) > 2 |
---|
44 | if length(varargin) < 2 |
---|
45 | DataType = varargin{1}; |
---|
46 | end |
---|
47 | end |
---|
48 | |
---|
49 | ErrorFlag = 0; |
---|
50 | |
---|
51 | [attribute device] = getattribute(TangoNames); |
---|
52 | |
---|
53 | for k = 1:size(attribute,1) |
---|
54 | tango_write_attribute2(device{k},attribute{k},NewSP(k)); |
---|
55 | ErrorFlag = tango_error; |
---|
56 | %% if error retry several time if RetryFlag is on |
---|
57 | if (ErrorFlag == -1) && RetryFlag |
---|
58 | for ik=1:RetryNumber, |
---|
59 | fprintf('Try %2d Communication issue, pause %f s\n',ik, RetryTime); |
---|
60 | pause(RetryTime); |
---|
61 | tango_write_attribute2(device{k},attribute{k},NewSP(k)); |
---|
62 | ErrorFlag = tango_error; % missing, Corrected September 12, 2011 |
---|
63 | if ErrorFlag ~=-1 |
---|
64 | break; |
---|
65 | end |
---|
66 | end |
---|
67 | end |
---|
68 | end |
---|