Closedown

This commit is contained in:
2020-06-18 09:11:56 +02:00
parent a6366dbdca
commit 17b9e6b618
3 changed files with 402 additions and 63 deletions

View File

@@ -20,21 +20,24 @@
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace min="-2" max="-2" attributes="0"/>
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jPanel3" max="32767" attributes="0"/>
<Component id="jPanel1" alignment="1" max="32767" attributes="0"/>
<Component id="jPanel2" alignment="0" max="32767" attributes="0"/>
</Group>
<EmptySpace min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<Component id="jPanel1" max="32767" attributes="0"/>
<EmptySpace min="-2" max="-2" attributes="0"/>
<Component id="jPanel1" min="-2" pref="157" max="-2" attributes="0"/>
<EmptySpace type="unrelated" max="32767" attributes="0"/>
<Component id="jPanel2" min="-2" max="-2" attributes="0"/>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Component id="jPanel3" min="-2" max="-2" attributes="0"/>
<EmptySpace min="-2" max="-2" attributes="0"/>
</Group>
@@ -62,7 +65,7 @@
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="comboSetup" linkSize="6" alignment="1" min="-2" max="-2" attributes="0"/>
<Component id="comboElement" linkSize="6" alignment="1" min="-2" max="-2" attributes="0"/>
<Component id="buttonConfigure" linkSize="6" alignment="1" min="-2" max="-2" attributes="0"/>
<Component id="comboPolarizarion" linkSize="6" alignment="1" min="-2" max="-2" attributes="0"/>
</Group>
@@ -85,9 +88,9 @@
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<EmptySpace max="32767" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="comboSetup" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="comboElement" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel10" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="spinnerEnergy" alignment="3" min="-2" max="-2" attributes="0"/>
@@ -112,20 +115,20 @@
<Component id="jLabel3" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="spinnerStep" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace pref="135" max="32767" attributes="0"/>
<EmptySpace min="-2" pref="150" max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JComboBox" name="comboSetup">
<Component class="javax.swing.JComboBox" name="comboElement">
<Properties>
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
<StringArray count="0"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="comboSetupActionPerformed"/>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="comboElementActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="buttonConfigure">
@@ -149,15 +152,17 @@
<Component class="javax.swing.JComboBox" name="comboPolarizarion">
<Properties>
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
<StringArray count="5">
<StringItem index="0" value="Manual"/>
<StringItem index="1" value="CIRC +"/>
<StringItem index="2" value="CIRC -"/>
<StringItem index="3" value="LINEAR H"/>
<StringItem index="4" value="LINEAR V"/>
<StringArray count="4">
<StringItem index="0" value="C+"/>
<StringItem index="1" value="C-"/>
<StringItem index="2" value="LH"/>
<StringItem index="3" value="LV"/>
</StringArray>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="comboPolarizarionActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
@@ -250,5 +255,138 @@
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="jPanel2">
<Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
<TitledBorder title="Offset"/>
</Border>
</Property>
</Properties>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace min="-2" pref="23" max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
<Component id="jLabel5" alignment="1" min="-2" max="-2" attributes="0"/>
<Component id="jLabel6" alignment="1" min="-2" max="-2" attributes="0"/>
<Component id="jLabel4" alignment="1" min="-2" max="-2" attributes="0"/>
<Component id="jLabel7" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<Group type="103" groupAlignment="0" max="-2" attributes="0">
<Component id="textLastOffset" pref="140" max="32767" attributes="0"/>
<Component id="textTimestamp" max="32767" attributes="0"/>
</Group>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Component id="buttonSet" linkSize="10" min="-2" max="-2" attributes="0"/>
</Group>
<Component id="valueOffset" min="-2" pref="140" max="-2" attributes="0"/>
<Group type="102" attributes="0">
<Component id="textScanReturn" min="-2" pref="140" max="-2" attributes="0"/>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Component id="buttonApply" linkSize="10" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
<EmptySpace pref="138" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace min="-2" max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLabel6" alignment="1" min="-2" max="-2" attributes="0"/>
<Component id="valueOffset" alignment="1" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="jLabel4" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="textLastOffset" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="buttonSet" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="jLabel5" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="textTimestamp" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="textScanReturn" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel7" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="buttonApply" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JLabel" name="jLabel5">
<Properties>
<Property name="text" type="java.lang.String" value="Timestamp:"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="textLastOffset">
<Properties>
<Property name="editable" type="boolean" value="false"/>
<Property name="horizontalAlignment" type="int" value="0"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="textTimestamp">
<Properties>
<Property name="editable" type="boolean" value="false"/>
<Property name="horizontalAlignment" type="int" value="0"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel4">
<Properties>
<Property name="text" type="java.lang.String" value="Persisted Value:"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="buttonSet">
<Properties>
<Property name="text" type="java.lang.String" value="Set"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="buttonSetActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="jLabel6">
<Properties>
<Property name="text" type="java.lang.String" value="Current:"/>
</Properties>
</Component>
<Component class="ch.psi.pshell.swing.DeviceValuePanel" name="valueOffset">
<Properties>
<Property name="deviceName" type="java.lang.String" value="pol_offset"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel7">
<Properties>
<Property name="text" type="java.lang.String" value="Scan Return:"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="textScanReturn">
<Properties>
<Property name="editable" type="boolean" value="false"/>
<Property name="horizontalAlignment" type="int" value="0"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="buttonApply">
<Properties>
<Property name="text" type="java.lang.String" value="Apply"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="buttonApplyActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Form>

