diff --git a/plugins/EnergyScan.form b/plugins/EnergyScan.form index 5524cdf..2e119e4 100644 --- a/plugins/EnergyScan.form +++ b/plugins/EnergyScan.form @@ -156,7 +156,7 @@ - + @@ -169,7 +169,7 @@ - + @@ -182,7 +182,7 @@ - + @@ -233,8 +233,10 @@ - + + + diff --git a/plugins/EnergyScan.java b/plugins/EnergyScan.java index 1b74e32..d9d4aa0 100644 --- a/plugins/EnergyScan.java +++ b/plugins/EnergyScan.java @@ -24,6 +24,7 @@ import ch.psi.pshell.plot.Plot; import ch.psi.pshell.ui.Panel; import java.io.IOException; import java.util.logging.Logger; +import javax.swing.SwingUtilities; /** * @@ -33,16 +34,17 @@ public class EnergyScan extends Panel { public EnergyScan() { initComponents(); } - + long start; ChannelDouble k1; ChannelDouble k2; ChannelDouble k3; ChannelDouble energy; - + ChannelInteger otf_start; double[] offsets = new double[4]; double energyCache = 0; + boolean restart; @Override public void onInitialize(int runCount) { @@ -51,31 +53,35 @@ public class EnergyScan extends Panel { k1 = (ChannelDouble) getController().getDevicePool().getByName("keithley_1a"); k2 = (ChannelDouble) getController().getDevicePool().getByName("keithley_2a"); k3 = (ChannelDouble) getController().getDevicePool().getByName("keithley_3a"); - energy= (ChannelDouble) getController().getDevicePool().getByName("energy"); + energy = (ChannelDouble) getController().getDevicePool().getByName("energy"); + otf_start = (ChannelInteger) getController().getDevicePool().getByName("otf_start"); - for (Device dev :new Device[]{energy}){ + for (Device dev : new Device[]{energy}) { dev.addListener(new DeviceAdapter() { @Override public void onValueChanged(Device device, Object value, Object former) { try { - if (Math.abs(energyCache - ((Double)value)) > 0.1) { - if (radioK3.isSelected()) + if (Math.abs(energyCache - ((Double) value)) > 0.1) { + if (radioK3.isSelected()) { k3.update(); - else + } else { k1.update(); + } k2.update(); - energyCache = (Double)value; - update(); + energyCache = (Double) value; + if (otf_start.take() == 1) { + update(); + } } } catch (Exception ex) { Logger.getLogger(EnergyScan.class.getName()).log(Level.SEVERE, null, ex); - } + } } }); } - + start = System.currentTimeMillis(); - + update(); } @@ -88,16 +94,25 @@ public class EnergyScan extends Panel { public void onExecutedFile(String fileName, Object result) { } + boolean otf; @Override protected void doUpdate() { + if ((otf_start.take()== 1) && !otf){ + try { + startPlot(); + } catch (Exception ex) { + Logger.getLogger(EnergyScan.class.getName()).log(Level.SEVERE, null, ex); + } + } + otf = otf_start.take() > 0; plot(); } void stopScan() { - try{ + try { getLogger().info("Stopping scan"); evalAsync("caput('START', 'STOP')"); - } catch (Exception ex){ + } catch (Exception ex) { getLogger().log(Level.WARNING, null, ex); } } @@ -105,7 +120,7 @@ public class EnergyScan extends Panel { Path getConfigFile() { return Paths.get(getController().getSetup().getConfigPath(), "energy_scan.properties"); } - + LinePlotBase scanPlot; LinePlotSeries scanSeries; @@ -129,10 +144,10 @@ public class EnergyScan extends Panel { void plot() { try { - if ((scanPlot != null) && (scanSeries != null) && scanPlot.isShowing() ) { - //if ((scanPlot != null) && (scanSeries != null) && scanPlot.isShowing() && (count != null)) { - double x = energy.take(); - double y = k2.take() / ((radioK3.isSelected()) ? k3.take() : k1.take()); + if ((scanPlot != null) && (scanSeries != null) && scanPlot.isShowing()) { + //if ((scanPlot != null) && (scanSeries != null) && scanPlot.isShowing() && (count != null)) { + double x = energy.take(); + double y = k2.take() / ((radioK3.isSelected()) ? k3.take() : k1.take()); scanSeries.appendData(x, y); } @@ -142,7 +157,6 @@ public class EnergyScan extends Panel { } } - void run() throws Exception { HashMap args = new HashMap(); Double e1 = (Double) spinnerE1.getValue(); @@ -150,24 +164,22 @@ public class EnergyScan extends Panel { args.put("E1", e1); args.put("E2", e2); args.put("TIME", (Double) spinnerTime.getValue()); - args.put("DELAY", (Double) spinnerDelay.getValue()); + args.put("DELAY", (Double) spinnerDelay.getValue()); args.put("OFFSET1", (Double) spinnerOffset1.getValue()); args.put("OFFSET2", (Double) spinnerOffset2.getValue()); args.put("PREFIX", textPrefix.getText()); args.put("RUNTYPE", comboRunType.getSelectedItem().toString()); - - buttonAbort.setEnabled(true); - runAsync("EnergyScan", args).handle((ok, ex) -> { - try{ + runAsync("EnergyScan", args).handle((ok, ex) -> { + try { buttonAbort.setEnabled(false); if (ex != null) { throw ex; } else { - } - } catch (Throwable t){ + } + } catch (Throwable t) { getLogger().log(Level.WARNING, null, ex); //showException((Exception)ex); } @@ -221,17 +233,17 @@ public class EnergyScan extends Panel { jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel1.setText("E1:"); - spinnerE1.setModel(new javax.swing.SpinnerNumberModel(690.0d, 0.0d, 9999.0d, 1.0d)); + spinnerE1.setModel(new javax.swing.SpinnerNumberModel(680.0d, 0.0d, 9999.0d, 1.0d)); jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel2.setText("E2:"); - spinnerE2.setModel(new javax.swing.SpinnerNumberModel(755.0d, 0.0d, 9999.0d, 1.0d)); + spinnerE2.setModel(new javax.swing.SpinnerNumberModel(750.0d, 0.0d, 9999.0d, 1.0d)); jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel3.setText("Time(min):"); - spinnerTime.setModel(new javax.swing.SpinnerNumberModel(3.0d, 0.0d, 60.0d, 1.0d)); + spinnerTime.setModel(new javax.swing.SpinnerNumberModel(2.0d, 0.0d, 60.0d, 1.0d)); jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel4.setText("Delay(s):"); @@ -250,7 +262,7 @@ public class EnergyScan extends Panel { jLabel11.setText("Run Type:"); - comboRunType.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "+/-" })); + comboRunType.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "+/-", "+", "-" })); jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel9.setText("Prefix:"); diff --git a/script/EnergyScan.py b/script/EnergyScan.py index b2cd8cb..9fbe339 100644 --- a/script/EnergyScan.py +++ b/script/EnergyScan.py @@ -60,7 +60,7 @@ time.sleep(1.0) wait_channel(OTF_DONE, 1, type = 'i') - open_vg10() +open_vg10() for rounds in [1,2]: caput(OTF_E1, E1)