From 0cc8ec5c9ef4ab5fedcad05bd8b74f2523a287c0 Mon Sep 17 00:00:00 2001 From: sfop Date: Tue, 25 Apr 2017 13:59:03 +0200 Subject: [PATCH] Startup --- devices/CurrentCamera.properties | 22 +- devices/Phase.properties | 4 +- plugins/GunScan.form | 58 +++--- plugins/GunScan.java | 197 +++++++++--------- plugins/SchottkyScan.form | 40 ++-- plugins/SchottkyScan.java | 168 +++++++-------- plugins/WireScan.form | 159 +++++++++++---- plugins/WireScan.java | 338 +++++++++++++++++++++++++------ script/Devices/Elements.py | 24 ++- script/Diagnostics/WireScan.py | 11 +- script/RFscan/GunScan.py | 36 ++-- script/RFscan/SchottkyScan.py | 9 +- 12 files changed, 683 insertions(+), 383 deletions(-) diff --git a/devices/CurrentCamera.properties b/devices/CurrentCamera.properties index 1ea3823..19c35b7 100644 --- a/devices/CurrentCamera.properties +++ b/devices/CurrentCamera.properties @@ -1,16 +1,16 @@ -#Fri Apr 21 15:05:25 CEST 2017 +#Tue Apr 25 13:06:46 CEST 2017 colormap=Flame colormapAutomatic=false -colormapMax=NaN -colormapMin=NaN +colormapMax=318.0 +colormapMin=9.0 flipHorizontally=false flipVertically=false grayscale=false -imageHeight=1680 -imageWidth=1744 +imageHeight=2160 +imageWidth=2560 invert=false -regionStartX=433 -regionStartY=241 +regionStartX=1 +regionStartY=1 rescaleFactor=1.0 rescaleOffset=0.0 roiHeight=-1 @@ -21,9 +21,9 @@ rotation=0.0 rotationCrop=false scale=1.0 serverURL=localhost\:10000 -spatialCalOffsetX=-1057.4895329398094 -spatialCalOffsetY=-1420.5549062527236 -spatialCalScaleX=-8.510638153514359 -spatialCalScaleY=-8.235817137431614 +spatialCalOffsetX=-1057.0 +spatialCalOffsetY=-1420.0 +spatialCalScaleX=-8.51063829787234 +spatialCalScaleY=-8.559201141226819 spatialCalUnits=mm transpose=false diff --git a/devices/Phase.properties b/devices/Phase.properties index a32b46a..8706a2d 100644 --- a/devices/Phase.properties +++ b/devices/Phase.properties @@ -1,5 +1,5 @@ -#Tue Apr 18 08:29:45 CEST 2017 -maxValue=180.0 +#Tue Apr 25 10:33:55 CEST 2017 +maxValue=360.0 minValue=-180.0 offset=0.0 precision=3 diff --git a/plugins/GunScan.form b/plugins/GunScan.form index 59f1fe7..283a5ed 100644 --- a/plugins/GunScan.form +++ b/plugins/GunScan.form @@ -29,8 +29,8 @@ - - + + @@ -45,9 +45,9 @@ - + - + @@ -61,7 +61,7 @@ - + @@ -80,27 +80,27 @@ - + - + - + - + - + @@ -115,27 +115,27 @@ - + - + - + - + - + @@ -143,12 +143,12 @@ - + - + @@ -163,7 +163,7 @@ - + @@ -178,7 +178,7 @@ - + @@ -193,7 +193,7 @@ - + @@ -223,7 +223,7 @@ - + @@ -239,12 +239,12 @@ - + - + @@ -259,12 +259,12 @@ - + - + @@ -275,14 +275,14 @@ - + - + @@ -290,14 +290,14 @@ - + - + diff --git a/plugins/GunScan.java b/plugins/GunScan.java index f6a457c..d625175 100644 --- a/plugins/GunScan.java +++ b/plugins/GunScan.java @@ -27,27 +27,19 @@ public class GunScan extends Panel { double energy0; public GunScan() { - initComponents(); + initComponents(); plot.setStyle(LinePlotJFree.Style.ErrorY); plot.addSeries(seriesEnergy); plot.addSeries(seriesEnergySpread); plot.getAxis(Plot.AxisId.X).setLabel("Gun Phase"); plot.getAxis(Plot.AxisId.Y).setLabel("MeV"); plot.setLegendVisible(true); - setPersistedComponents(SwingUtils.getComponentsByType(panelPars, JSpinner.class)); + setPersistedComponents(SwingUtils.getComponentsByType(panelScanPars, JSpinner.class)); } //Overridable callbacks @Override public void onInitialize(int runCount) { - try { - spinnerDispersion.setValue(Epics.get("SINBD01-DSCR010:DISPERSION-SIM", Double.class)); - spinnerEnergy.setValue(Epics.get("SINBD01-DSCR010:ENERGY-SIM", Double.class)); - } catch (Exception ex) { - ex.printStackTrace(); - showException(ex); - } - } @Override @@ -94,19 +86,18 @@ public class GunScan extends Panel { @Override public void onNewRecord(Scan scan, ScanRecord record) { if ("GunScan".equals(getContext().getExecutionPars().getName())) { - double phase = (Double) record.getPositions()[0]; - double energy_mean = ((DescStatsDouble) record.getValues()[0]).getMean(); - double energy_std = ((DescStatsDouble) record.getValues()[0]).getStdev(); - double energy_sp_mean = ((DescStatsDouble) record.getValues()[1]).getMean(); - double energy_sp_std = ((DescStatsDouble) record.getValues()[1]).getStdev(); - seriesEnergy.appendData(phase, - energy0 * (1 +energy_mean / 1e6 / dispersion), + double phase = (Double) record.getPositions()[0]; + double energy_mean = ((DescStatsDouble) record.getValues()[0]).getMean(); + double energy_std = ((DescStatsDouble) record.getValues()[0]).getStdev(); + double energy_spread_mean = ((DescStatsDouble) record.getValues()[1]).getMean(); + double energy_spread_std = ((DescStatsDouble) record.getValues()[1]).getStdev(); + seriesEnergy.appendData(phase, + energy0 * (1 + energy_mean / 1e6 / dispersion), energy0 * (energy_std / 1e6 / dispersion) ); - seriesEnergySpread.appendData(phase, - energy0 * (energy_sp_mean / 1e6 / dispersion), - energy0 * (energy_sp_std / 1e6 / dispersion) + energy0 * (energy_spread_mean / 1e6 / dispersion), + energy0 * (energy_spread_std / 1e6 / dispersion) ); } } @@ -120,48 +111,48 @@ public class GunScan extends Panel { // //GEN-BEGIN:initComponents private void initComponents() { - panelPars = new javax.swing.JPanel(); - startLabel = new javax.swing.JLabel(); - stopLabel = new javax.swing.JLabel(); + panelScanPars = new javax.swing.JPanel(); + labelStart = new javax.swing.JLabel(); + labelStop = new javax.swing.JLabel(); spinnerStep = new javax.swing.JSpinner(); - stepLabel = new javax.swing.JLabel(); + labelStep = new javax.swing.JLabel(); spinnerStart = new javax.swing.JSpinner(); - samplesLabel = new javax.swing.JLabel(); + labelSamples = new javax.swing.JLabel(); spinnerSamples = new javax.swing.JSpinner(); - latencyLabel = new javax.swing.JLabel(); + labelLatency = new javax.swing.JLabel(); spinnerLatency = new javax.swing.JSpinner(); spinnerStop = new javax.swing.JSpinner(); - jPanel2 = new javax.swing.JPanel(); + panelBeamPars = new javax.swing.JPanel(); spinnerDispersion = new javax.swing.JSpinner(); - energyLabel = new javax.swing.JLabel(); + labelEnergy = new javax.swing.JLabel(); spinnerEnergy = new javax.swing.JSpinner(); - dispersionLabel = new javax.swing.JLabel(); + labelDispersion = new javax.swing.JLabel(); plot = new ch.psi.pshell.plot.LinePlotJFree(); buttonStart = new javax.swing.JButton(); buttonAbort = new javax.swing.JButton(); setPreferredSize(new java.awt.Dimension(737, 445)); - panelPars.setBorder(javax.swing.BorderFactory.createTitledBorder("Scan Parameters")); + panelScanPars.setBorder(javax.swing.BorderFactory.createTitledBorder("Scan Parameters")); - startLabel.setText("Start:"); + labelStart.setText("Start:"); - stopLabel.setText("Stop:"); + labelStop.setText("Stop:"); spinnerStep.setModel(new javax.swing.SpinnerNumberModel(5.0d, 1.0d, 90.0d, 1.0d)); spinnerStep.setPreferredSize(new java.awt.Dimension(64, 20)); - stepLabel.setText("Step:"); + labelStep.setText("Step:"); spinnerStart.setModel(new javax.swing.SpinnerNumberModel(0.0d, -180.0d, 360.0d, 1.0d)); spinnerStart.setPreferredSize(new java.awt.Dimension(64, 20)); - samplesLabel.setText("Nb Samples:"); + labelSamples.setText("Nb Samples:"); spinnerSamples.setModel(new javax.swing.SpinnerNumberModel(1.0d, 1.0d, 50.0d, 1.0d)); spinnerSamples.setPreferredSize(new java.awt.Dimension(64, 20)); - latencyLabel.setText("Latency:"); + labelLatency.setText("Latency:"); spinnerLatency.setModel(new javax.swing.SpinnerNumberModel(0.1d, 0.0d, 5.0d, 0.01d)); spinnerLatency.setPreferredSize(new java.awt.Dimension(64, 20)); @@ -170,101 +161,101 @@ public class GunScan extends Panel { spinnerStop.setMinimumSize(new java.awt.Dimension(53, 20)); spinnerStop.setPreferredSize(new java.awt.Dimension(64, 20)); - javax.swing.GroupLayout panelParsLayout = new javax.swing.GroupLayout(panelPars); - panelPars.setLayout(panelParsLayout); - panelParsLayout.setHorizontalGroup( - panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelParsLayout.createSequentialGroup() + javax.swing.GroupLayout panelScanParsLayout = new javax.swing.GroupLayout(panelScanPars); + panelScanPars.setLayout(panelScanParsLayout); + panelScanParsLayout.setHorizontalGroup( + panelScanParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelScanParsLayout.createSequentialGroup() .addContainerGap() - .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addGroup(panelParsLayout.createSequentialGroup() - .addComponent(latencyLabel) + .addGroup(panelScanParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(panelScanParsLayout.createSequentialGroup() + .addComponent(labelLatency) .addGap(2, 2, 2) .addComponent(spinnerLatency, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(panelParsLayout.createSequentialGroup() - .addComponent(stopLabel) + .addGroup(panelScanParsLayout.createSequentialGroup() + .addComponent(labelStop) .addGap(2, 2, 2) .addComponent(spinnerStop, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(panelParsLayout.createSequentialGroup() - .addComponent(startLabel) + .addGroup(panelScanParsLayout.createSequentialGroup() + .addComponent(labelStart) .addGap(2, 2, 2) .addComponent(spinnerStart, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(panelParsLayout.createSequentialGroup() - .addComponent(samplesLabel) + .addGroup(panelScanParsLayout.createSequentialGroup() + .addComponent(labelSamples) .addGap(2, 2, 2) .addComponent(spinnerSamples, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(panelParsLayout.createSequentialGroup() - .addComponent(stepLabel) + .addGroup(panelScanParsLayout.createSequentialGroup() + .addComponent(labelStep) .addGap(2, 2, 2) .addComponent(spinnerStep, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); - panelParsLayout.setVerticalGroup( - panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelParsLayout.createSequentialGroup() + panelScanParsLayout.setVerticalGroup( + panelScanParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelScanParsLayout.createSequentialGroup() .addContainerGap() - .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGroup(panelScanParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(spinnerStart, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(startLabel)) + .addComponent(labelStart)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGroup(panelScanParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(spinnerStop, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(stopLabel)) + .addComponent(labelStop)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGroup(panelScanParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(spinnerStep, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(stepLabel)) + .addComponent(labelStep)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGroup(panelScanParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(spinnerSamples, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(samplesLabel)) + .addComponent(labelSamples)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGroup(panelScanParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(spinnerLatency, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(latencyLabel)) + .addComponent(labelLatency)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); - jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Beam Parameters")); + panelBeamPars.setBorder(javax.swing.BorderFactory.createTitledBorder("Beam Parameters")); - spinnerDispersion.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.0d, 10.0d, 0.01d)); + spinnerDispersion.setModel(new javax.swing.SpinnerNumberModel(-0.32d, -100.0d, 100.0d, 0.01d)); spinnerDispersion.setPreferredSize(new java.awt.Dimension(64, 20)); - energyLabel.setText("Energy:"); + labelEnergy.setText("Energy:"); - spinnerEnergy.setModel(new javax.swing.SpinnerNumberModel(0.0d, 0.0d, 10000.0d, 0.1d)); + spinnerEnergy.setModel(new javax.swing.SpinnerNumberModel(7.1d, 0.0d, 100.0d, 0.1d)); spinnerEnergy.setPreferredSize(new java.awt.Dimension(64, 20)); - dispersionLabel.setText("Dispersion:"); + labelDispersion.setText("Dispersion:"); - javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); - jPanel2.setLayout(jPanel2Layout); - jPanel2Layout.setHorizontalGroup( - jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() + javax.swing.GroupLayout panelBeamParsLayout = new javax.swing.GroupLayout(panelBeamPars); + panelBeamPars.setLayout(panelBeamParsLayout); + panelBeamParsLayout.setHorizontalGroup( + panelBeamParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelBeamParsLayout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addComponent(energyLabel) + .addGroup(panelBeamParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(panelBeamParsLayout.createSequentialGroup() + .addComponent(labelEnergy) .addGap(0, 0, 0) .addComponent(spinnerEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(jPanel2Layout.createSequentialGroup() - .addComponent(dispersionLabel) + .addGroup(panelBeamParsLayout.createSequentialGroup() + .addComponent(labelDispersion) .addGap(0, 0, 0) .addComponent(spinnerDispersion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap()) ); - jPanel2Layout.setVerticalGroup( - jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() + panelBeamParsLayout.setVerticalGroup( + panelBeamParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelBeamParsLayout.createSequentialGroup() .addContainerGap() - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGroup(panelBeamParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(spinnerDispersion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(dispersionLabel)) + .addComponent(labelDispersion)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGroup(panelBeamParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(spinnerEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(energyLabel)) + .addComponent(labelEnergy)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); @@ -295,8 +286,8 @@ public class GunScan extends Panel { .addComponent(buttonStart) .addGap(34, 34, 34) .addComponent(buttonAbort)) - .addComponent(panelPars, 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)) + .addComponent(panelScanPars, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelBeamPars, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(plot, javax.swing.GroupLayout.DEFAULT_SIZE, 531, Short.MAX_VALUE) .addContainerGap()) @@ -308,9 +299,9 @@ public class GunScan extends Panel { .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(plot, javax.swing.GroupLayout.DEFAULT_SIZE, 419, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() - .addComponent(panelPars, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(panelScanPars, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(panelBeamPars, 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) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(buttonStart) @@ -318,13 +309,13 @@ public class GunScan extends Panel { .addGap(14, 14, 14)) ); - panelPars.getAccessibleContext().setAccessibleDescription(""); + panelScanPars.getAccessibleContext().setAccessibleDescription(""); }// //GEN-END:initComponents private void buttonStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonStartActionPerformed ArrayList parameters = new ArrayList(); - dispersion = (Double)spinnerDispersion.getValue(); - energy0 = (Double)spinnerEnergy.getValue(); + dispersion = (Double) spinnerDispersion.getValue(); + energy0 = (Double) spinnerEnergy.getValue(); parameters.add(spinnerStart.getValue()); parameters.add(spinnerStop.getValue()); parameters.add(spinnerStep.getValue()); @@ -337,7 +328,7 @@ public class GunScan extends Panel { if (ex != null) { getLogger().info("Exception executing scan: " + ex); } else { - + } return ret; }); @@ -357,13 +348,16 @@ public class GunScan extends Panel { // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton buttonAbort; private javax.swing.JButton buttonStart; - private javax.swing.JLabel dispersionLabel; - private javax.swing.JLabel energyLabel; - private javax.swing.JPanel jPanel2; - private javax.swing.JLabel latencyLabel; - private javax.swing.JPanel panelPars; + private javax.swing.JLabel labelDispersion; + private javax.swing.JLabel labelEnergy; + private javax.swing.JLabel labelLatency; + private javax.swing.JLabel labelSamples; + private javax.swing.JLabel labelStart; + private javax.swing.JLabel labelStep; + private javax.swing.JLabel labelStop; + private javax.swing.JPanel panelBeamPars; + private javax.swing.JPanel panelScanPars; private ch.psi.pshell.plot.LinePlotJFree plot; - private javax.swing.JLabel samplesLabel; private javax.swing.JSpinner spinnerDispersion; private javax.swing.JSpinner spinnerEnergy; private javax.swing.JSpinner spinnerLatency; @@ -371,8 +365,5 @@ public class GunScan extends Panel { private javax.swing.JSpinner spinnerStart; private javax.swing.JSpinner spinnerStep; private javax.swing.JSpinner spinnerStop; - private javax.swing.JLabel startLabel; - private javax.swing.JLabel stepLabel; - private javax.swing.JLabel stopLabel; // End of variables declaration//GEN-END:variables } diff --git a/plugins/SchottkyScan.form b/plugins/SchottkyScan.form index 45faca3..e6880af 100644 --- a/plugins/SchottkyScan.form +++ b/plugins/SchottkyScan.form @@ -28,7 +28,7 @@ - + @@ -88,24 +88,24 @@ - + - + - + - - + + @@ -123,27 +123,27 @@ - + - + - + - + - + @@ -159,13 +159,13 @@ - + - + @@ -178,13 +178,13 @@ - + - + @@ -204,7 +204,7 @@ - + @@ -240,7 +240,7 @@ - + @@ -255,7 +255,7 @@ - + @@ -266,7 +266,7 @@ - + @@ -275,7 +275,7 @@ - + diff --git a/plugins/SchottkyScan.java b/plugins/SchottkyScan.java index e12b797..a7aa7d7 100644 --- a/plugins/SchottkyScan.java +++ b/plugins/SchottkyScan.java @@ -12,6 +12,7 @@ import ch.psi.pshell.scan.Scan; import ch.psi.pshell.scan.ScanListener; import ch.psi.pshell.scan.ScanRecord; import ch.psi.pshell.ui.Panel; +import ch.psi.utils.Convert; import ch.psi.utils.State; import ch.psi.utils.swing.SwingUtils; import java.awt.Color; @@ -22,18 +23,19 @@ import javax.swing.JSpinner; * */ public class SchottkyScan extends Panel { - LinePlotErrorSeries series = new LinePlotErrorSeries("Values"); - + + LinePlotErrorSeries series = new LinePlotErrorSeries("Values"); + public SchottkyScan() { initComponents(); plot.setStyle(LinePlotJFree.Style.ErrorY); plot.addSeries(series); plot.getAxis(Plot.AxisId.X).setLabel("Gun Phase"); - plot.getAxis(Plot.AxisId.Y).setLabel("SINEG01-DICT215:B1_CHARGE"); - //setPersistedComponents(SwingUtils.getComponentsByType(panelPars, JSpinner.class)); + plot.getAxis(Plot.AxisId.Y).setLabel("SINEG01-DICT215:B1_CHARGE"); + setPersistedComponents(SwingUtils.getComponentsByType(panelPars, JSpinner.class)); } - //Overridable callbacks + //Overridable callbacks @Override public void onInitialize(int runCount) { } @@ -49,7 +51,7 @@ public class SchottkyScan extends Panel { spinnerSamples.setEnabled(buttonStart.isEnabled()); spinnerLatency.setEnabled(buttonStart.isEnabled()); spinnerPhaseRef.setEnabled(buttonStart.isEnabled()); - } + } @Override public void onExecutedFile(String fileName, Object result) { @@ -59,7 +61,7 @@ public class SchottkyScan extends Panel { @Override protected void doUpdate() { } - + @Override public void onStart() { super.onStart(); @@ -67,30 +69,32 @@ public class SchottkyScan extends Panel { } @Override - public void onStop() { + public void onStop() { getContext().removeScanListener(scanListener); super.onStop(); } - + ScanListener scanListener = new ScanListener() { @Override - public void onScanStarted(Scan scan, String plotTitle) { - if ("SchottkyScan".equals(getContext().getExecutionPars().getName())){ - series.clear(); - } - } - @Override - public void onNewRecord(Scan scan, ScanRecord record) { - if ("SchottkyScan".equals(getContext().getExecutionPars().getName())){ - series.appendData((Double)record.getPositions()[0], ((DescStatsDouble)record.getValues()[0]).getMean(), - ((DescStatsDouble)record.getValues()[0]).getStdev()); + public void onScanStarted(Scan scan, String plotTitle) { + if ("SchottkyScan".equals(getContext().getExecutionPars().getName())) { + series.clear(); } } + + @Override + public void onNewRecord(Scan scan, ScanRecord record) { + if ("SchottkyScan".equals(getContext().getExecutionPars().getName())) { + series.appendData((Double) record.getPositions()[0], ((DescStatsDouble) record.getValues()[0]).getMean(), + ((DescStatsDouble) record.getValues()[0]).getStdev()); + } + } + @Override public void onScanEnded(Scan scan, Exception ex) { } }; - + @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { @@ -99,18 +103,18 @@ public class SchottkyScan extends Panel { buttonAbort = new javax.swing.JButton(); panelPars = new javax.swing.JPanel(); spinnerStep = new javax.swing.JSpinner(); - jLabel5 = new javax.swing.JLabel(); - jLabel1 = new javax.swing.JLabel(); + labelLatency = new javax.swing.JLabel(); + labelStart = new javax.swing.JLabel(); spinnerStop = new javax.swing.JSpinner(); - jLabel3 = new javax.swing.JLabel(); - jLabel2 = new javax.swing.JLabel(); + labelStep = new javax.swing.JLabel(); + labelStop = new javax.swing.JLabel(); spinnerLatency = new javax.swing.JSpinner(); spinnerSamples = new javax.swing.JSpinner(); - jLabel4 = new javax.swing.JLabel(); + labelSamples = new javax.swing.JLabel(); spinnerStart = new javax.swing.JSpinner(); plot = new ch.psi.pshell.plot.LinePlotJFree(); panelOutput = new javax.swing.JPanel(); - jLabel7 = new javax.swing.JLabel(); + labelRefPhase = new javax.swing.JLabel(); spinnerPhaseRef = new javax.swing.JSpinner(); buttonSet = new javax.swing.JButton(); @@ -132,26 +136,26 @@ public class SchottkyScan extends Panel { spinnerStep.setModel(new javax.swing.SpinnerNumberModel(5.0d, 1.0d, 90.0d, 1.0d)); - jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - jLabel5.setText("Latency:"); + labelLatency.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + labelLatency.setText("Latency:"); - jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - jLabel1.setText("Start:"); + labelStart.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + labelStart.setText("Start:"); spinnerStop.setModel(new javax.swing.SpinnerNumberModel(180.0d, -180.0d, 360.0d, 1.0d)); - jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - jLabel3.setText("Step:"); + labelStep.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + labelStep.setText("Step:"); - jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - jLabel2.setText("Stop:"); + labelStop.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + labelStop.setText("Stop:"); spinnerLatency.setModel(new javax.swing.SpinnerNumberModel(0.1d, 0.0d, 5.0d, 0.01d)); spinnerSamples.setModel(new javax.swing.SpinnerNumberModel(1, 1, 50, 1)); - jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - jLabel4.setText("Nb Samples:"); + labelSamples.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + labelSamples.setText("Nb Samples:"); spinnerStart.setModel(new javax.swing.SpinnerNumberModel(0.0d, -180.0d, 360.0d, 1.0d)); @@ -163,21 +167,21 @@ public class SchottkyScan extends Panel { .addContainerGap() .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelParsLayout.createSequentialGroup() - .addComponent(jLabel1) + .addComponent(labelStart) .addGap(0, 0, 0) .addComponent(spinnerStart, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panelParsLayout.createSequentialGroup() - .addComponent(jLabel4) + .addComponent(labelSamples) .addGap(0, 0, 0) .addComponent(spinnerSamples, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panelParsLayout.createSequentialGroup() - .addComponent(jLabel5) + .addComponent(labelLatency) .addGap(0, 0, 0) .addComponent(spinnerLatency, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panelParsLayout.createSequentialGroup() .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel2) - .addComponent(jLabel3)) + .addComponent(labelStop) + .addComponent(labelStep)) .addGap(1, 1, 1) .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(spinnerStep, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -185,7 +189,7 @@ public class SchottkyScan extends Panel { .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); - panelParsLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel2, jLabel3, jLabel4, jLabel5}); + panelParsLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {labelLatency, labelSamples, labelStart, labelStep, labelStop}); panelParsLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerLatency, spinnerSamples, spinnerStart, spinnerStep, spinnerStop}); @@ -194,23 +198,23 @@ public class SchottkyScan extends Panel { .addGroup(panelParsLayout.createSequentialGroup() .addContainerGap() .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel1) + .addComponent(labelStart) .addComponent(spinnerStart, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel2) + .addComponent(labelStop) .addComponent(spinnerStop, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel3) + .addComponent(labelStep) .addComponent(spinnerStep, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel4) + .addComponent(labelSamples) .addComponent(spinnerSamples, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel5) + .addComponent(labelLatency) .addComponent(spinnerLatency, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); @@ -219,10 +223,10 @@ public class SchottkyScan extends Panel { panelOutput.setBorder(javax.swing.BorderFactory.createTitledBorder("Output")); - jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - jLabel7.setText("Ref Phase:"); + labelRefPhase.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + labelRefPhase.setText("Ref Phase:"); - spinnerPhaseRef.setModel(new javax.swing.SpinnerNumberModel(0.0d, -45.0d, 360.0d, 1.0d)); + spinnerPhaseRef.setModel(new javax.swing.SpinnerNumberModel(0.0d, -180.0d, 360.0d, 1.0d)); spinnerPhaseRef.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { spinnerPhaseRefStateChanged(evt); @@ -244,7 +248,7 @@ public class SchottkyScan extends Panel { .addContainerGap(25, Short.MAX_VALUE) .addGroup(panelOutputLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelOutputLayout.createSequentialGroup() - .addComponent(jLabel7) + .addComponent(labelRefPhase) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerPhaseRef, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(buttonSet, javax.swing.GroupLayout.Alignment.TRAILING)) @@ -258,7 +262,7 @@ public class SchottkyScan extends Panel { .addGroup(panelOutputLayout.createSequentialGroup() .addContainerGap() .addGroup(panelOutputLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel7) + .addComponent(labelRefPhase) .addComponent(spinnerPhaseRef, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(buttonSet) @@ -279,7 +283,7 @@ public class SchottkyScan extends Panel { .addComponent(panelPars, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(panelOutput, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(plot, javax.swing.GroupLayout.DEFAULT_SIZE, 522, Short.MAX_VALUE) + .addComponent(plot, javax.swing.GroupLayout.DEFAULT_SIZE, 511, Short.MAX_VALUE) .addContainerGap()) ); @@ -305,29 +309,29 @@ public class SchottkyScan extends Panel { private void buttonStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonStartActionPerformed //((Plugin)this). - plot.removeMarker(null); - spinnerPhaseRef.setValue(0.0); - ArrayList parameters = new ArrayList(); - parameters.add(spinnerStart.getValue()); - parameters.add(spinnerStop.getValue()); - parameters.add(spinnerStep.getValue()); - parameters.add(spinnerSamples.getValue()); - parameters.add(spinnerLatency.getValue()); + plot.removeMarker(null); + spinnerPhaseRef.setValue(0.0); + ArrayList parameters = new ArrayList(); + parameters.add(spinnerStart.getValue()); + parameters.add(spinnerStop.getValue()); + parameters.add(spinnerStep.getValue()); + parameters.add(spinnerSamples.getValue()); + parameters.add(spinnerLatency.getValue()); try { //How to get a callback on the end of execution - runAsync("RFscan/SchottkyScan", parameters).handle((ret, ex) -> { - if (ex != null){ + runAsync("RFscan/SchottkyScan", parameters).handle((ret, ex) -> { + if (ex != null) { getLogger().info("Exception executing scan: " + ex); } else { - spinnerPhaseRef.setValue(ret); + spinnerPhaseRef.setValue(Convert.roundDouble((Double) ret, 1)); } return ret; - }); + }); //runAsync("RFscan/SchottkyScan", parameters); } catch (Exception ex) { showException(ex); } - + }//GEN-LAST:event_buttonStartActionPerformed private void buttonAbortActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonAbortActionPerformed @@ -341,40 +345,40 @@ public class SchottkyScan extends Panel { private void spinnerPhaseRefStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinnerPhaseRefStateChanged try { plot.removeMarker(null); - plot.addMarker((Double)spinnerPhaseRef.getValue(), Plot.AxisId.X, "Ref Phase",Color.GREEN); + plot.addMarker((Double) spinnerPhaseRef.getValue(), Plot.AxisId.X, "Ref Phase", Color.GREEN); } catch (Exception ex) { showException(ex); - } + } }//GEN-LAST:event_spinnerPhaseRefStateChanged private void buttonSetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonSetActionPerformed try { - double phaseOffset = -((Double)spinnerPhaseRef.getValue()); - String cmd = "caput('SINEG01-RSYS:SET-VSUM-PHASE-OFFSET-BASE', " + phaseOffset + ")"; - cmd += "; " + "caput('SINEG01-RSYS:CMD-LOAD-CALIB-BEAM', 1)"; - evalAsync(cmd).handle((ret, ex) -> { - if (ex != null){ - showException((Exception)ex); + double phaseOffset = -((Double) spinnerPhaseRef.getValue()); + String cmd = "caput('SINEG01-RSYS:SET-VSUM-PHASE-OFFSET-BASE', " + phaseOffset + ");"; + cmd += "caput('SINEG01-RSYS:CMD-LOAD-CALIB-BEAM', 1)"; + evalAsync(cmd).handle((ret, ex) -> { + if (ex != null) { + showException((Exception) ex); } else { SwingUtils.showMessage(this, "Success", "Success setting ref phase"); } return ret; - }); + }); } catch (Exception ex) { showException(ex); - } + } }//GEN-LAST:event_buttonSetActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton buttonAbort; private javax.swing.JButton buttonSet; private javax.swing.JButton buttonStart; - private javax.swing.JLabel jLabel1; - private javax.swing.JLabel jLabel2; - private javax.swing.JLabel jLabel3; - private javax.swing.JLabel jLabel4; - private javax.swing.JLabel jLabel5; - private javax.swing.JLabel jLabel7; + private javax.swing.JLabel labelLatency; + private javax.swing.JLabel labelRefPhase; + private javax.swing.JLabel labelSamples; + private javax.swing.JLabel labelStart; + private javax.swing.JLabel labelStep; + private javax.swing.JLabel labelStop; private javax.swing.JPanel panelOutput; private javax.swing.JPanel panelPars; private ch.psi.pshell.plot.LinePlotJFree plot; diff --git a/plugins/WireScan.form b/plugins/WireScan.form index 5cfb175..8d337ea 100644 --- a/plugins/WireScan.form +++ b/plugins/WireScan.form @@ -17,35 +17,37 @@ - - - + + + - + - + - + - + + + - - - - - - - - + + + + + + + + + + - - @@ -67,11 +69,33 @@ + + + + + + + + + + + + + + + + + + + + + + - - + + @@ -110,31 +134,45 @@ - + + - - - - + + + - + + + + + + + + + + + + + + - + + - + @@ -170,16 +208,6 @@ - - - - - - - - - - @@ -283,5 +311,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/WireScan.java b/plugins/WireScan.java index 289e756..3fdc672 100644 --- a/plugins/WireScan.java +++ b/plugins/WireScan.java @@ -3,6 +3,7 @@ */ import ch.psi.pshell.device.Device; +import ch.psi.pshell.epics.ChannelDouble; import ch.psi.pshell.epics.Epics; import ch.psi.pshell.plot.LinePlotSeries; import ch.psi.pshell.plot.Plot; @@ -14,17 +15,29 @@ import ch.psi.pshell.ui.Panel; import ch.psi.pshell.ui.Plugin; import ch.psi.utils.State; import ch.psi.utils.swing.SwingUtils; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; import java.util.ArrayList; import java.util.List; import javax.swing.DefaultComboBoxModel; +import javax.swing.JComboBox; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JSpinner; +import javax.swing.JTextField; /** * */ public class WireScan extends Panel { final String[] seriesNames = new String[]{"bpm1_x", "bpm1_y", "bpm1_q", "bpm2_x", "bpm2_y", "bpm2_q"}; + final JComboBox[] bpmCombos; final int[] seriesYAxis = new int[]{1, 1, 2, 1, 1, 2}; LinePlotSeries[] series = new LinePlotSeries[seriesNames.length]; + boolean homed; public WireScan() { initComponents(); @@ -35,15 +48,19 @@ public class WireScan extends Panel { plot.getAxis(Plot.AxisId.X).setLabel("Position"); plot.getAxis(Plot.AxisId.Y).setLabel("mm"); plot.getAxis(Plot.AxisId.Y2).setLabel("pc"); - plot.setLegendVisible(true); + plot.setLegendVisible(true); + bpmCombos = new JComboBox[]{comboBpm1, comboBpm2, comboBpm3}; } //Overridable callbacks @Override public void onInitialize(int runCount) { try { + startTimer(1000, 10); + DefaultComboBoxModel model = new DefaultComboBoxModel(); eval("run('Devices/Elements')", true); + model.addElement(""); List ret = (List) ((Plugin)this).eval("get_wire_scans()", true); for (String scan: ret){ model.addElement(scan); @@ -53,33 +70,72 @@ public class WireScan extends Panel { model = new DefaultComboBoxModel(); ret = (List) ((Plugin)this).eval("WireScanner.Selection", true); for (String scan: ret){ - model.addElement(scan); + if (!scan.equals("GARAGE")){ + model.addElement(scan); + } } comboSelection.setModel(model); comboWireScanActionPerformed(null); - model = new DefaultComboBoxModel(); - ret = (List) ((Plugin)this).eval("get_bpms()", true); - model.addElement(""); - for (String scan: ret){ - model.addElement(scan); + + ret = (List) ((Plugin)this).eval("get_bpms()", true); + for (JComboBox cb : bpmCombos){ + model = new DefaultComboBoxModel(); + model.addElement(""); + for (String scan: ret){ + model.addElement(scan); + } + cb.setModel(model); } - comboBpm3.setModel(model); if (App.hasArgument("ws")){ comboWireScan.setSelectedItem(App.getArgumentValue("ws")); - } - + } + comboWireScanActionPerformed(null); } catch (Exception ex) { showException(ex); } } - + + @Override + protected void onTimer(){ + try{ + boolean validWireScan = !comboWireScan.getSelectedItem().toString().isEmpty(); + if (validWireScan){ + homed = (Epics.get(comboWireScan.getSelectedItem().toString() + ":MOTOR_1_HOMED", Integer.class) == 1); + if (homed){ + ledHomed.setColor(Color.GREEN); + } else if (Epics.get(comboWireScan.getSelectedItem().toString() + ":MOTOR_1_HOMING", Integer.class) == 1){ + ledHomed.setColor(Color.YELLOW); + } else { + ledHomed.setColor(Color.RED); + } + } else { + ledHomed.setColor(Color.darkGray); + homed = false; + } + onStateChange(getState(), getState()); + } catch (Exception ex){ + } + } +//S20CB01-DWSC440:MOTOR_1_HOME.PROC @Override public void onStateChange(State state, State former) { - buttonMoveStart.setEnabled(state==State.Ready); - buttonScan.setEnabled(state==State.Ready); + boolean validWireScan = !comboWireScan.getSelectedItem().toString().isEmpty(); + buttonMoveStart.setEnabled((state==State.Ready) && validWireScan && homed); + buttonPark.setEnabled((state==State.Ready) && validWireScan && homed); + buttonScan.setEnabled((state==State.Ready) && validWireScan && homed); buttonAbort.setEnabled(state==State.Busy); + comboSelection.setEnabled(validWireScan); + comboBpm1.setEnabled(validWireScan); + comboBpm2.setEnabled(validWireScan); + comboBpm3.setEnabled(validWireScan); + buttonMotorPanel.setEnabled(validWireScan); + buttonScannerPanel.setEnabled(validWireScan); + buttonHoming.setEnabled(validWireScan); + for (Component c: SwingUtils.getComponentsByType(this, JSpinner.class)){ + c.setEnabled(validWireScan); + } } @Override @@ -135,8 +191,6 @@ public class WireScan extends Panel { jLabel2 = new javax.swing.JLabel(); comboSelection = new javax.swing.JComboBox(); jLabel3 = new javax.swing.JLabel(); - textBpm1 = new javax.swing.JTextField(); - textBpm2 = new javax.swing.JTextField(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); comboBpm3 = new javax.swing.JComboBox(); @@ -154,6 +208,16 @@ public class WireScan extends Panel { spinnerCycles = new javax.swing.JSpinner(); panelStatus = new ch.psi.pshell.swing.DeviceValuePanel(); plot = new ch.psi.pshell.plot.LinePlotJFree(); + comboBpm1 = new javax.swing.JComboBox(); + comboBpm2 = new javax.swing.JComboBox(); + buttonPark = new javax.swing.JButton(); + jLabel11 = new javax.swing.JLabel(); + panelPosition = new ch.psi.pshell.swing.DeviceValuePanel(); + buttonMotorPanel = new javax.swing.JButton(); + buttonScannerPanel = new javax.swing.JButton(); + jLabel12 = new javax.swing.JLabel(); + ledHomed = new ch.psi.pshell.swing.Led(); + buttonHoming = new javax.swing.JButton(); comboWireScan.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -176,10 +240,6 @@ public class WireScan extends Panel { jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel3.setText("BPM 1:"); - textBpm1.setEditable(false); - - textBpm2.setEditable(false); - jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel4.setText("BPM 2:"); @@ -232,37 +292,74 @@ public class WireScan extends Panel { plot.setTitle(""); + buttonPark.setText("Park"); + buttonPark.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonParkActionPerformed(evt); + } + }); + + jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + jLabel11.setText("Position:"); + + buttonMotorPanel.setText("Motor Panel"); + buttonMotorPanel.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonMotorPanelActionPerformed(evt); + } + }); + + buttonScannerPanel.setText("Scanner Panel"); + buttonScannerPanel.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonScannerPanelActionPerformed(evt); + } + }); + + jLabel12.setText("Homed:"); + + ledHomed.setForeground(java.awt.Color.darkGray); + ledHomed.setLedSize(18); + + buttonHoming.setText("Homing"); + buttonHoming.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonHomingActionPerformed(evt); + } + }); + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(comboWireScan, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addComponent(jLabel8) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addComponent(buttonMoveStart, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel8, javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(buttonPark) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(buttonScan, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(buttonMoveStart) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(buttonAbort, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jLabel5, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jLabel6, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jLabel10, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(buttonScan) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonAbort)) + .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel6, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel10, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(comboSelection, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(textBpm1) - .addComponent(textBpm2) .addComponent(comboBpm3, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -278,13 +375,34 @@ public class WireScan extends Panel { .addComponent(jLabel9) .addGap(8, 8, 8) .addComponent(spinnerCycles)))) - .addComponent(panelStatus, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) + .addComponent(panelStatus, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(comboBpm1, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(comboBpm2, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel11) + .addComponent(jLabel12)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(panelPosition, javax.swing.GroupLayout.PREFERRED_SIZE, 117, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(layout.createSequentialGroup() + .addComponent(ledHomed, 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) + .addComponent(buttonHoming))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(buttonMotorPanel, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(buttonScannerPanel, javax.swing.GroupLayout.Alignment.TRAILING)))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(plot, javax.swing.GroupLayout.DEFAULT_SIZE, 451, Short.MAX_VALUE) + .addComponent(plot, javax.swing.GroupLayout.DEFAULT_SIZE, 457, Short.MAX_VALUE) .addGap(11, 11, 11)) ); - layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel10, jLabel2, jLabel3, jLabel4, jLabel5, jLabel6, jLabel7, jLabel8, jLabel9}); + layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel10, jLabel11, jLabel2, jLabel3, jLabel4, jLabel5, jLabel6, jLabel7, jLabel8, jLabel9}); + + layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonAbort, buttonMoveStart, buttonPark, buttonScan}); + + layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonMotorPanel, buttonScannerPanel}); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -315,48 +433,81 @@ public class WireScan extends Panel { .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3) - .addComponent(textBpm1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(comboBpm1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel4) - .addComponent(textBpm2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(comboBpm2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel4)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel5) - .addComponent(comboBpm3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 95, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(comboBpm3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel5)) + .addGap(18, 18, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel11) + .addComponent(panelPosition, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(buttonScannerPanel)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel12) + .addComponent(ledHomed, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(buttonMotorPanel) + .addComponent(buttonHoming)) + .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel10) .addComponent(panelStatus, 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) + .addGap(18, 18, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(buttonAbort) .addComponent(buttonScan) - .addComponent(buttonMoveStart))) - .addComponent(plot, javax.swing.GroupLayout.DEFAULT_SIZE, 364, Short.MAX_VALUE)) + .addComponent(buttonMoveStart) + .addComponent(buttonPark))) + .addComponent(plot, javax.swing.GroupLayout.DEFAULT_SIZE, 416, Short.MAX_VALUE)) .addContainerGap()) ); }// //GEN-END:initComponents private void comboWireScanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboWireScanActionPerformed try { - List ret = (List) ((Plugin)this).eval("get_wire_scans_bpms('" + comboWireScan.getSelectedItem().toString()+ "')", true); - textBpm1.setText((ret==null) ? "" : ret.get(0)); - textBpm2.setText((ret==null) ? "" : ret.get(1)); - - comboSelection.setSelectedIndex(Epics.get(comboWireScan.getSelectedItem().toString() + ":WIRE_SP", Integer.class)); - spinnerVel.setValue(Epics.get(comboWireScan.getSelectedItem().toString() + ":SCAN_VELO_SP", Double.class)); - spinnerCycles.setValue(Epics.get(comboWireScan.getSelectedItem().toString() + ":NB_CYCL_SP", Integer.class)); if (panelStatus.getDevice()!=null){ panelStatus.getDevice().close(); + panelStatus.setDevice(null); } - Device dev= (Device)eval("newScanInfoDevice(None, '" + comboWireScan.getSelectedItem().toString()+ "')", true); - panelStatus.setDevice(dev); - - } catch (Exception ex) { - panelStatus.setDevice(null); + if (panelPosition.getDevice()!=null){ + panelPosition.getDevice().close(); + panelPosition.setDevice(null); + } + ledHomed.setColor(Color.darkGray); + homed = false; + + if ( comboWireScan.getSelectedItem().toString().isEmpty()){ + for (JComboBox cb : bpmCombos){ + cb.setSelectedItem(""); + } + } else { + List ret = (List) ((Plugin)this).eval("get_wire_scans_bpms('" + comboWireScan.getSelectedItem().toString()+ "')", true); + comboBpm1.setSelectedItem((ret==null) ? "" : ret.get(0)); + comboBpm2.setSelectedItem((ret==null) ? "" : ret.get(1)); + comboSelection.setSelectedIndex(Epics.get(comboWireScan.getSelectedItem().toString() + ":WIRE_SP", Integer.class)); + spinnerVel.setValue(Epics.get(comboWireScan.getSelectedItem().toString() + ":SCAN_VELO_SP", Double.class)); + spinnerCycles.setValue(Epics.get(comboWireScan.getSelectedItem().toString() + ":NB_CYCL_SP", Integer.class)); + Device dev= (Device)eval("newScanInfoDevice(None, '" + comboWireScan.getSelectedItem().toString()+ "')", true); + panelStatus.setDevice(dev); + + dev = new ChannelDouble (null, comboWireScan.getSelectedItem().toString() + ":ENC_1_BS", 3); + dev.setMonitored(true); + dev.initialize(); + panelPosition.setDevice(dev); + } + } catch (Exception ex) { showException(ex); + comboWireScan.setSelectedItem(""); + for (JComboBox cb : bpmCombos){ + cb.setSelectedItem(""); + } } + onStateChange(getState(), getState()); }//GEN-LAST:event_comboWireScanActionPerformed private void comboSelectionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboSelectionActionPerformed @@ -377,7 +528,12 @@ public class WireScan extends Panel { parameters.add(spinnerEnd.getValue()); parameters.add(spinnerCycles.getValue()); parameters.add(spinnerVel.getValue()); - parameters.add(comboBpm3.getSelectedItem().toString().isEmpty() ? null: comboBpm3.getSelectedItem().toString()); + ArrayList bpms = new ArrayList(); + for (JComboBox cb : bpmCombos){ + if (!cb.getSelectedItem().toString().isEmpty()){ + bpms.add(cb.getSelectedItem().toString()); + } + } getContext().addScanListener(scanListener); try { runAsync("Diagnostics/WireScan", parameters).handle((ret, ex) -> { @@ -385,7 +541,15 @@ public class WireScan extends Panel { getLogger().info("Exception executing scan: " + ex); showException((Exception) ex); } else { - SwingUtils.showMessage(WireScan.this, "Success", "Data file: \n" + getContext().getDataManager().getLastOutput()); + //SwingUtils.showMessage(WireScan.this, "Success", "Data file: \n" + getContext().getDataManager().getLastOutput()); + JPanel pn = new JPanel(new BorderLayout()); + ((BorderLayout) pn.getLayout()).setHgap(5); + pn.add(new JLabel("Generated data file:"), BorderLayout.NORTH); + JTextField tf = new JTextField(getContext().getDataManager().getLastOutput()); + tf.setPreferredSize(new Dimension(600, tf.getPreferredSize().height)); + tf.setEditable(false); + pn.add(tf, BorderLayout.SOUTH); + JOptionPane.showOptionDialog(WireScan.this, pn, "Success", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null); } return ret; }); @@ -410,15 +574,59 @@ public class WireScan extends Panel { } }//GEN-LAST:event_buttonMoveStartActionPerformed + private void buttonParkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonParkActionPerformed + try { + Epics.putq(comboWireScan.getSelectedItem().toString() + ":GARAGE_SEL.PROC", 1); + } catch (Exception ex) { + showException(ex); + } + }//GEN-LAST:event_buttonParkActionPerformed + + String caqtdm = "caqtdm -noMsg -stylefile sfop.qss -attach"; + private void buttonMotorPanelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonMotorPanelActionPerformed + try { + String cmd = caqtdm + " -macro 'P=" + comboWireScan.getSelectedItem() + ":,M=MOTOR_1' /sf/common/config/qt/motorx_all.ui"; + Runtime.getRuntime().exec(new String[]{"bash", "-c", cmd.toString()}); + } catch (Exception ex) { + showException(ex); + } + }//GEN-LAST:event_buttonMotorPanelActionPerformed + + private void buttonScannerPanelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonScannerPanelActionPerformed + try { + String cmd = caqtdm + " -macro 'DEVICE=" + comboWireScan.getSelectedItem() + "' /sf/op/config/qt/S_DI_WSC.ui"; + Runtime.getRuntime().exec(new String[]{"bash", "-c", cmd.toString()}); + } catch (Exception ex) { + showException(ex); + } + + }//GEN-LAST:event_buttonScannerPanelActionPerformed + + private void buttonHomingActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonHomingActionPerformed + try { + Epics.putq(comboWireScan.getSelectedItem().toString() + ":MOTOR_1_HOME.PROC", 1); + } catch (Exception ex) { + showException(ex); + } + }//GEN-LAST:event_buttonHomingActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton buttonAbort; + private javax.swing.JButton buttonHoming; + private javax.swing.JButton buttonMotorPanel; private javax.swing.JButton buttonMoveStart; + private javax.swing.JButton buttonPark; private javax.swing.JButton buttonScan; + private javax.swing.JButton buttonScannerPanel; + private javax.swing.JComboBox comboBpm1; + private javax.swing.JComboBox comboBpm2; private javax.swing.JComboBox comboBpm3; private javax.swing.JComboBox comboSelection; private javax.swing.JComboBox comboWireScan; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; + private javax.swing.JLabel jLabel11; + private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; @@ -427,13 +635,13 @@ public class WireScan extends Panel { private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; + private ch.psi.pshell.swing.Led ledHomed; + private ch.psi.pshell.swing.DeviceValuePanel panelPosition; private ch.psi.pshell.swing.DeviceValuePanel panelStatus; private ch.psi.pshell.plot.LinePlotJFree plot; private javax.swing.JSpinner spinnerCycles; private javax.swing.JSpinner spinnerEnd; private javax.swing.JSpinner spinnerStart; private javax.swing.JSpinner spinnerVel; - private javax.swing.JTextField textBpm1; - private javax.swing.JTextField textBpm2; // End of variables declaration//GEN-END:variables } diff --git a/script/Devices/Elements.py b/script/Devices/Elements.py index 4569646..b865acc 100644 --- a/script/Devices/Elements.py +++ b/script/Devices/Elements.py @@ -167,6 +167,17 @@ elements = ( (DBPM, "SARBD02-DBPM040", 598.3943), ) +def get_section(element): + return element[1:3] + +def get_section_type(element): + section = get_section(element) + if section == "AR": return "ARAMIS" + if section == "AT": return "ATH0S" + if section == "IN": return "INJECTOR" + if section in["10", "20", "30"] : return "LINAC" + return None + def get_bpms(): ret = [] @@ -184,17 +195,20 @@ def get_wire_scans(): -def get_wire_scans_bpms(wire_scans): +def get_wire_scans_bpms(wire_scan): last = None ret = [] for element in elements: - if element[0]==DWSC and element[1] == wire_scans: + if element[0]==DWSC and element[1] == wire_scan: ret = [last,] else: - if len(ret) > 0: - return [ret[0],element[1]] - last = element[1] + if get_section_type(element[1]) == get_section_type(wire_scan): + if len(ret) > 0: + return [ret[0],element[1]] + last = element[1] return None +#for w in get_wire_scans(): +# print w, get_wire_scans_bpms(w) diff --git a/script/Diagnostics/WireScan.py b/script/Diagnostics/WireScan.py index 9cafac9..5c5d29c 100644 --- a/script/Diagnostics/WireScan.py +++ b/script/Diagnostics/WireScan.py @@ -12,8 +12,8 @@ start = args[2] if is_panel else -200 end = args[3] if is_panel else 200 cycles = args[4] if is_panel else 5 velocity = args[5] if is_panel else 200 -bpm3 = args[6] if is_panel else None -print "WireScan parameters: ", prefix, sel, start, end, cycles, cycles, bpm3 +bpms = args[6] if is_panel else get_wire_scans_bpms(prefix) +print "WireScan parameters: ", prefix, sel, start, end, cycles, cycles, bpms #Creating WireScanner object print "Creating scanner..." @@ -27,11 +27,8 @@ scanner.waitValue("At start", 60000) channels = [("w_pos", scanner.motor_bs_readback.get_name()), ("cur_cycle", scanner.curr_cycl.get_name()), ("scanning", scanner.status_channels[0].get_name())] -bpms = get_wire_scans_bpms(prefix) -if bpms is None: - raise Exception("Cannot determine wire scan bpms: " + prefix) -if bpm3 is not None: - bpms.append(bpm3) + + #bpms = ["SINDI01-DBPM060", "SINDI02-DBPM010"] #For testing for i in range (len(bpms)): for sensor in BPM_SENSORS: diff --git a/script/RFscan/GunScan.py b/script/RFscan/GunScan.py index 6dbf2ba..a9b16ca 100644 --- a/script/RFscan/GunScan.py +++ b/script/RFscan/GunScan.py @@ -1,33 +1,34 @@ -import ch.psi.pshell.epics.ControlledVariable as ControlledVariable -import ch.psi.pshell.epics.Camtool as Camtool +import ch.psi.pshell.epics.ControlledVariable as ControlledVariable +import ch.psi.pshell.epics.Camtool as Camtool if get_exec_pars().source == CommandSource.ui: - start = 55.0 - stop = 75.0 + start = -34.0 + stop = -14.0 step = 2.0 - nb = 5 - lat = 0.5 - disp = caget("SINBD01-DSCR010:DISPERSION") - energy0 = caget("SINBD01-DSCR010:ENERGY") + nb = 1 + lat = 0.3 + disp = -0.32 + energy0 = 7.1 else: - start = args[0] - stop = args[1] - step = args[2] - nb = int(args[3]) - lat = args[4] + start = args[0] + stop = args[1] + step = args[2] + nb = int(args[3]) + lat = args[4] disp = args[5] energy0 = args[6] -#phase = ControlledVariable("Phase", "SINEG01-RSYS:SET-VSUM-PHASE", "SINEG01-RSYS:GET-VSUM-PHASE") -phase = ControlledVariable("Phase", "SINEG01-RSYS:SET-VSUM-PHASE", "SINEG01-RSYS:SET-VSUM-PHASE") +phase = ControlledVariable("Phase", "SINEG01-RSYS:SET-VSUM-PHASE", "SINEG01-RSYS:GET-VSUM-PHASE") phase.config.minValue =-180.0 -phase.config.maxValue = 180.0 +phase.config.maxValue = 360.0 phase.config.precision = 3 phase.config.resolution = 1.0 phase.config.save() phase.initialize() -#kill_camtool() +phase0 = phase.read() + +kill_camtool() check_camtool() camtool.start("SINBD01-DSCR010") wait_camtool_message() @@ -44,6 +45,7 @@ try: E = [energy0 * (1 + val.mean / 1e6 / disp) for val in r.getReadable(0)] dE = [energy0 * ( val.mean / 1e6 / disp) for val in r.getReadable(1)] finally: + phase.write(phase0) phase.close() camtool.stop() # stops camtool but does not close it camtool is a global object diff --git a/script/RFscan/SchottkyScan.py b/script/RFscan/SchottkyScan.py index 122e1fc..8fa0019 100644 --- a/script/RFscan/SchottkyScan.py +++ b/script/RFscan/SchottkyScan.py @@ -13,10 +13,9 @@ else: nb = int(args[3]) lat = args[4] -#phase = ControlledVariable("Phase", "SINEG01-RSYS:SET-VSUM-PHASE", "SINEG01-RSYS:GET-VSUM-PHASE") -phase = ControlledVariable("Phase", "SINEG01-RSYS:SET-VSUM-PHASE", "SINEG01-RSYS:SET-VSUM-PHASE") +phase = ControlledVariable("Phase", "SINEG01-RSYS:SET-VSUM-PHASE", "SINEG01-RSYS:GET-VSUM-PHASE") phase.config.minValue =-180.0 -phase.config.maxValue = 180.0 +phase.config.maxValue = 360.0 phase.config.precision = 3 phase.config.resolution = 1.0 phase.config.save() @@ -24,7 +23,7 @@ phase.initialize() #st = Stream("ICTstream", dispatcher) #q = st.addScalar("Charge", "SINEG01-DICT215:B1_CHARGE", 1, 0) #st.initialize() -#st.start(True) +#st.start() q = Channel("SINEG01-DICT215:B1_CHARGE", type = 'd', alias='ICT-Q') phase0 = phase.read() @@ -44,8 +43,8 @@ finally: q.close() #Setting the return value -y = charge x = rf_phase +y = charge index_max = y.index(max(y)) phase_ref = x[index_max] - 80