View File

@@ -3,12 +3,16 @@
*/
import ch.psi.pshell.core.Context.ContextStateException;
import ch.psi.pshell.epics.Epics;
import ch.psi.pshell.ui.Panel;
import ch.psi.utils.Chrono;
import ch.psi.utils.State;
import ch.psi.utils.swing.DsvEditor;
import ch.psi.utils.swing.Editor.EditorDialog;
import ch.psi.utils.swing.SwingUtils;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -29,6 +33,11 @@ public class HarmonicScan extends Panel {
@Override
public void onInitialize(int runCount) {
super.onInitialize(runCount);
try{
setElement();
} catch (Exception ex){
SwingUtils.showException(this, ex);
}
}
@Override
@@ -50,16 +59,20 @@ public class HarmonicScan extends Panel {
return Paths.get(getContext().getSetup().getConfigPath(), "harmonic_scan_energies.properties");
}
Path getOffsetTableFile() {
return Paths.get(getContext().getSetup().getConfigPath(), "harmonic_scan_offsets.properties");
}
@Override
public void setEnabled(boolean value) {
buttonExecute.setEnabled(value);
comboSetup.setEnabled(value);
comboElement.setEnabled(value);
comboPolarizarion.setEnabled(value);
buttonConfigure.setEnabled(value);
}
void loadConfig() {
DefaultComboBoxModel model = (DefaultComboBoxModel) comboSetup.getModel();
DefaultComboBoxModel model = (DefaultComboBoxModel) comboElement.getModel();
model.removeAllElements();
try {
for (String line : Files.readAllLines(getEnergyTableFile())) {
@@ -74,16 +87,29 @@ public class HarmonicScan extends Panel {
}
}
void setElement() throws Exception {
void setElement() throws IOException {
Properties prop = new Properties();
prop.load(new FileInputStream(getEnergyTableFile().toFile()));
String selection = comboSetup.getSelectedItem().toString();
String val = prop.getProperty(selection);
String element = comboElement.getSelectedItem().toString();
String val = prop.getProperty(element);
String[] tokens = val.split(" ");
if (tokens.length != 1) {
throw new Exception("Invalid file format: " + tokens.length);
throw new IOException("Invalid file format: " + tokens.length);
}
spinnerEnergy.setValue(Double.valueOf(tokens[0].trim()));
getOffsetTable();
}
void setPolarizarion() throws IOException {
getOffsetTable();
}
String getOffsetEntry(){
String element = comboElement.getSelectedItem().toString().trim();
String polarization = comboPolarizarion.getSelectedItem().toString().trim();
return element + "_" + polarization;
}
EditorDialog dlgConfig;
@@ -100,6 +126,41 @@ public class HarmonicScan extends Panel {
showWindow(dlgConfig);
}
void getOffsetTable() throws IOException{
textLastOffset.setText("");
textTimestamp.setText("");
try{
Properties prop = new Properties();
prop.load(new FileInputStream(getOffsetTableFile().toFile()));
String val = prop.getProperty(getOffsetEntry());
if ((val!=null)&& !val.isEmpty()){
String[] tokens = val.split(" ");
if (tokens.length != 3) {
throw new IOException("Invalid file format: " + tokens.length);
}
textLastOffset.setText(Double.valueOf(tokens[0].trim()).toString());
textTimestamp.setText(tokens[1].trim() + " " + tokens[2].trim());
}
} catch (FileNotFoundException ex){
}
}
void setOffsetTable(double offset) throws IOException{
Properties prop = new Properties();
String timestamp = Chrono.getTimeStr(System.currentTimeMillis(), "dd.MM.YY HH:mm") ;
prop.setProperty(getOffsetEntry(), offset + " " + timestamp );
try (FileOutputStream out = new FileOutputStream(getOffsetTableFile().toFile())) {
prop.store(out, null);
}
textLastOffset.setText(String.valueOf(offset));
textTimestamp.setText(timestamp);
}
void run() throws ContextStateException {
HashMap args = new HashMap();
args.put("ID_ENERGY", (Double) spinnerEnergy.getValue());
@@ -107,7 +168,12 @@ public class HarmonicScan extends Panel {
args.put("STEP", (Double) spinnerStep.getValue());
args.put("MODE ", comboPolarizarion.getSelectedItem().toString());
runAsync("HarmonicScan", args);
runAsync("HarmonicScan", args).handle((ret, ex)-> {
if ((ex == null) && (ret!=null)){
textScanReturn.setText(String.valueOf(ret));
}
return ret;
});
}
@@ -117,7 +183,7 @@ public class HarmonicScan extends Panel {
buttonGroupPlot = new javax.swing.ButtonGroup();
jPanel1 = new javax.swing.JPanel();
comboSetup = new javax.swing.JComboBox();
comboElement = new javax.swing.JComboBox();
buttonConfigure = new javax.swing.JButton();
jLabel10 = new javax.swing.JLabel();
jLabel11 = new javax.swing.JLabel();
@@ -131,12 +197,23 @@ public class HarmonicScan extends Panel {
jPanel3 = new javax.swing.JPanel();
buttonExecute = new javax.swing.JButton();
buttonAbort = new javax.swing.JButton();
jPanel2 = new javax.swing.JPanel();
jLabel5 = new javax.swing.JLabel();
textLastOffset = new javax.swing.JTextField();
textTimestamp = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
buttonSet = new javax.swing.JButton();
jLabel6 = new javax.swing.JLabel();
valueOffset = new ch.psi.pshell.swing.DeviceValuePanel();
jLabel7 = new javax.swing.JLabel();
textScanReturn = new javax.swing.JTextField();
buttonApply = new javax.swing.JButton();
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Setup"));
comboSetup.addActionListener(new java.awt.event.ActionListener() {
comboElement.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
comboSetupActionPerformed(evt);
comboElementActionPerformed(evt);
}
});
@@ -151,7 +228,12 @@ public class HarmonicScan extends Panel {
jLabel11.setText("Polarization:");
comboPolarizarion.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Manual", "CIRC +", "CIRC -", "LINEAR H", "LINEAR V" }));
comboPolarizarion.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "C+", "C-", "LH", "LV" }));
comboPolarizarion.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
comboPolarizarionActionPerformed(evt);
}
});
jLabel1.setText("Energy");
@@ -176,7 +258,7 @@ public class HarmonicScan extends Panel {
.addComponent(jLabel11, javax.swing.GroupLayout.Alignment.TRAILING))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(comboSetup, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(comboElement, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(buttonConfigure, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(comboPolarizarion, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(80, 80, 80)
@@ -189,19 +271,19 @@ public class HarmonicScan extends Panel {
.addComponent(spinnerHalfwidth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(spinnerStep, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(spinnerEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap(20, Short.MAX_VALUE))
);
jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonConfigure, comboPolarizarion, comboSetup});
jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonConfigure, comboElement, comboPolarizarion});
jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerEnergy, spinnerHalfwidth, spinnerStep});
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(comboSetup, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(comboElement, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel10)
.addComponent(jLabel1)
.addComponent(spinnerEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
@@ -220,7 +302,7 @@ public class HarmonicScan extends Panel {
.addComponent(comboPolarizarion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3)
.addComponent(spinnerStep, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(135, Short.MAX_VALUE))
.addGap(150, 150, 150))
);
jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Scan Control"));
@@ -260,6 +342,94 @@ public class HarmonicScan extends Panel {
.addContainerGap())
);
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Offset"));
jLabel5.setText("Timestamp:");
textLastOffset.setEditable(false);
textLastOffset.setHorizontalAlignment(javax.swing.JTextField.CENTER);
textTimestamp.setEditable(false);
textTimestamp.setHorizontalAlignment(javax.swing.JTextField.CENTER);
jLabel4.setText("Persisted Value:");
buttonSet.setText("Set");
buttonSet.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonSetActionPerformed(evt);
}
});
jLabel6.setText("Current:");
valueOffset.setDeviceName("pol_offset");
jLabel7.setText("Scan Return:");
textScanReturn.setEditable(false);
textScanReturn.setHorizontalAlignment(javax.swing.JTextField.CENTER);
buttonApply.setText("Apply");
buttonApply.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonApplyActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(23, 23, 23)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel5)
.addComponent(jLabel6)
.addComponent(jLabel4)
.addComponent(jLabel7))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(textLastOffset, javax.swing.GroupLayout.DEFAULT_SIZE, 140, Short.MAX_VALUE)
.addComponent(textTimestamp))
.addGap(18, 18, 18)
.addComponent(buttonSet))
.addComponent(valueOffset, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(textScanReturn, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(buttonApply)))
.addContainerGap(138, Short.MAX_VALUE))
);
jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonApply, buttonSet});
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel6, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(valueOffset, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(textLastOffset, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(buttonSet))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel5)
.addComponent(textTimestamp, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(textScanReturn, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7)
.addComponent(buttonApply))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
@@ -268,14 +438,17 @@ public class HarmonicScan extends Panel {
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 157, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
@@ -283,6 +456,7 @@ public class HarmonicScan extends Panel {
private void buttonExecuteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonExecuteActionPerformed
try {
textScanReturn.setText("");
run();
} catch (Exception ex) {
SwingUtils.showException(this, ex);
@@ -297,13 +471,13 @@ public class HarmonicScan extends Panel {
}
}//GEN-LAST:event_buttonAbortActionPerformed
private void comboSetupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboSetupActionPerformed
private void comboElementActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboElementActionPerformed
try {
setElement();
} catch (Exception ex) {
SwingUtils.showException(this, ex);
}
}//GEN-LAST:event_comboSetupActionPerformed
}//GEN-LAST:event_comboElementActionPerformed
private void buttonConfigureActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonConfigureActionPerformed
try {
@@ -313,22 +487,57 @@ public class HarmonicScan extends Panel {
}
}//GEN-LAST:event_buttonConfigureActionPerformed
private void buttonSetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonSetActionPerformed
try {
String ret = SwingUtils.getString(this, "Enter persisted value for " + getOffsetEntry(), textLastOffset.getText());
if ((ret!=null) && (!ret.trim().isEmpty()) ){
setOffsetTable(Double.valueOf(ret));
}
} catch (Exception ex) {
SwingUtils.showException(this, ex);
}
}//GEN-LAST:event_buttonSetActionPerformed
private void comboPolarizarionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboPolarizarionActionPerformed
try {
setPolarizarion();
} catch (Exception ex) {
SwingUtils.showException(this, ex);
}
}//GEN-LAST:event_comboPolarizarionActionPerformed
private void buttonApplyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonApplyActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_buttonApplyActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton buttonAbort;
private javax.swing.JButton buttonApply;
private javax.swing.JButton buttonConfigure;
private javax.swing.JButton buttonExecute;
private javax.swing.ButtonGroup buttonGroupPlot;
private javax.swing.JButton buttonSet;
private javax.swing.JComboBox comboElement;
private javax.swing.JComboBox comboPolarizarion;
private javax.swing.JComboBox comboSetup;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JSpinner spinnerEnergy;
private javax.swing.JSpinner spinnerHalfwidth;
private javax.swing.JSpinner spinnerStep;
private javax.swing.JTextField textLastOffset;
private javax.swing.JTextField textScanReturn;
private javax.swing.JTextField textTimestamp;
private ch.psi.pshell.swing.DeviceValuePanel valueOffset;
// End of variables declaration//GEN-END:variables
}

