diff --git a/config/devices.properties b/config/devices.properties
index e3ba7ee..2d8159e 100644
--- a/config/devices.properties
+++ b/config/devices.properties
@@ -4,7 +4,18 @@ pol_mode=ch.psi.pshell.epics.DiscretePositioner|X11MA-ID2:MODE|||true
pol_angle=ch.psi.pshell.epics.ChannelDouble|X11MA-ID2:ALPHA|||true
pol_offset=ch.psi.pshell.epics.ChannelDouble|X11MA-ID2:ENERGY-OFFS|||true
pol_done=ch.psi.pshell.epics.ChannelString|X11MA-ID2:DONE|Read||true
-energy=ch.psi.pshell.epics.ChannelDouble|X11PHS-E:GO.A|||
+id1_mode=ch.psi.pshell.epics.DiscretePositioner|X11MA-ID1:MODE|||true
+id1_alpha=ch.psi.pshell.epics.ChannelDouble|X11MA-ID1:ALPHA|||true
+id1_offset=ch.psi.pshell.epics.ChannelDouble|X11MA-ID1:ENERGY-OFFS|||true
+id1_harmonic=ch.psi.pshell.epics.ChannelDouble|X11MA-ID1:HARMONIC|||true
+id1_done=ch.psi.pshell.epics.ChannelString|X11MA-ID1:DONE|Read||true
+id2_mode=ch.psi.pshell.epics.DiscretePositioner|X11MA-ID2:MODE|||true
+id2_alpha=ch.psi.pshell.epics.ChannelDouble|X11MA-ID2:ALPHA|||true
+id2_offset=ch.psi.pshell.epics.ChannelDouble|X11MA-ID2:ENERGY-OFFS|||true
+id2_harmonic=ch.psi.pshell.epics.ChannelDouble|X11MA-ID2:HARMONIC|||true
+id2_done=ch.psi.pshell.epics.ChannelString|X11MA-ID2:DONE|Read||true
+energy=ch.psi.pshell.epics.ChannelDouble|X11PHS-E:GO.A|||true
+energy_opt=ch.psi.pshell.epics.ChannelString|X11PHS-E:OPT|||true
id_error=ch.psi.pshell.epics.ChannelInteger|X11MA-ID2-PLC:ERROR|||true
beam_status=ch.psi.pshell.epics.DiscretePositioner|ACOAU-ACCU:OP-MODE|Read||true
edata=ch.psi.pshell.epics.ChannelDoubleArray|EDATA 3|Read||
diff --git a/config/settings.properties b/config/settings.properties
index ca1b0c3..bcb5952 100644
--- a/config/settings.properties
+++ b/config/settings.properties
@@ -1,16 +1,16 @@
-#Tue Sep 22 10:55:47 CEST 2020
+#Tue Sep 29 10:36:31 CEST 2020
HARMONIC_ID_1=1
-ENERGY=720.3
+ENERGY=639.2
OUTLIERS_THRESHOLD=1000000000
-POL_ID_1=Lin_Ver
+POL_ID_1=Circ_Plus
NORM_FILE=/sls/X11MA/data/X11MA/Data1/public/PEEM/2020_09/i1904_1_0.tif
AUTO_SWITCH_VALVE=true
DRY_RUN=false
-ALPHA_ID_2=0.0
-ALPHA_ID_1=0.0
-POL_ID_2=Lin_Hor
-OFFSET_ID_1=-0.2
-ID=ID1_ID2
-OFFSET_ID_2=-1.3
+ALPHA_ID_2=45.0
+ALPHA_ID_1=15.0
+POL_ID_2=Lin_Ver
+OFFSET_ID_1=-1.5
+ID=ID2
+OFFSET_ID_2=-1.5
HARMONIC_ID_2=1
FdaBrowser=true
diff --git a/config/variables.properties b/config/variables.properties
index 93eb476..6ff24f0 100644
--- a/config/variables.properties
+++ b/config/variables.properties
@@ -1,2 +1,2 @@
-#Tue Sep 22 11:22:50 CEST 2020
-FileSequentialNumber=2124
+#Tue Sep 29 04:32:04 CEST 2020
+FileSequentialNumber=2333
diff --git a/devices/image.properties b/devices/image.properties
index 3d1f437..17e7b65 100644
--- a/devices/image.properties
+++ b/devices/image.properties
@@ -1,4 +1,4 @@
-#Tue Sep 22 11:17:20 CEST 2020
+#Fri Sep 25 21:06:12 CEST 2020
spatialCalOffsetY=NaN
spatialCalOffsetX=NaN
colormapLogarithmic=false
@@ -6,7 +6,7 @@ scale=1.0
grayscale=false
spatialCalScaleX=NaN
spatialCalScaleY=NaN
-colormapMax=300.0
+colormapMax=0.5
rescaleOffset=0.0
roiWidth=-1
colormap=Grayscale
diff --git a/plugins/Eiger.form b/plugins/Eiger.form
index e0808fa..71fc3ee 100644
--- a/plugins/Eiger.form
+++ b/plugins/Eiger.form
@@ -22,7 +22,7 @@
-
+
@@ -229,60 +229,69 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
+
+
+
-
+
-
+
+
+
-
+
@@ -305,6 +314,9 @@
+
+
+
@@ -331,10 +343,26 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -344,24 +372,28 @@
-
-
-
+
+
+
+
-
-
-
+
+
+
+
-
-
-
+
+
+
+
-
-
-
+
+
+
+
@@ -371,7 +403,7 @@
-
+
@@ -385,6 +417,9 @@
+
+
+
@@ -428,6 +463,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -457,32 +512,43 @@
+
+
+
+
+
+
+
-
+
-
-
-
+
+
+
+
-
-
-
+
+
+
+
-
-
-
+
+
+
+
-
-
-
+
+
+
+
@@ -492,7 +558,7 @@
-
+
@@ -506,6 +572,9 @@
+
+
+
@@ -549,6 +618,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -562,7 +651,7 @@
-
+
@@ -580,6 +669,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -777,22 +876,22 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
+
+
+
+
+
+
@@ -808,9 +907,11 @@
-
-
-
+
+
+
+
+
@@ -894,6 +995,14 @@
+
+
+
+
+
+
+
+
@@ -929,7 +1038,7 @@
-
+
@@ -961,12 +1070,23 @@
-
-
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -974,10 +1094,12 @@
+
+
-
+
-
+
@@ -987,9 +1109,7 @@
-
-
-
+
@@ -1008,8 +1128,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1028,9 +1160,8 @@
-
+
-
@@ -1039,7 +1170,6 @@
-
@@ -1064,11 +1194,6 @@
-
-
-
-
-
@@ -1101,26 +1226,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1149,10 +1254,9 @@
-
+
-
@@ -1160,7 +1264,6 @@
-
@@ -1185,11 +1288,6 @@
-
-
-
-
-
@@ -1222,26 +1320,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1320,6 +1398,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1422,9 +1522,9 @@
-
+
-
+
diff --git a/plugins/Eiger.java b/plugins/Eiger.java
index f110958..5d56c10 100644
--- a/plugins/Eiger.java
+++ b/plugins/Eiger.java
@@ -5,6 +5,7 @@ import ch.psi.pshell.imaging.Overlays.Rect;
import ch.psi.pshell.imaging.Pen;
import ch.psi.pshell.imaging.Renderer;
import ch.psi.pshell.imaging.RendererListener;
+import ch.psi.pshell.swing.DeviceValuePanel;
import ch.psi.pshell.ui.App;
import ch.psi.pshell.ui.Panel;
import ch.psi.utils.Arr;
@@ -12,6 +13,7 @@ import ch.psi.utils.State;
import ch.psi.utils.swing.SwingUtils;
import java.awt.Component;
import java.awt.Dimension;
+import java.awt.Font;
import java.awt.Point;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
@@ -29,6 +31,7 @@ import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JToggleButton;
+import javax.swing.SwingConstants;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.filechooser.FileNameExtensionFilter;
@@ -54,7 +57,8 @@ public class Eiger extends Panel {
Circ_Plus,
Circ_Minus,
Lin_Hor,
- Lin_Ver
+ Lin_Ver,
+ Lin
}
public enum ImgMethod {
@@ -78,8 +82,6 @@ public class Eiger extends Panel {
comboSwitch.setSelectedIndex(1);
SwingUtils.setEnumCombo(comboPol1, Polarization.class, true);
SwingUtils.setEnumCombo(comboPol2, Polarization.class, true);
- SwingUtils.setEnumCombo(comboImgPol1, Polarization.class, true);
- SwingUtils.setEnumCombo(comboImgPol2, Polarization.class, true);
SwingUtils.setEnumCombo(comboImgMethod, ImgMethod.class, true);
Component[] parameterControls = new Component[0];
@@ -88,6 +90,16 @@ public class Eiger extends Panel {
parameterControls = Arr.append(parameterControls, SwingUtils.getComponentsByType(panel, cls));
}
}
+
+ Font devValueFont = deviceValuePanel1.getFont().deriveFont(8.0f);
+ for (Component panel : SwingUtils.getComponentsByType(panelBeamline, DeviceValuePanel.class)){
+ ((DeviceValuePanel)panel).getLabel().setFont(devValueFont);
+ ((DeviceValuePanel)panel).getLabel().setVerticalAlignment(SwingConstants.TOP);
+ ((DeviceValuePanel)panel).getLabel().setVerticalTextPosition(SwingConstants.TOP);
+ }
+
+ deviceValuePanel1.getLabel().setVerticalAlignment(SwingConstants.TOP);
+ deviceValuePanel1.getLabel().setFont(deviceValuePanel1.getFont().deriveFont(8.0f));
parameterControls = Arr.append(parameterControls, SwingUtils.getComponentsByType(panelRoi, JButton.class));
this.parameterControls = parameterControls;
setPersistedComponents(parameterControls);
@@ -192,6 +204,8 @@ public class Eiger extends Panel {
void updateControls() {
boolean editable = getState().isInitialized() && !getState().isProcessing();
+ boolean is_id1 = comboID.getSelectedIndex() != 1;
+ boolean is_id2 = comboID.getSelectedIndex() != 0;
textDataPath.setEnabled(editable);
spinnerSeq.setEnabled(editable);
buttonDefaultPath.setEnabled(editable && !textDataPath.getText().equals(DEFAULT_PATH));
@@ -199,17 +213,24 @@ public class Eiger extends Panel {
buttonUndoPath.setEnabled(editable && !textDataPath.getText().equals(getContext().getConfig().dataPath));
buttonSetSeq.setEnabled(editable && !spinnerSeq.getValue().equals(getContext().getFileSequentialNumber()));
buttonUndoSeq.setEnabled(editable && !spinnerSeq.getValue().equals(getContext().getFileSequentialNumber()));
-
+ buttonApply.setEnabled(editable);
+
for (Component c : parameterControls) {
c.setEnabled(editable);
}
if (editable) {
comboSwitch.setEnabled(comboImgMethod.getSelectedItem() == ImgMethod.Two_Pol.toString());
- comboImgPol1.setEnabled(comboImgMethod.getSelectedItem() == ImgMethod.Two_Pol.toString());
- comboImgPol2.setEnabled(comboImgMethod.getSelectedItem() == ImgMethod.Two_Pol.toString());
spinnerImgEng1.setEnabled(comboImgMethod.getSelectedItem() == ImgMethod.Two_Energies.toString());
- spinnerImgEng2.setEnabled(comboImgMethod.getSelectedItem() == ImgMethod.Two_Energies.toString());
+ spinnerImgEng2.setEnabled(comboImgMethod.getSelectedItem() == ImgMethod.Two_Energies.toString());
+ spinnerAlp1.setEnabled(is_id1 && (comboPol1.getSelectedItem() == Polarization.Lin.toString()));
+ spinnerAlp2.setEnabled(is_id2 & (comboPol2.getSelectedItem() == Polarization.Lin.toString()));
+ spinnerHar1.setEnabled(is_id1 );
+ spinnerHar2.setEnabled(is_id2 );
+ spinnerOff1.setEnabled(is_id1 );
+ spinnerOff2.setEnabled(is_id2 );
+ comboPol1.setEnabled(is_id1 );
+ comboPol2.setEnabled(is_id2 );
}
buttonImgStart.setEnabled(getState() == State.Ready);
@@ -298,11 +319,9 @@ public class Eiger extends Panel {
args.put("EXPOSURE_1", spinnerImgExp1.getValue());
args.put("AVERAGE_1", spinnerImgAvg1.getValue());
args.put("ENERGY_1", spinnerImgEng1.getValue());
- args.put("POLARIZATION_1", comboImgPol1.getSelectedItem());
args.put("EXPOSURE_2", spinnerImgExp2.getValue());
args.put("AVERAGE_2", spinnerImgAvg2.getValue());
args.put("ENERGY_2", spinnerImgEng2.getValue());
- args.put("POLARIZATION_2", comboImgPol2.getSelectedItem());
runAsync("templates/Eiger2Img", args).handle((ret, t) -> {
if ((t != null) && (!getContext().isAborted())) {
@@ -432,6 +451,10 @@ public class Eiger extends Panel {
spinnerHar1 = new javax.swing.JSpinner();
jLabel8 = new javax.swing.JLabel();
spinnerOff1 = new javax.swing.JSpinner();
+ deviceValuePanel2 = new ch.psi.pshell.swing.DeviceValuePanel();
+ deviceValuePanel3 = new ch.psi.pshell.swing.DeviceValuePanel();
+ deviceValuePanel4 = new ch.psi.pshell.swing.DeviceValuePanel();
+ deviceValuePanel5 = new ch.psi.pshell.swing.DeviceValuePanel();
jPanel9 = new javax.swing.JPanel();
jLabel13 = new javax.swing.JLabel();
comboPol2 = new javax.swing.JComboBox<>();
@@ -441,10 +464,16 @@ public class Eiger extends Panel {
spinnerHar2 = new javax.swing.JSpinner();
jLabel16 = new javax.swing.JLabel();
spinnerOff2 = new javax.swing.JSpinner();
+ deviceValuePanel6 = new ch.psi.pshell.swing.DeviceValuePanel();
+ deviceValuePanel7 = new ch.psi.pshell.swing.DeviceValuePanel();
+ deviceValuePanel8 = new ch.psi.pshell.swing.DeviceValuePanel();
+ deviceValuePanel9 = new ch.psi.pshell.swing.DeviceValuePanel();
buttonApply = new javax.swing.JButton();
jLabel27 = new javax.swing.JLabel();
spinnerImgEng = new javax.swing.JSpinner();
checkAutoValve = new javax.swing.JCheckBox();
+ deviceValuePanel1 = new ch.psi.pshell.swing.DeviceValuePanel();
+ deviceValuePanel10 = new ch.psi.pshell.swing.DeviceValuePanel();
panelNorm = new javax.swing.JPanel();
buttonSetNorm = new javax.swing.JButton();
textNorm = new javax.swing.JTextField();
@@ -466,6 +495,7 @@ public class Eiger extends Panel {
tableRoi = new javax.swing.JTable();
buttonTriggerDetector = new javax.swing.JButton();
buttonShowDetectorPanel = new javax.swing.JButton();
+ buttonMeasurements = new javax.swing.JToggleButton();
jPanel2 = new javax.swing.JPanel();
buttonImgStart = new javax.swing.JButton();
buttonImgAbort = new javax.swing.JButton();
@@ -475,8 +505,6 @@ public class Eiger extends Panel {
spinnerImgExp1 = new javax.swing.JSpinner();
jLabel9 = new javax.swing.JLabel();
spinnerImgAvg1 = new javax.swing.JSpinner();
- jLabel10 = new javax.swing.JLabel();
- comboImgPol1 = new javax.swing.JComboBox<>();
jLabel11 = new javax.swing.JLabel();
spinnerImgEng1 = new javax.swing.JSpinner();
jPanel10 = new javax.swing.JPanel();
@@ -484,8 +512,6 @@ public class Eiger extends Panel {
spinnerImgExp2 = new javax.swing.JSpinner();
jLabel17 = new javax.swing.JLabel();
spinnerImgAvg2 = new javax.swing.JSpinner();
- jLabel18 = new javax.swing.JLabel();
- comboImgPol2 = new javax.swing.JComboBox<>();
jLabel19 = new javax.swing.JLabel();
spinnerImgEng2 = new javax.swing.JSpinner();
jLabel21 = new javax.swing.JLabel();
@@ -495,6 +521,10 @@ public class Eiger extends Panel {
checkImgAutosave = new javax.swing.JCheckBox();
labelSwitching = new javax.swing.JLabel();
comboSwitch = new javax.swing.JComboBox<>();
+ deviceValuePanel11 = new ch.psi.pshell.swing.DeviceValuePanel();
+ jLabel22 = new javax.swing.JLabel();
+ jLabel28 = new javax.swing.JLabel();
+ deviceValuePanel12 = new ch.psi.pshell.swing.DeviceValuePanel();
jPanel3 = new javax.swing.JPanel();
panelSpectrum = new javax.swing.JPanel();
jLabel23 = new javax.swing.JLabel();
@@ -636,12 +666,22 @@ public class Eiger extends Panel {
jLabel3.setText("ID:");
comboID.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
+ comboID.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ comboIDActionPerformed(evt);
+ }
+ });
jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder("ID1"));
- jLabel5.setText("Polarization:");
+ jLabel5.setText("Mode:");
comboPol1.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
+ comboPol1.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ comboPol1ActionPerformed(evt);
+ }
+ });
jLabel6.setText("Alpha:");
@@ -655,6 +695,14 @@ public class Eiger extends Panel {
spinnerOff1.setModel(new javax.swing.SpinnerNumberModel(0.0d, -10.0d, 10.0d, 1.0d));
+ deviceValuePanel2.setDeviceName("id1_alpha");
+
+ deviceValuePanel3.setDeviceName("id1_pol");
+
+ deviceValuePanel4.setDeviceName("id1_harmonic");
+
+ deviceValuePanel5.setDeviceName("id1_offset");
+
javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
jPanel7.setLayout(jPanel7Layout);
jPanel7Layout.setHorizontalGroup(
@@ -668,42 +716,73 @@ public class Eiger extends Panel {
.addComponent(jLabel8, javax.swing.GroupLayout.Alignment.TRAILING))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(spinnerOff1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(spinnerHar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(spinnerAlp1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(comboPol1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel7Layout.createSequentialGroup()
+ .addComponent(spinnerAlp1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(deviceValuePanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel7Layout.createSequentialGroup()
+ .addComponent(spinnerHar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(deviceValuePanel4, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel7Layout.createSequentialGroup()
+ .addComponent(comboPol1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(deviceValuePanel3, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel7Layout.createSequentialGroup()
+ .addComponent(spinnerOff1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(deviceValuePanel5, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel7Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {comboPol1, spinnerAlp1, spinnerHar1, spinnerOff1});
+ jPanel7Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {deviceValuePanel2, deviceValuePanel3, deviceValuePanel4, deviceValuePanel5});
+
jPanel7Layout.setVerticalGroup(
jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addContainerGap()
- .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(jLabel5)
- .addComponent(comboPol1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
+ .addComponent(deviceValuePanel3, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(comboPol1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel5))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(jLabel6)
- .addComponent(spinnerAlp1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(spinnerAlp1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(deviceValuePanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(jLabel7)
- .addComponent(spinnerHar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(spinnerHar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(deviceValuePanel4, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(jLabel8)
- .addComponent(spinnerOff1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(spinnerOff1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(deviceValuePanel5, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
+ jPanel7Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {comboPol1, deviceValuePanel3});
+
+ jPanel7Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deviceValuePanel2, spinnerAlp1});
+
+ jPanel7Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deviceValuePanel4, spinnerHar1});
+
+ jPanel7Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deviceValuePanel5, spinnerOff1});
+
jPanel9.setBorder(javax.swing.BorderFactory.createTitledBorder("ID2"));
- jLabel13.setText("Polarization:");
+ jLabel13.setText("Mode:");
comboPol2.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
+ comboPol2.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ comboPol2ActionPerformed(evt);
+ }
+ });
jLabel14.setText("Alpha:");
@@ -717,6 +796,14 @@ public class Eiger extends Panel {
spinnerOff2.setModel(new javax.swing.SpinnerNumberModel(0.0d, -10.0d, 10.0d, 1.0d));
+ deviceValuePanel6.setDeviceName("id2_pol");
+
+ deviceValuePanel7.setDeviceName("id2_alpha");
+
+ deviceValuePanel8.setDeviceName("id2_harmonic");
+
+ deviceValuePanel9.setDeviceName("id2_offset");
+
javax.swing.GroupLayout jPanel9Layout = new javax.swing.GroupLayout(jPanel9);
jPanel9.setLayout(jPanel9Layout);
jPanel9Layout.setHorizontalGroup(
@@ -734,6 +821,12 @@ public class Eiger extends Panel {
.addComponent(spinnerHar2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(spinnerAlp2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(comboPol2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(deviceValuePanel6, javax.swing.GroupLayout.DEFAULT_SIZE, 60, Short.MAX_VALUE)
+ .addComponent(deviceValuePanel7, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
+ .addComponent(deviceValuePanel8, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
+ .addComponent(deviceValuePanel9, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
@@ -743,24 +836,36 @@ public class Eiger extends Panel {
jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel9Layout.createSequentialGroup()
.addContainerGap()
- .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(jLabel13)
- .addComponent(comboPol2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
+ .addComponent(deviceValuePanel6, javax.swing.GroupLayout.PREFERRED_SIZE, 7, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(comboPol2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel13))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(jLabel14)
- .addComponent(spinnerAlp2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
+ .addComponent(deviceValuePanel7, javax.swing.GroupLayout.PREFERRED_SIZE, 7, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(spinnerAlp2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel14))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(jLabel15)
- .addComponent(spinnerHar2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(spinnerHar2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(deviceValuePanel8, javax.swing.GroupLayout.PREFERRED_SIZE, 7, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(jLabel16)
- .addComponent(spinnerOff2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(spinnerOff2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(deviceValuePanel9, javax.swing.GroupLayout.PREFERRED_SIZE, 6, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
+ jPanel9Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {comboPol2, deviceValuePanel6});
+
+ jPanel9Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deviceValuePanel7, spinnerAlp2});
+
+ jPanel9Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deviceValuePanel8, spinnerHar2});
+
+ jPanel9Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deviceValuePanel9, spinnerOff2});
+
buttonApply.setText("Apply");
buttonApply.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
@@ -769,7 +874,7 @@ public class Eiger extends Panel {
});
jLabel27.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
- jLabel27.setText("Energy");
+ jLabel27.setText("Energy:");
spinnerImgEng.setModel(new javax.swing.SpinnerNumberModel(1000.0d, 90.0d, 2520.0d, 1.0d));
@@ -780,6 +885,10 @@ public class Eiger extends Panel {
}
});
+ deviceValuePanel1.setDeviceName("energy");
+
+ deviceValuePanel10.setDeviceName("energy_opt_desc");
+
javax.swing.GroupLayout panelBeamlineLayout = new javax.swing.GroupLayout(panelBeamline);
panelBeamline.setLayout(panelBeamlineLayout);
panelBeamlineLayout.setHorizontalGroup(
@@ -787,26 +896,27 @@ public class Eiger extends Panel {
.addGroup(panelBeamlineLayout.createSequentialGroup()
.addContainerGap()
.addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(checkAutoValve)
.addGroup(panelBeamlineLayout.createSequentialGroup()
- .addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(panelBeamlineLayout.createSequentialGroup()
- .addComponent(jLabel3)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(comboID, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGroup(panelBeamlineLayout.createSequentialGroup()
- .addComponent(jLabel27)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(spinnerImgEng, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addComponent(checkAutoValve))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addGap(18, 18, 18)
- .addComponent(jPanel9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addComponent(jLabel27)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(deviceValuePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
+ .addComponent(spinnerImgEng)))
.addGroup(panelBeamlineLayout.createSequentialGroup()
- .addGap(0, 0, Short.MAX_VALUE)
- .addComponent(buttonApply, javax.swing.GroupLayout.PREFERRED_SIZE, 166, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(0, 0, Short.MAX_VALUE)))
- .addContainerGap())
+ .addComponent(jLabel3)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(comboID, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(deviceValuePanel10, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE))))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jPanel9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addGroup(panelBeamlineLayout.createSequentialGroup()
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonApply, javax.swing.GroupLayout.PREFERRED_SIZE, 166, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(0, 0, Short.MAX_VALUE))
);
panelBeamlineLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel27, jLabel3});
@@ -815,27 +925,37 @@ public class Eiger extends Panel {
panelBeamlineLayout.setVerticalGroup(
panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelBeamlineLayout.createSequentialGroup()
- .addContainerGap()
- .addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(jPanel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGroup(panelBeamlineLayout.createSequentialGroup()
+ .addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(panelBeamlineLayout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jPanel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(panelBeamlineLayout.createSequentialGroup()
.addGap(30, 30, 30)
.addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(comboID, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(deviceValuePanel10, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel27)
.addComponent(spinnerImgEng, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(deviceValuePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(checkAutoValve)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(buttonApply)
- .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addContainerGap())
);
+ panelBeamlineLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deviceValuePanel1, spinnerImgEng});
+
+ panelBeamlineLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {comboID, deviceValuePanel10});
+
panelNorm.setBorder(javax.swing.BorderFactory.createTitledBorder("Normalization"));
buttonSetNorm.setText("Select");
@@ -1061,28 +1181,36 @@ public class Eiger extends Panel {
}
});
+ buttonMeasurements.setText("Image Measurements");
+ buttonMeasurements.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonMeasurementsActionPerformed(evt);
+ }
+ });
+
javax.swing.GroupLayout panelRoiLayout = new javax.swing.GroupLayout(panelRoi);
panelRoi.setLayout(panelRoiLayout);
panelRoiLayout.setHorizontalGroup(
panelRoiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelRoiLayout.createSequentialGroup()
.addGap(17, 17, 17)
- .addComponent(rendererRoi, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
+ .addComponent(rendererRoi, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelRoiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(panelRoiLayout.createSequentialGroup()
- .addGroup(panelRoiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(jLabel26)
- .addComponent(buttonRoiAdd, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(buttonRoiRemove, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(buttonTriggerDetector, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGap(1, 1, 1))
- .addComponent(buttonShowDetectorPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 201, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addContainerGap())
+ .addComponent(buttonTriggerDetector, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(buttonShowDetectorPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE)
+ .addComponent(buttonMeasurements, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(buttonRoiRemove, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(buttonRoiAdd, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGap(13, 13, 13))
+ .addGroup(panelRoiLayout.createSequentialGroup()
+ .addGap(472, 472, 472)
+ .addComponent(jLabel26)
+ .addGap(182, 182, 182))
);
- panelRoiLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonRoiAdd, buttonRoiRemove, buttonShowDetectorPanel, buttonTriggerDetector, jScrollPane1});
+ panelRoiLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonMeasurements, buttonRoiAdd, buttonRoiRemove, buttonShowDetectorPanel, buttonTriggerDetector, jScrollPane1});
panelRoiLayout.setVerticalGroup(
panelRoiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -1097,7 +1225,9 @@ public class Eiger extends Panel {
.addGap(18, 18, 18)
.addComponent(jLabel26)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 338, Short.MAX_VALUE)
+ .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 297, Short.MAX_VALUE)
+ .addGap(18, 18, 18)
+ .addComponent(buttonMeasurements)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(buttonShowDetectorPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
@@ -1133,10 +1263,6 @@ public class Eiger extends Panel {
spinnerImgAvg1.setModel(new javax.swing.SpinnerNumberModel(1, 1, 1000, 1));
- jLabel10.setText("Polarization:");
-
- comboImgPol1.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
-
jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
jLabel11.setText("Energy:");
@@ -1147,9 +1273,8 @@ public class Eiger extends Panel {
jPanel8Layout.setHorizontalGroup(
jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()
- .addContainerGap()
+ .addGap(14, 14, 14)
.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(jLabel10, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel11, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel9, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel4, javax.swing.GroupLayout.Alignment.TRAILING))
@@ -1157,12 +1282,11 @@ public class Eiger extends Panel {
.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(spinnerImgExp1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(spinnerImgAvg1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(comboImgPol1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(spinnerImgEng1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
- jPanel8Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {comboImgPol1, spinnerImgAvg1, spinnerImgEng1, spinnerImgExp1});
+ jPanel8Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerImgAvg1, spinnerImgEng1, spinnerImgExp1});
jPanel8Layout.setVerticalGroup(
jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -1179,10 +1303,6 @@ public class Eiger extends Panel {
.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel11)
.addComponent(spinnerImgEng1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(jLabel10)
- .addComponent(comboImgPol1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
@@ -1198,10 +1318,6 @@ public class Eiger extends Panel {
spinnerImgAvg2.setModel(new javax.swing.SpinnerNumberModel(1, 1, 1000, 1));
- jLabel18.setText("Polarization:");
-
- comboImgPol2.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
-
jLabel19.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
jLabel19.setText("Energy:");
@@ -1212,22 +1328,20 @@ public class Eiger extends Panel {
jPanel10Layout.setHorizontalGroup(
jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel10Layout.createSequentialGroup()
- .addContainerGap()
+ .addGap(14, 14, 14)
.addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel19, javax.swing.GroupLayout.Alignment.TRAILING)
- .addComponent(jLabel18, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel17, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel12, javax.swing.GroupLayout.Alignment.TRAILING))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(spinnerImgExp2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(spinnerImgAvg2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(comboImgPol2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(spinnerImgEng2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
- jPanel10Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {comboImgPol2, spinnerImgAvg2, spinnerImgEng2, spinnerImgExp2});
+ jPanel10Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerImgAvg2, spinnerImgEng2, spinnerImgExp2});
jPanel10Layout.setVerticalGroup(
jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -1244,10 +1358,6 @@ public class Eiger extends Panel {
.addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel19)
.addComponent(spinnerImgEng2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(jLabel18)
- .addComponent(comboImgPol2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
@@ -1273,25 +1383,44 @@ public class Eiger extends Panel {
comboSwitch.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
+ deviceValuePanel11.setDeviceName("id1_pol");
+
+ jLabel22.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
+ jLabel22.setText("Mode ID1:");
+
+ jLabel28.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
+ jLabel28.setText("Mode ID2:");
+
+ deviceValuePanel12.setDeviceName("id2_pol");
+
javax.swing.GroupLayout panelImgControlsLayout = new javax.swing.GroupLayout(panelImgControls);
panelImgControls.setLayout(panelImgControlsLayout);
panelImgControlsLayout.setHorizontalGroup(
panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelImgControlsLayout.createSequentialGroup()
- .addContainerGap()
.addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
- .addComponent(labelSwitching)
- .addComponent(jLabel21)
- .addComponent(jLabel20))
+ .addComponent(jLabel28, javax.swing.GroupLayout.DEFAULT_SIZE, 99, Short.MAX_VALUE)
+ .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+ .addGroup(panelImgControlsLayout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+ .addComponent(labelSwitching)
+ .addComponent(jLabel21)
+ .addComponent(jLabel20)))
+ .addGroup(panelImgControlsLayout.createSequentialGroup()
+ .addGap(22, 22, 22)
+ .addComponent(jLabel22, javax.swing.GroupLayout.DEFAULT_SIZE, 77, Short.MAX_VALUE))))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(spinnerImgMeasurements)
.addComponent(comboImgMethod, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(checkImgAutosave, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(comboSwitch, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- .addGap(18, 18, Short.MAX_VALUE)
+ .addComponent(comboSwitch, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(deviceValuePanel11, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
+ .addComponent(deviceValuePanel12, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
+ .addGap(18, 20, Short.MAX_VALUE)
.addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addGap(18, 18, Short.MAX_VALUE)
+ .addGap(18, 21, Short.MAX_VALUE)
.addComponent(jPanel10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
@@ -1302,9 +1431,7 @@ public class Eiger extends Panel {
panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelImgControlsLayout.createSequentialGroup()
.addContainerGap()
- .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jPanel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(panelImgControlsLayout.createSequentialGroup()
.addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(comboImgMethod, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
@@ -1318,8 +1445,18 @@ public class Eiger extends Panel {
.addComponent(labelSwitching)
.addComponent(comboSwitch, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(checkImgAutosave)))
- .addContainerGap())
+ .addComponent(checkImgAutosave))
+ .addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jPanel10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addGap(24, 24, 24)
+ .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
+ .addComponent(jLabel22)
+ .addComponent(deviceValuePanel11, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
+ .addComponent(jLabel28)
+ .addComponent(deviceValuePanel12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addContainerGap(34, Short.MAX_VALUE))
);
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
@@ -1346,7 +1483,7 @@ public class Eiger extends Panel {
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(18, 18, 18)
.addComponent(panelImgControls, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 304, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 250, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(buttonImgStart)
.addComponent(buttonImgAbort))
@@ -1493,9 +1630,9 @@ public class Eiger extends Panel {
.addGroup(panelSpectrumLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel25)
.addComponent(spinnerSpecScans, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, 126, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, 127, Short.MAX_VALUE)
.addComponent(checkSpecSwitchPol)
- .addGap(0, 121, Short.MAX_VALUE))
+ .addGap(0, 122, Short.MAX_VALUE))
.addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
@@ -1556,7 +1693,7 @@ public class Eiger extends Panel {
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
- .addComponent(jTabbedPane1)
+ .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 560, Short.MAX_VALUE)
.addGap(0, 0, 0))
);
}// //GEN-END:initComponents
@@ -1786,12 +1923,33 @@ public class Eiger extends Panel {
}
}//GEN-LAST:event_spinnerOutliersThresholdStateChanged
+ private void comboPol1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboPol1ActionPerformed
+ updateControls();
+ }//GEN-LAST:event_comboPol1ActionPerformed
+
+ private void comboPol2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboPol2ActionPerformed
+ updateControls();
+ }//GEN-LAST:event_comboPol2ActionPerformed
+
+ private void comboIDActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboIDActionPerformed
+ updateControls();
+ }//GEN-LAST:event_comboIDActionPerformed
+
+ private void buttonMeasurementsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonMeasurementsActionPerformed
+ try{
+ evalAsync(buttonMeasurements.isSelected() ? "start_measurements()" : "stop_measurements()");
+ } catch (Exception ex){
+ showException (ex);
+ }
+ }//GEN-LAST:event_buttonMeasurementsActionPerformed
+
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton buttonAdd;
private javax.swing.JButton buttonApply;
private javax.swing.JButton buttonDefaultPath;
private javax.swing.JButton buttonImgAbort;
private javax.swing.JButton buttonImgStart;
+ private javax.swing.JToggleButton buttonMeasurements;
private javax.swing.JButton buttonRemove;
private javax.swing.JButton buttonRoiAdd;
private javax.swing.JButton buttonRoiRemove;
@@ -1813,13 +1971,22 @@ public class Eiger extends Panel {
private javax.swing.JCheckBox checkSpecWithI0;
private javax.swing.JComboBox comboID;
private javax.swing.JComboBox comboImgMethod;
- private javax.swing.JComboBox comboImgPol1;
- private javax.swing.JComboBox comboImgPol2;
private javax.swing.JComboBox comboPol1;
private javax.swing.JComboBox comboPol2;
private javax.swing.JComboBox comboSwitch;
+ private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel1;
+ private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel10;
+ private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel11;
+ private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel12;
+ private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel2;
+ private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel3;
+ private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel4;
+ private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel5;
+ private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel6;
+ private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel7;
+ private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel8;
+ private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel9;
private javax.swing.JLabel jLabel1;
- private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
@@ -1827,16 +1994,17 @@ public class Eiger extends Panel {
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel16;
private javax.swing.JLabel jLabel17;
- private javax.swing.JLabel jLabel18;
private javax.swing.JLabel jLabel19;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel20;
private javax.swing.JLabel jLabel21;
+ private javax.swing.JLabel jLabel22;
private javax.swing.JLabel jLabel23;
private javax.swing.JLabel jLabel24;
private javax.swing.JLabel jLabel25;
private javax.swing.JLabel jLabel26;
private javax.swing.JLabel jLabel27;
+ private javax.swing.JLabel jLabel28;
private javax.swing.JLabel jLabel29;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel30;
diff --git a/script/devices/diag.py b/script/devices/diag.py
new file mode 100644
index 0000000..d21a1de
--- /dev/null
+++ b/script/devices/diag.py
@@ -0,0 +1,86 @@
+from collections import OrderedDict
+
+diag_channels = { \
+ #"photon energy": "X11MA-PGM:rbkenergy", \
+ #"grating number": "X11MA-PGM:grating", \
+ #"cff value": "X11MA-PGM:rbkcff", \
+ "diffraction order": "X11MA-PGM:difforder0", \
+ #"exit slit size":"X11MA-OP2-SL:TRY.VAL", \
+ "front end size":"X11MA-FE-DSAPER", \
+ "status fast shutter":"X11MA-VME-ES1:FAST-SHTR", \
+ "girder x": "X11MA-HG:X1", \
+ "girder y": "X11MA-HG:Y1", \
+ "girder z": "X11MA-HG:Z1", \
+ "girder pitch": "X11MA-HG:PITCH1", \
+ "girder yaw": "X11MA-HG:YAW1", \
+ "girder roll set": "X11MA-HG:ROLL_SET", \
+ "CMU ox": "X11MA-OP-CM:ox", \
+ "CMU oy": "X11MA-OP-CM:oy", \
+ "CMU oz": "X11MA-OP-CM:oz", \
+ "CMU oRx": "X11MA-OP-CM:oRx", \
+ "CMU oRy": "X11MA-OP-CM:oRy", \
+ "CMU oRz": "X11MA-OP-CM:oRz", \
+ "CMU TRB": "X11MA-OP2-CM:TRB.RBV", \
+ #"mode": "X11PHS-E:OPT", \
+ #"id1 mode": "X11MA-ID1:MODE", \
+ #"id1 offset": "X11MA-ID1:ENERGY-OFFS", \
+ #"id1 alpha": "X11MA-ID1:ALPHA", \
+ #"id1 harmonic": "X11MA-ID1:HARMONIC", \
+ "id1 gap": "X11MA-ID1-GAP:READ", \
+ "id1 shift": "X11MA-ID1-SHIFT:READ", \
+ #"id2 mode": "X11MA-ID2:MODE", \
+ #"id2 offset": "X11MA-ID2:ENERGY-OFFS", \
+ #"id2 alpha": "X11MA-ID2:ALPHA", \
+ #"id2 harmonic": "X11MA-ID2:HARMONIC", \
+ "id2 gap": "X11MA-ID2-GAP:READ", \
+ "id2 shift": "X11MA-ID2-SHIFT:READ", \
+ "keithley 10 IO": "X11Keithley1-read", \
+ #"ring current": "ARIDI-PCT:CURRENT", \
+ "PEEM high voltage": "X11MA-ES1-PEEM:UMON", \
+ "PEEM leakage current": "X11MA-ES1-PEEM:IMON", \
+ "Pressure in PEEM": "X11MA-ES1-MAIN:PRESSURE", \
+ "Pressure in Column": "X11MA-ES1-COLU:PRESSURE", \
+ "Sample temperature": "X11MA-ES1-SW:Pt100-T", \
+ "Pt100 resistance": "X11MA-ES1-SW:Pt100-R", \
+ "high voltage": "X11MA-ES1-SD1:cam1:HighVoltage_RBV", \
+ }
+
+diag_devices = {
+ "photon energy": energy_rbk, \
+ "grating number": Grating, \
+ "cff value": cff, \
+ "exit slit size": ES, \
+ "mode": energy_opt, \
+ "id1 mode": id1_mode, \
+ "id1 offset": id1_offset, \
+ "id1 alpha": id1_alpha, \
+ "id1 harmonic": id1_harmonic, \
+ "id2 mode": id2_mode, \
+ "id2 offset": id2_offset, \
+ "id2 alpha": id2_alpha, \
+ "id2 harmonic": id2_harmonic, \
+ "ring current": machine_cur, \
+ }
+
+
+def get_diags():
+ ret = {}
+ for k,v in diag_devices.items():
+ try:
+ ret[k]=str(v.read())
+ except:
+ ret[k]="Error: " + sys.exc_info()[1]
+ for k,v in diag_channels.items():
+ try:
+ ret[k]=caget(v,'s')
+ except:
+ ret[k]="Error: " + sys.exc_info()[1]
+ ret["exposure time"] = str(eiger.getExposure())
+ return OrderedDict(sorted(ret.items(), key=lambda i: i[0].lower()))
+
+def print_diags():
+ diags = get_diags()
+ for k in diags.keys():
+ print k + ": " + diags[k]
+
+
diff --git a/script/devices/eiger.py b/script/devices/eiger.py
index a70588b..ef53d08 100644
--- a/script/devices/eiger.py
+++ b/script/devices/eiger.py
@@ -145,22 +145,29 @@ def _save_as_tiff(data, filename, check=False, show = False, metadata={}):
ip = load_array(data.matrix)
else:
ip = data
- info = "Timestamp: " + _timestamp(3)
- for key,val in metadata.items():
- info = info + "\n" + str(key) + ": " + str(val)
-
- ip.setProperty("Info", info)
- data = get_ip_array(ip)
+ #info = "Timestamp: " + _timestamp(3)
+ #for key,val in metadata.items():
+ # info = info + "\n" + str(key) + ": " + str(val)
+ #print "Info:" ,info
+ #ip.setProperty("Info", info)
+ metadata["Timestamp"] = time.strftime("%y/%m/%d %H:%M:%S",time.localtime())
+
if not os.path.exists(os.path.dirname(filename)):
os.makedirs(os.path.dirname(filename))
- save_image(ip, filename,"tiff")
+ save_image(ip, filename,"tiff", metadata)
+
+ #finfo = open(filename + ".info", "w")
+ #for k, v in metadata.items():
+ # finfo.write(str(k) + ': '+ str(v) + '\n')
+ #info.close()
- if check:
+ if check:
+ data = get_ip_array(ip)
import java.util.Arrays as Arrays
ip=open_image(filename)
read = get_ip_array(ip)
- print (" ------> Error reading array: " + str(filename))
-
+ #print (" ------> Error reading array: " + str(filename))
+ #TODO: Original checkcode was deleted!
def save_as_tiff(data, filename, check=False, show = False, parallel=True, metadata={}):
if parallel:
diff --git a/script/devices/id.py b/script/devices/id.py
index 2bcddfb..c12be89 100644
--- a/script/devices/id.py
+++ b/script/devices/id.py
@@ -32,8 +32,8 @@ def get_id_pol(id, as_string=False):
# 5: LIn
if id<1 or id>2: raise Exception("Invalid id")
#ret = caget ("X11MA-ID1:MODE" if id==1 else "X11MA-ID2:MODE", 's' if as_string else 'i')
- ret = caget ("X11MA-ID1:MODE" if id==1 else "X11MA-ID2:MODE", 'i')
- if ret==0:
+ mode = id1_mode.read() if (id==1) else id2_mode.read()
+ if mode=="LINEAR":
#linear mode
alpha = get_alpha_id(id)
if alpha==0 :
@@ -42,6 +42,12 @@ def get_id_pol(id, as_string=False):
ret = 4
else:
ret = 5
+ elif mode == "CIRC +":
+ ret = 1
+ elif mode == "CIRC -":
+ ret = 2
+ else:
+ ret = -1
if as_string:
for (k,v) in POL_IDS.items():
if v==ret:
@@ -51,18 +57,21 @@ def get_id_pol(id, as_string=False):
def get_alpha_id(id):
if id<1 or id>2: raise Exception("Invalid id")
- return caget ("X11MA-ID1:ALPHA" if id==1 else "X11MA-ID2:ALPHA")
+ return id1_alpha.read() if (id==1) else id2_alpha.read()
def put_id_offset(id, v):
- if id<1 or id>2:
+ if id == 1:
+ id1_offset.write(v)
+ elif id == 2:
+ id2_offset.write(v)
+ else:
raise Exception("Invalid id")
- caput("X11MA-ID1:ENERGY-OFFS" if (id==1) else "X11MA-ID2:ENERGY-OFFS",v)
def get_id_offset(id):
if id<1 or id>2:
raise Exception("Invalid id")
- return caget("X11MA-ID1:ENERGY-OFFS" if (id==1) else "X11MA-ID2:ENERGY-OFFS")
+ return id1_offset.read() if (id==1) else id2_offset.read()
def put_id_pol(id, pol, alpha=None):
@@ -71,31 +80,35 @@ def put_id_pol(id, pol, alpha=None):
#pol = 3 : Mode =0, alpha = 0 lin hor
#pol = 4 : Mode =0, alpha = 90 lin vert
#pol = 5 : Mode =0, alpha = ? lin rot
+ print "Set id" + str(id) + " Pol=" + str(pol) + " Alpha=" + str(alpha)
+
if id<1 or id>2:
raise Exception("Invalid id")
- pv1="X11MA-ID1:MODE" if (id==1) else "X11MA-ID2:MODE"
- pv2="X11MA-ID1:ALPHA" if (id==1) else "X11MA-ID2:ALPHA"
-
+ mode_dev = id1_mode if (id==1) else id2_mode
+ alpha_dev = id1_alpha if (id==1) else id2_alpha
if is_string(pol):
pol=POL_IDS[pol]
if pol == 1:
- caput(pv1,1)
+ mode_dev.write("CIRC +")
elif pol == 2:
- caput(pv1,2)
+ mode_dev.write("CIRC -")
elif pol == 3:
- caput(pv1,0)
- caput(pv2,0)
+ mode_dev.write("LINEAR")
+ time.sleep(0.5)
+ alpha_dev.write(0)
elif pol == 4:
- caput(pv1,0)
- caput(pv2,90)
+ mode_dev.write("LINEAR")
+ time.sleep(0.5)
+ alpha_dev.write(90)
elif pol == 5:
- caput(pv1,0)
+ mode_dev.write("LINEAR")
if alpha is not None:
- time.sleep(1.0)
- caput(pv2,alpha)
+ time.sleep(0.5)
+ alpha_dev.write(alpha)
+
def tune_detune(active_id):
offset_1 = float(get_setting("OFFSET_ID_1"))
@@ -109,3 +122,34 @@ def tune_detune(active_id):
print "Tune ID2"
put_id_offset(1, offset_1-40) #detuneID1
put_id_offset(2, offset_2) #tuneID2
+
+class IdPol(ReadonlyRegisterBase):
+ def __init__(self, id):
+ self.id = id
+ def doRead(self):
+ return get_id_pol(self.id, True)
+ def getName(self):
+ return "id" + str(self.id) + "_pol"
+
+add_device(IdPol(1), True)
+add_device(IdPol(2), True)
+id1_pol.update()
+id2_pol.update()
+id1_pol.setPolling(2000)
+id2_pol.setPolling(2000)
+
+
+class EnOptDesc(ReadonlyRegisterBase):
+ def doRead(self):
+ opt = energy_opt.read()
+ if opt == "PGM": return "PGM"
+ if opt == "PGM+ID1": return "ID1"
+ if opt == "PGM+ID2": return "ID2"
+ if opt == "PGM+ID1+ID2": return "ID1_ID2"
+ return ""
+
+ def getName(self):
+ return "energy_opt_desc"
+
+add_device(EnOptDesc(), True)
+energy_opt_desc.setPolling(2000)
diff --git a/script/local.py b/script/local.py
index fed06d1..e83a2e2 100644
--- a/script/local.py
+++ b/script/local.py
@@ -235,7 +235,7 @@ def otf(start, end, time, delay = 0.0, mode = None, offset = None, alpha = None,
#Devices
###################################################################################################
-for dev in ["eiger", "id", "chopper"]:
+for dev in ["eiger", "id", "chopper", "diag"]:
try:
run("devices/" + dev)
except:
@@ -428,6 +428,65 @@ def put_energy(v):
wait_channel(ALL_DONE, 1, type = 'i')
+###################################################################################################
+#Image measurements
+###################################################################################################
+
+from ijutils import get_measurement, load_array
+import ch.psi.pshell.imaging.Filter as Filter
+from ch.psi.pshell.imaging.Overlays import Text
+import ch.psi.pshell.imaging.Pen as Pen
+
+class MeasurementsFilter(Filter):
+ def __init__(self, measurements):
+ self.overlay = Text(Pen(java.awt.Color.GREEN.darker()), "", \
+ java.awt.Font("Verdana", java.awt.Font.PLAIN, 12), java.awt.Point(20,20))
+ self.measurements = measurements
+ self.source = None
+ self.renderer = None
+
+ def process(self, image, data):
+ try:
+ ip = load_array(data.array, data.width, data.height)
+ msg = ""
+ if self.measurements is not None:
+ for measurement in self.measurements:
+ val = get_measurement(ip,measurement)
+ msg = msg + "%s = %1.4f\n" % (measurement,val)
+ self.overlay.update(msg)
+ except:
+ self.overlay.update(str(sys.exc_info()[1]))
+ return image
+
+ def start(self, source, renderer=None):
+ self.stop()
+ self.source = source
+ self.renderer = renderer if (renderer is not None) else show_panel(source)
+ self.source.setFilter(self)
+ self.renderer.addOverlay(self.overlay)
+
+ def stop(self):
+ if self.renderer is not None:
+ self.renderer.removeOverlay(self.overlay)
+ if self.source is not None:
+ self.source.setFilter(None)
+ self.source = None
+ self.renderer = None
+
+filter_measurements = None
+
+def start_measurements(measurements=["StdDev"], source = image, renderer=None):
+ global filter_measurements
+ stop_measurements()
+ filter_measurements = MeasurementsFilter(measurements)
+ filter_measurements.start(string_to_obj(source), string_to_obj(renderer))
+
+def stop_measurements():
+ global filter_measurements
+ if filter_measurements is not None:
+ filter_measurements.stop()
+ filter_measurements = None
+
###################################################################################################
#Settings
###################################################################################################
diff --git a/script/templates/Eiger2Img.py b/script/templates/Eiger2Img.py
index b8be596..901439a 100644
--- a/script/templates/Eiger2Img.py
+++ b/script/templates/Eiger2Img.py
@@ -8,22 +8,23 @@ if get_exec_pars().source == CommandSource.ui:
EXPOSURE_1 = 1.0
AVERAGE_1 = 2.0
ENERGY_1 = 850.0
- POLARIZATION_1 = "Circ_Plus"
+ #POLARIZATION_1 = "Circ_Plus"
EXPOSURE_2 = 1.0
AVERAGE_2 = 2.0
ENERGY_2= 900.0
- POLARIZATION_2 = "Circ_Minus"
+ #POLARIZATION_2 = "Circ_Minus"
DRY_RUN = get_dry_run()
SHOW_IMAGES = True
+SAVE_DIAGS = True
ID = get_setting("ID")
EXPOSURE = [EXPOSURE_1, EXPOSURE_2]
AVERAGE = [int(AVERAGE_1), int(AVERAGE_2)]
ENERGY = [ENERGY_1, ENERGY_2]
-POLARIZATION = [POLARIZATION_1, POLARIZATION_2]
+#POLARIZATION = [POLARIZATION_1, POLARIZATION_2]
if METHOD == "Two_Energies":
for en in [ENERGY_1, ENERGY_2]:
@@ -92,19 +93,18 @@ pol_id2=POL_IDS[get_setting("POL_ID_2")]
#rbkEnergy=energy_rbk.read()
if METHOD == "Two_Pol":
- if ID == "ID1":
- put_id_pol(1,pol_id1)
+ if ID == "ID1":
current_pol = pol_id1
elif ID == "ID2":
- put_id_pol(2,pol_id2)
current_pol = pol_id2
elif ID == "ID1_ID2":
- put_id_pol(1,pol_id1)
- put_id_pol(2,pol_id2)
- current_pol=pol_id1
+ current_pol=pol_id1
if SWITCHING == "Tune_Detune":
tune_detune(1) #Tune ID1, Detune ID2
- wait_channel("X11PHS:alldone", 1)
+ else:
+ if ID == "ID1_ID2":
+ put_id_pol(2, current_pol) #Force both IDs to same polarization
+ wait_channel("X11PHS:alldone", 1)
def imageinfo(info):
pass
@@ -161,7 +161,7 @@ def save_image_file(frame, cycle=-1, frame_index=0):
plot(frame.matrix if (type(frame) == Data) else get_ip_array(frame), name = get_image_file_name(cycle, frame_index, True))
if AUTO_SAVE and (frame is not None):
filename = get_image_file_name(cycle, frame_index)
- threads.append(save_as_tiff(frame, filename, check=False, parallel=True))
+ threads.append(save_as_tiff(frame, filename, check=False, parallel=True, metadata=(get_diags() if SAVE_DIAGS else {})))
log(filename)
print filename
@@ -180,10 +180,7 @@ try:
log("nround = " + str(cycle) + " / " + str(MEASUREMENTS))
if METHOD == "Two_Energies":
- change_energy(ENERGY_1)
-
- ###??? SETAR POLARIZATION?
- #time.sleep(1)
+ change_energy(ENERGY_1)
for i in range(2):
if (cycle == 1) or (METHOD != "Take_Image"):
@@ -228,6 +225,7 @@ try:
if (MEASUREMENTS > 1) and (AUTO_SAVE == 1):
print "--- Averaging..."
for i in range(len(frames)):
+ """
measures = []
for cycle in range(1, MEASUREMENTS + 1):
filename = get_image_file_name(cycle, i)
@@ -235,7 +233,18 @@ try:
#measures.append(Data(get_ip_array(ip)))
measures.append(ip)
#av = average_frames(measures) #Result is transposed???
- av=average_ips (measures, roi=None, as_float=True)
+ av=average_ips (measures, roi=None, as_float=True)
+ """
+ integration = None
+ for cycle in range(1, MEASUREMENTS + 1):
+ filename = get_image_file_name(cycle, i)
+ print "Open " , filename
+ ip = open_image(filename)
+ if integration is None:
+ integration = ip
+ else:
+ integration =integrate_ips ([integration, ip], as_float=True)
+ av=op_const(integration, "divide", float(MEASUREMENTS), in_place=True)
save_image_file(av, -1, i)
finally:
if not DRY_RUN and str(get_setting("AUTO_SWITCH_VALVE")).lower() == "true":
diff --git a/script/templates/EigerAbsSpec.py b/script/templates/EigerAbsSpec.py
index d3eb238..3e03688 100644
--- a/script/templates/EigerAbsSpec.py
+++ b/script/templates/EigerAbsSpec.py
@@ -11,6 +11,8 @@ if get_exec_pars().source == CommandSource.ui:
RANGES = [[500.0, 1000.0, 100.0]]
DRY_RUN = get_dry_run()
+SAVE_DIAGS = True
+
log("ROIs: " + str(ROI))
if len(RANGES) == 0:
@@ -63,8 +65,8 @@ def grab_image(position, scan):
#filename = get_exec_pars().path + "/" + ("%02d" % Scan_Nr) + "/s" + "{seq}%03d" + "_" + ("%03d.tif" % scan.recordIndex)
filename = get_exec_pars().path + "/" + str(scan.currentPass) + "/s" + "{seq}%03d" + "_" + ("%03d.tif" % scan.recordIndex)
filename = get_context().setup.expandPath(filename)
- print filename
- save_as_tiff(av, filename)
+ print filename
+ save_as_tiff(av, filename, metadata=(get_diags() if SAVE_DIAGS else {}))
class Average(ReadableMatrix):
def read(self):
diff --git a/script/templates/SetupBeamline.py b/script/templates/SetupBeamline.py
index 586f8ea..e3f49f1 100644
--- a/script/templates/SetupBeamline.py
+++ b/script/templates/SetupBeamline.py
@@ -38,26 +38,26 @@ elif ID =='ID1_ID2':
if ID == "ID1":
#current_pol=POL_IDS[POL_ID_1] #get_id_pol(1)
- put_id_pol(1,POL_ID_1)
+ put_id_pol(1,POL_ID_1, ALPHA_ID_1 if (POL_ID_1=="Lin") else None )
caput('X11MA-ID2-GAP:SET',100) #open Gap ID2
- caput('X11MA-ID1:HARMONIC', int(HARMONIC_ID_1))
+ id1_harmonic.write(int(HARMONIC_ID_1))
put_id_offset(1, float(OFFSET_ID_1)) #offset on ID1
elif ID == "ID2":
#current_pol=POL_IDS[POL_ID_2]#get_id_pol(2)
- put_id_pol(2,POL_ID_2)
+ put_id_pol(2,POL_ID_2, ALPHA_ID_2 if (POL_ID_2=="Lin") else None )
caput('X11MA-ID1-GAP:SET',100) #open Gap ID1
- caput('X11MA-ID2:HARMONIC', int(HARMONIC_ID_2))
+ id2_harmonic.write(int(HARMONIC_ID_2))
put_id_offset(2, float(OFFSET_ID_2)) #offset on ID2
elif ID == "ID1_ID2":
#polID1=POL_IDS[POL_ID_1]
#polID2=POL_IDS[POL_ID_2]
- put_id_pol(1,POL_ID_1)
- put_id_pol(2,POL_ID_2)
+ put_id_pol(1,POL_ID_1, ALPHA_ID_1 if (POL_ID_1=="Lin") else None )
+ put_id_pol(2,POL_ID_2, ALPHA_ID_2 if (POL_ID_2=="Lin") else None )
#current_pol=polID1
- caput('X11MA-ID1:HARMONIC', int(HARMONIC_ID_1))
- caput('X11MA-ID2:HARMONIC', int(HARMONIC_ID_2))
+ id1_harmonic.write(int(HARMONIC_ID_1))
+ id2_harmonic.write(int(HARMONIC_ID_2))
put_id_offset(1, float(OFFSET_ID_1)) #offset on ID1
put_id_offset(2, float(OFFSET_ID_2)) #offset on ID2
diff --git a/script/test/Diagnostics.py b/script/test/Diagnostics.py
new file mode 100644
index 0000000..3bb8659
--- /dev/null
+++ b/script/test/Diagnostics.py
@@ -0,0 +1,89 @@
+from collections import OrderedDict
+
+diag_channels = { \
+ #"photon energy": "X11MA-PGM:rbkenergy", \
+ #"grating number": "X11MA-PGM:grating", \
+ #"cff value": "X11MA-PGM:rbkcff", \
+ "diffraction order": "X11MA-PGM:difforder0", \
+ #"exit slit size":"X11MA-OP2-SL:TRY.VAL", \
+ "front end size":"X11MA-FE-DSAPER", \
+ "status fast shutter":"X11MA-VME-ES1:FAST-SHTR", \
+ "girder x": "X11MA-HG:X1", \
+ "girder y": "X11MA-HG:Y1", \
+ "girder z": "X11MA-HG:Z1", \
+ "girder pitch": "X11MA-HG:PITCH1", \
+ "girder yaw": "X11MA-HG:YAW1", \
+ "girder roll set": "X11MA-HG:ROLL_SET", \
+ "CMU ox": "X11MA-OP-CM:ox", \
+ "CMU oy": "X11MA-OP-CM:oy", \
+ "CMU oz": "X11MA-OP-CM:oz", \
+ "CMU oRx": "X11MA-OP-CM:oRx", \
+ "CMU oRy": "X11MA-OP-CM:oRy", \
+ "CMU oRz": "X11MA-OP-CM:oRz", \
+ "CMU TRB": "X11MA-OP2-CM:TRB.RBV", \
+ #"mode": "X11PHS-E:OPT", \
+ #"id1 mode": "X11MA-ID1:MODE", \
+ #"id1 offset": "X11MA-ID1:ENERGY-OFFS", \
+ #"id1 alpha": "X11MA-ID1:ALPHA", \
+ #"id1 harmonic": "X11MA-ID1:HARMONIC", \
+ "id1 gap": "X11MA-ID1-GAP:READ", \
+ "id1 shift": "X11MA-ID1-SHIFT:READ", \
+ #"id2 mode": "X11MA-ID2:MODE", \
+ #"id2 offset": "X11MA-ID2:ENERGY-OFFS", \
+ #"id2 alpha": "X11MA-ID2:ALPHA", \
+ #"id2 harmonic": "X11MA-ID2:HARMONIC", \
+ "id2 gap": "X11MA-ID2-GAP:READ", \
+ "id2 shift": "X11MA-ID2-SHIFT:READ", \
+ "keithley 10 IO": "X11Keithley1-read", \
+ #"ring current": "ARIDI-PCT:CURRENT", \
+ "PEEM high voltage": "X11MA-ES1-PEEM:UMON", \
+ "PEEM leakage current": "X11MA-ES1-PEEM:IMON", \
+ "Pressure in PEEM": "X11MA-ES1-MAIN:PRESSURE", \
+ "Pressure in Column": "X11MA-ES1-COLU:PRESSURE", \
+ "Sample temperature": "X11MA-ES1-SW:Pt100-T", \
+ "Pt100 resistance": "X11MA-ES1-SW:Pt100-R", \
+ "high voltage": "X11MA-ES1-SD1:cam1:HighVoltage_RBV", \
+ }
+
+diag_devices = {
+ "photon energy": energy_rbk, \
+ "grating number": Grating, \
+ "cff value": cff, \
+ "exit slit size": ES, \
+ "mode": energy_opt, \
+ "id1 mode": id1_mode, \
+ "id1 offset": id1_offset, \
+ "id1 alpha": id1_alpha, \
+ "id1 harmonic": id1_harmonic, \
+ "id2 mode": id2_mode, \
+ "id2 offset": id2_offset, \
+ "id2 alpha": id2_alpha, \
+ "id2 harmonic": id2_harmonic, \
+ "ring current": machine_cur, \
+ }
+
+
+def get_diags():
+ ret = {}
+ for k,v in diag_devices.items():
+ try:
+ ret[k]=str(v.read())
+ except:
+ ret[k]="Error: " + sys.exc_info()[1]
+ for k,v in diag_channels.items():
+ try:
+ ret[k]=caget(v,'s')
+ except:
+ ret[k]="Error: " + sys.exc_info()[1]
+ ret["exposure time"] = str(eiger.getExposure())
+ return OrderedDict(sorted(ret.items(), key=lambda i: i[0].lower()))
+
+def print_diags():
+ diags = get_diags()
+ for k in diags.keys():
+ print k + ": " + diags[k]
+
+
+#- exposure time
+#- mode: normal or tune/detune
+