1 package de.desy.acop.demo;
2
3 import java.util.Map;
4
5 import com.cosylab.events.SetEvent;
6 import com.cosylab.events.SetListener;
7
8 import de.desy.acop.displayers.AcopSlider;
9 import de.desy.acop.transport.ConnectionFailed;
10 import de.desy.acop.transport.ConnectionParameters;
11 import de.desy.acop.transport.adapters.DataSourceUtilities;
12 import de.desy.tine.client.TLink;
13 import de.desy.tine.client.TLinkCallback;
14 import de.desy.tine.dataUtils.TDataType;
15 import de.desy.tine.definitions.TAccess;
16 import de.desy.tine.definitions.TMode;
17
18
19
20
21
22
23
24
25
26 public class DisplayerFeedDemo {
27
28 private TLink asyncLink;
29 private TLinkCallback asyncCallback;
30 private AcopSlider slider;
31 private double[] data;
32
33 public DisplayerFeedDemo() {
34 slider = new AcopSlider();
35
36
37 try {
38 Map<String,Object> characteristics = DataSourceUtilities.getCharacteristics(new ConnectionParameters("TINE/LINAC2/L2.MODUL/#0/sps_rec"));
39 slider.setCharacteristics(characteristics);
40 } catch (ConnectionFailed e1) {
41 e1.printStackTrace();
42 }
43
44
45 data = new double[1];
46
47 short[] dataIn = new short[]{50,4,9};
48 TLink link = new TLink("/LINAC2/L2.MODUL/#0", "sps_rec", new TDataType(data), new TDataType(dataIn), TAccess.CA_READ);
49
50 TLinkCallback cb = new TLinkCallback(){
51 public void callback(TLink link) {
52 if (link.getLinkStatus() == 0) {
53 slider.setReadback(data[0]);
54 }
55 }
56 };
57 int handle = link.attach(TMode.CM_POLL,cb,1000);
58 if (handle < 0) {
59 System.err.println("Error");
60 }
61
62
63
64
65 slider.addSetListener(new SetListener(){
66 public void setPerformed(SetEvent e) {
67 double value = e.getDoubleValue();
68 updateLink(value);
69 }
70 });
71 }
72
73 private void updateLink(double value) {
74
75 if (asyncLink == null) {
76
77
78
79
80
81 short[] dataIn = new short[]{50,4,9};
82 asyncLink = new TLink("/LINAC2/L2.MODUL/#0", "sps_rec", new TDataType(), new TDataType(dataIn), TAccess.CA_WRITE);
83 asyncCallback = new TLinkCallback(){
84 public void callback(TLink link) {
85 if (link.getLinkStatus() == 0) {
86 System.err.println("Error!");
87 }
88 }
89 };
90 }
91 asyncLink.attach(TMode.CM_SINGLE, asyncCallback, 1000);
92 }
93 }