View File

@@ -14,35 +14,27 @@ try:
wait_device(energy_done, 1 )
sensors = [signal_i0, signal_tey, 'ca://X07MA-PC-K428:2:getTotalGain', energy]
if MODE != "Manual":
POL = MODE
ALPHA = None
if MODE == "LINEAR H":
POL = "LINEAR"
ALPHA = 0
elif MODE == "LINEAR V":
POL = "LINEAR"
ALPHA = 90
caput('X07MA-ID:MODE', POL)
time.sleep(1.0)
if POL == 'LINEAR':
caput('X07MA-ID:ALPHA', ALPHA)
wait_channel('X07MA-ID:DONE', 'DONE', type = 's')
if MODE =="C+":
set_pol_cplus()
if MODE =="C-":
set_pol_cminus()
if MODE == "LH":
set_pol_lin(0.0)
elif MODE == "LV":
set_pol_lin(90.0)
else:
sensors = [sin, energy]
def before(position, scan):
#wait_device(energy_done, 1 )
sleep( 0.3 ) # Settling time
#ret = lscan(energy, [signal_i0, signal_tey, 'ca://X07MA-PC-K428:2:getTotalGain', 'ca://X07MA-ID:MODE?type=d', pol_angle, current, energy, pol_offset, 'ca://X07MA-ID-GAP:READ','ca://X07MA-ID-SHIFT:READ'], ID_ENERGY-HALFWIDTH, ID_ENERGY+HALFWIDTH, STEP, before_read = before)
ret = lscan(energy, sensors, ID_ENERGY-HALFWIDTH, ID_ENERGY+HALFWIDTH, STEP, before_read = before)
ret = lscan(energy, sensors, ID_ENERGY-HALFWIDTH, ID_ENERGY+HALFWIDTH, STEP, latency = 0.3)
xdata = ret.getPositions(0)
ydata = ret.getReadable(0)
ymin = min(ydata)
xminmin = xdata[ydata.index(min(ydata))]
print "Emin=",xminmin,"ymin = ",ymin
e0 = xdata[ydata.index(min(ydata))]
new_offset =ID_ENERGY e0 + pol_offset.take()
set_return(new_offset);
except:
print("Aborting...")