diff --git a/config/variables.properties b/config/variables.properties index 830b4e2..1af3891 100644 --- a/config/variables.properties +++ b/config/variables.properties @@ -1,4 +1,4 @@ -#Mon Oct 03 10:00:08 CEST 2022 +#Mon Oct 03 10:56:11 CEST 2022 LastRunDate=221003 -DaySequentialNumber=1 -FileSequentialNumber=1 +DaySequentialNumber=14 +FileSequentialNumber=14 diff --git a/plugins/Scan1D.form b/plugins/Scan1D.form index bc64b7b..6afa086 100644 --- a/plugins/Scan1D.form +++ b/plugins/Scan1D.form @@ -6,6 +6,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -28,9 +80,7 @@ - - - + @@ -44,7 +94,6 @@ - @@ -77,7 +126,7 @@ - + @@ -118,7 +167,6 @@ - @@ -178,9 +226,7 @@ - - - + @@ -194,14 +240,11 @@ - - - - - - - - + + + + + @@ -336,179 +379,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -523,29 +393,12 @@ - + - - - - - - - - - - - - - - - - - - - - + + + @@ -558,21 +411,9 @@ - + - - - - - - - - - - - - - + @@ -594,35 +435,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/plugins/Scan1D.java b/plugins/Scan1D.java index b5cd152..a9128df 100644 --- a/plugins/Scan1D.java +++ b/plugins/Scan1D.java @@ -3,12 +3,11 @@ */ import ch.psi.pshell.device.Motor; -import ch.psi.pshell.epics.Scienta; +import ch.psi.pshell.epics.AreaDetector; import ch.psi.pshell.ui.ScriptProcessor; import ch.psi.utils.State; import ch.psi.utils.swing.SwingUtils; import java.awt.Component; -import java.time.LocalTime; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -40,22 +39,11 @@ public class Scan1D extends ScriptProcessor { @Override public void onInitialize(int runCount) { comboMotorActionPerformed(null); - Scienta scienta = (Scienta) getDevice("Scienta"); - dvpAcqTime.setDevice(scienta.getAcquisitionTime()); + AreaDetector ccd = (AreaDetector) getDevice("ccd"); } + @Override protected void onTimer(){ - try{ - int steps = radioSteps.isSelected() ? - (Integer)spinnerSteps.getValue(): - (int) ((radioRelative.isSelected()? ((Double)spinnerRange.getValue()).intValue(): - (Math.abs((Double)spinnerTo.getValue() - (Double)spinnerFrom.getValue()) )) / (Double)spinnerStepSize.getValue() + 1); - int seconds = (int) (Double.valueOf(dvpAcqTime.getLabel().getText()) * steps); - int hours= seconds / (60 * 60); - textTotalTime.setText(hours >= 24 ? hours+"h": LocalTime.ofSecondOfDay(seconds).toString()); - } catch (Exception ex){ - textTotalTime.setText(""); - } } @@ -81,20 +69,17 @@ public class Scan1D extends ScriptProcessor { c.setEnabled(enableControls); } buttonStart.setEnabled(enableControls); - checkEndScan.setEnabled(enableControls); spinnerStepSize.setEnabled(enableControls && radioStepSize.isSelected()); spinnerSteps.setEnabled(enableControls && radioSteps.isSelected()); spinnerFrom.setEnabled(enableControls && radioAbsolute.isSelected()); spinnerTo.setEnabled(enableControls && radioAbsolute.isSelected()); spinnerRange.setEnabled(enableControls && !radioAbsolute.isSelected()); - - buttonScientaSetup.setEnabled(value); } @Override public String getScript() { - return "ManipulatorScan"; + return "templates/Scan1D"; } @Override @@ -122,8 +107,6 @@ public class Scan1D extends ScriptProcessor { } args.put("LATENCY", (Double) spinnerLatency.getValue()); args.put("RELATIVE", radioRelative.isSelected()); - args.put("ENDSCAN", checkEndScan.isSelected()); - args.put("FLY_SCAN", checkFlyScan.isSelected()); return args; } @@ -133,6 +116,9 @@ public class Scan1D extends ScriptProcessor { buttonGroup1 = new javax.swing.ButtonGroup(); buttonGroup2 = new javax.swing.ButtonGroup(); + panelSensors = new javax.swing.JPanel(); + checkImage = new javax.swing.JCheckBox(); + checkCurrent = new javax.swing.JCheckBox(); panelPositioner = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); comboMotor = new javax.swing.JComboBox(); @@ -154,39 +140,50 @@ public class Scan1D extends ScriptProcessor { jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); - checkFlyScan = new javax.swing.JCheckBox(); - panelSensors = new javax.swing.JPanel(); - checkImage = new javax.swing.JCheckBox(); - checkImageIntegration = new javax.swing.JCheckBox(); - checkAngleDistribution = new javax.swing.JCheckBox(); - checkSpectrum = new javax.swing.JCheckBox(); - checkTotalCount = new javax.swing.JCheckBox(); - checkCounts1 = new javax.swing.JCheckBox(); - checkCounts2 = new javax.swing.JCheckBox(); - checkCounts3 = new javax.swing.JCheckBox(); - checkCounts4 = new javax.swing.JCheckBox(); - checkCurrent = new javax.swing.JCheckBox(); - checkCur1 = new javax.swing.JCheckBox(); - checkCur2 = new javax.swing.JCheckBox(); - checkCur3 = new javax.swing.JCheckBox(); - buttonScientaSetup = new javax.swing.JButton(); jPanel3 = new javax.swing.JPanel(); buttonStart = new javax.swing.JButton(); buttonAbort = new javax.swing.JButton(); - checkEndScan = new javax.swing.JCheckBox(); - textTotalTime = new javax.swing.JLabel(); - labelTotalTime = new javax.swing.JLabel(); - labelAcqTime = new javax.swing.JLabel(); - dvpAcqTime = new ch.psi.pshell.swing.DeviceValuePanel(); buttonQueue = new javax.swing.JButton(); + panelSensors.setBorder(javax.swing.BorderFactory.createTitledBorder("Sensors")); + + checkImage.setSelected(true); + checkImage.setText("CCD Image"); + checkImage.setToolTipText(""); + checkImage.setContentAreaFilled(false); + checkImage.setName("ccd.dataMatrix"); // NOI18N + + checkCurrent.setText("Machine Current"); + checkCurrent.setName("current"); // NOI18N + + javax.swing.GroupLayout panelSensorsLayout = new javax.swing.GroupLayout(panelSensors); + panelSensors.setLayout(panelSensorsLayout); + panelSensorsLayout.setHorizontalGroup( + panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelSensorsLayout.createSequentialGroup() + .addContainerGap() + .addGroup(panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(checkImage) + .addComponent(checkCurrent)) + .addContainerGap(108, Short.MAX_VALUE)) + ); + panelSensorsLayout.setVerticalGroup( + panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelSensorsLayout.createSequentialGroup() + .addContainerGap() + .addComponent(checkImage) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(checkCurrent) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + setPreferredSize(new java.awt.Dimension(792, 567)); panelPositioner.setBorder(javax.swing.BorderFactory.createTitledBorder("Positioner")); jLabel1.setText("Motor:"); - comboMotor.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "dummy", "ManipulatorX", "ManipulatorY", "ManipulatorZ", "ManipulatorTheta", "ManipulatorTilt", "ManipulatorPhi" })); + comboMotor.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "dummy_x", "sample_x", "sample_y", "sample_x" })); comboMotor.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { comboMotorActionPerformed(evt); @@ -255,8 +252,6 @@ public class Scan1D extends ScriptProcessor { jLabel8.setText("Steps:"); - checkFlyScan.setText("Fly Scan"); - javax.swing.GroupLayout panelPositionerLayout = new javax.swing.GroupLayout(panelPositioner); panelPositioner.setLayout(panelPositionerLayout); panelPositionerLayout.setHorizontalGroup( @@ -272,7 +267,7 @@ public class Scan1D extends ScriptProcessor { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(motorPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(comboMotor, 0, 152, Short.MAX_VALUE))) + .addComponent(comboMotor, 0, 159, Short.MAX_VALUE))) .addGroup(panelPositionerLayout.createSequentialGroup() .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) @@ -302,8 +297,7 @@ public class Scan1D extends ScriptProcessor { .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(radioStepSize) .addComponent(radioAbsolute) - .addComponent(radioRelative) - .addComponent(checkFlyScan)) + .addComponent(radioRelative)) .addGap(0, 0, Short.MAX_VALUE))) .addContainerGap()) ); @@ -353,123 +347,7 @@ public class Scan1D extends ScriptProcessor { .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3) .addComponent(spinnerLatency, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 81, Short.MAX_VALUE) - .addComponent(checkFlyScan) - .addGap(26, 26, 26)) - ); - - panelSensors.setBorder(javax.swing.BorderFactory.createTitledBorder("Sensors")); - - checkImage.setText("Scienta Image"); - checkImage.setToolTipText(""); - checkImage.setContentAreaFilled(false); - checkImage.setName("Scienta.dataMatrix"); // NOI18N - - checkImageIntegration.setSelected(true); - checkImageIntegration.setText("Scienta Energy Distribution"); - checkImageIntegration.setToolTipText(""); - checkImageIntegration.setContentAreaFilled(false); - checkImageIntegration.setName("EnergyDistribution"); // NOI18N - - checkAngleDistribution.setSelected(true); - checkAngleDistribution.setText("Scienta Angle Distribution"); - checkAngleDistribution.setToolTipText(""); - checkAngleDistribution.setContentAreaFilled(false); - checkAngleDistribution.setName("AngleDistribution"); // NOI18N - - checkSpectrum.setText("Scienta Spectrum"); - checkSpectrum.setName("Scienta.spectrum"); // NOI18N - - checkTotalCount.setSelected(true); - checkTotalCount.setText("Total Counts"); - checkTotalCount.setName("Counts"); // NOI18N - - checkCounts1.setText("Counts Region 1"); - checkCounts1.setName("CountsR1"); // NOI18N - - checkCounts2.setText("Counts Region 2"); - checkCounts2.setName("CountsR2"); // NOI18N - - checkCounts3.setText("Counts Region 3"); - checkCounts3.setName("CountsR3"); // NOI18N - - checkCounts4.setText("Counts Region 4"); - checkCounts4.setName("CountsR4"); // NOI18N - - checkCurrent.setText("Machine Current"); - checkCurrent.setName("MachineCurrent"); // NOI18N - - checkCur1.setText("Sample Current"); - checkCur1.setName("SampleCurrent"); // NOI18N - - checkCur2.setText("Ref Current"); - checkCur2.setName("RefCurrent"); // NOI18N - - checkCur3.setText("Aux Current"); - checkCur3.setName("AuxCurrent"); // NOI18N - - buttonScientaSetup.setText("Scienta Setup"); - buttonScientaSetup.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - buttonScientaSetupActionPerformed(evt); - } - }); - - javax.swing.GroupLayout panelSensorsLayout = new javax.swing.GroupLayout(panelSensors); - panelSensors.setLayout(panelSensorsLayout); - panelSensorsLayout.setHorizontalGroup( - panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelSensorsLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(buttonScientaSetup, javax.swing.GroupLayout.DEFAULT_SIZE, 212, Short.MAX_VALUE) - .addComponent(checkImage) - .addComponent(checkImageIntegration) - .addComponent(checkSpectrum) - .addComponent(checkCounts1) - .addComponent(checkTotalCount) - .addComponent(checkCounts2) - .addComponent(checkCounts3) - .addComponent(checkCounts4) - .addComponent(checkCurrent) - .addComponent(checkCur1) - .addComponent(checkCur2) - .addComponent(checkCur3) - .addComponent(checkAngleDistribution)) - .addContainerGap()) - ); - panelSensorsLayout.setVerticalGroup( - panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelSensorsLayout.createSequentialGroup() - .addContainerGap() - .addComponent(checkImage) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkImageIntegration) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkAngleDistribution) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkSpectrum) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkTotalCount) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkCounts1) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkCounts2) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkCounts3) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkCounts4) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkCurrent) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkCur1) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkCur2) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkCur3) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 97, Short.MAX_VALUE) - .addComponent(buttonScientaSetup) - .addGap(26, 26, 26)) + .addContainerGap(159, Short.MAX_VALUE)) ); jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Scan Control")); @@ -488,17 +366,6 @@ public class Scan1D extends ScriptProcessor { } }); - checkEndScan.setText("Turn off beam at end"); - - textTotalTime.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - textTotalTime.setBorder(javax.swing.BorderFactory.createTitledBorder("")); - - labelTotalTime.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - labelTotalTime.setText("Total time:"); - - labelAcqTime.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - labelAcqTime.setText("Acquisition time(s):"); - buttonQueue.setText("Queue"); buttonQueue.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -510,32 +377,14 @@ public class Scan1D extends ScriptProcessor { jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() .addContainerGap() - .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(buttonStart, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(buttonAbort, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() - .addGap(0, 9, Short.MAX_VALUE) - .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(labelAcqTime) - .addComponent(labelTotalTime)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(textTotalTime, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(dvpAcqTime, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(1, 1, 1)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() - .addComponent(checkEndScan) - .addGap(0, 0, Short.MAX_VALUE)) - .addComponent(buttonQueue, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(buttonQueue, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonStart, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonAbort, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 234, Short.MAX_VALUE)) .addContainerGap()) ); - - jPanel3Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {dvpAcqTime, textTotalTime}); - - jPanel3Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {labelAcqTime, labelTotalTime}); - jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() @@ -543,38 +392,24 @@ public class Scan1D extends ScriptProcessor { .addComponent(buttonStart) .addGap(18, 18, 18) .addComponent(buttonAbort) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(buttonQueue) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) - .addComponent(labelAcqTime) - .addComponent(dvpAcqTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) - .addComponent(labelTotalTime) - .addComponent(textTotalTime)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(checkEndScan) - .addGap(26, 26, 26)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); - jPanel3Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {dvpAcqTime, textTotalTime}); - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap() - .addComponent(panelSensors, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGap(292, 292, 292) .addComponent(panelPositioner, 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()) ); - layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jPanel3, panelPositioner, panelSensors}); + layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jPanel3, panelPositioner}); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -582,20 +417,11 @@ public class Scan1D extends ScriptProcessor { .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(panelPositioner, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(panelSensors, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); }// //GEN-END:initComponents - private void buttonScientaSetupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonScientaSetupActionPerformed - try { - showDevicePanel("Scienta"); - } catch (Exception ex) { - SwingUtils.showException(this, ex); - } - }//GEN-LAST:event_buttonScientaSetupActionPerformed - private void buttonStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonStartActionPerformed try { execute(); @@ -607,7 +433,7 @@ public class Scan1D extends ScriptProcessor { private void buttonAbortActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonAbortActionPerformed try { abort(); - ((Scienta) getDevice("Scienta")).stop(); + ((AreaDetector) getDevice("ccd")).stop(); } catch (Exception ex) { showException(ex); } @@ -655,25 +481,10 @@ public class Scan1D extends ScriptProcessor { private javax.swing.ButtonGroup buttonGroup1; private javax.swing.ButtonGroup buttonGroup2; private javax.swing.JButton buttonQueue; - private javax.swing.JButton buttonScientaSetup; private javax.swing.JButton buttonStart; - private javax.swing.JCheckBox checkAngleDistribution; - private javax.swing.JCheckBox checkCounts1; - private javax.swing.JCheckBox checkCounts2; - private javax.swing.JCheckBox checkCounts3; - private javax.swing.JCheckBox checkCounts4; - private javax.swing.JCheckBox checkCur1; - private javax.swing.JCheckBox checkCur2; - private javax.swing.JCheckBox checkCur3; private javax.swing.JCheckBox checkCurrent; - private javax.swing.JCheckBox checkEndScan; - private javax.swing.JCheckBox checkFlyScan; private javax.swing.JCheckBox checkImage; - private javax.swing.JCheckBox checkImageIntegration; - private javax.swing.JCheckBox checkSpectrum; - private javax.swing.JCheckBox checkTotalCount; private javax.swing.JComboBox comboMotor; - private ch.psi.pshell.swing.DeviceValuePanel dvpAcqTime; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; @@ -682,8 +493,6 @@ public class Scan1D extends ScriptProcessor { private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JPanel jPanel3; - private javax.swing.JLabel labelAcqTime; - private javax.swing.JLabel labelTotalTime; private ch.psi.pshell.swing.MotorReadoutPanel motorPanel; private javax.swing.JPanel panelPositioner; private javax.swing.JPanel panelSensors; @@ -697,7 +506,6 @@ public class Scan1D extends ScriptProcessor { private javax.swing.JSpinner spinnerStepSize; private javax.swing.JSpinner spinnerSteps; private javax.swing.JSpinner spinnerTo; - private javax.swing.JLabel textTotalTime; private javax.swing.JLabel txtSize; // End of variables declaration//GEN-END:variables } diff --git a/plugins/Scan2D.form b/plugins/Scan2D.form deleted file mode 100644 index 2b5dcf8..0000000 --- a/plugins/Scan2D.form +++ /dev/null @@ -1,637 +0,0 @@ - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/plugins/Scan2D.java b/plugins/Scan2D.java deleted file mode 100644 index 6c42087..0000000 --- a/plugins/Scan2D.java +++ /dev/null @@ -1,707 +0,0 @@ -/* - * Copyright (c) 2014 Paul Scherrer Institute. All rights reserved. - */ - -import ch.psi.pshell.device.Device; -import ch.psi.pshell.device.DeviceAdapter; -import ch.psi.pshell.device.Motor; -import ch.psi.pshell.epics.Scienta; -import ch.psi.pshell.ui.Panel; -import ch.psi.pshell.ui.ScriptProcessor; -import ch.psi.utils.State; -import ch.psi.utils.swing.SwingUtils; -import java.awt.Component; -import java.time.LocalTime; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; -import javax.swing.JCheckBox; -import javax.swing.JSpinner; -import javax.swing.JToggleButton; -import javax.swing.SpinnerNumberModel; - -/** - * - */ -public class Scan2D extends ScriptProcessor { - - public Scan2D() { - initComponents(); - - //Component persistence - ArrayList persistedComponents = new ArrayList<>(); - persistedComponents.addAll(Arrays.asList(SwingUtils.getComponentsByType(this, JToggleButton.class))); - persistedComponents.addAll(Arrays.asList(SwingUtils.getComponentsByType(this, JSpinner.class))); - setPersistedComponents(persistedComponents.toArray(new Component[0])); - startTimer(1000); - } - - //Overridable callbacks - @Override - public void onInitialize(int runCount) { - Motor phi = (Motor) getDevice("ManipulatorPhi"); - Motor theta = (Motor) getDevice("ManipulatorTheta"); - Scienta scienta = (Scienta) getDevice("Scienta"); - motorPanelPhi.setDevice(phi); - motorPanelTheta.setDevice(theta); - dvpAcqTime.setDevice(scienta.getAcquisitionTime()); - try{ - spinnerFromPhi.setModel(new SpinnerNumberModel(Math.max(phi.getMinValue(),(Double)spinnerFromPhi.getValue()), phi.getMinValue(), phi.getMaxValue(), 1.0)); - spinnerToPhi.setModel(new SpinnerNumberModel(Math.min(phi.getMaxValue(),(Double)spinnerToPhi.getValue()), phi.getMinValue(), phi.getMaxValue(), 1.0)); - } catch (Exception ex){ - spinnerFromPhi.setModel(new SpinnerNumberModel(phi.getMinValue(), phi.getMinValue(), phi.getMaxValue(), 1.0)); - spinnerToPhi.setModel(new SpinnerNumberModel(phi.getMaxValue(), phi.getMinValue(), phi.getMaxValue(), 1.0)); - } - try{ - spinnerFromTheta.setModel(new SpinnerNumberModel(Math.max(theta.getMinValue(),(Double)spinnerFromTheta.getValue()), theta.getMinValue(), theta.getMaxValue(), 1.0)); - spinnerToTheta.setModel(new SpinnerNumberModel(Math.min(theta.getMaxValue(),(Double)spinnerToTheta.getValue()), theta.getMinValue(), theta.getMaxValue(), 1.0)); - } catch (Exception ex){ - spinnerFromTheta.setModel(new SpinnerNumberModel(theta.getMinValue(), theta.getMinValue(), theta.getMaxValue(), 1.0)); - spinnerToTheta.setModel(new SpinnerNumberModel(theta.getMaxValue(), theta.getMinValue(), theta.getMaxValue(), 1.0)); - } - } - - protected void onTimer(){ - try{ - int steps = (radioSteps.isSelected() ? - (Integer)spinnerStepsPhi.getValue() * (Integer)spinnerStepsTheta.getValue() : - (int)(Math.abs((Double)spinnerToPhi.getValue() - (Double)spinnerFromPhi.getValue()) / (Double)spinnerStepSizePhi.getValue() + 1) * - (int)(Math.abs((Double)spinnerToTheta.getValue() - (Double)spinnerFromTheta.getValue()) / (Double)spinnerStepSizeTheta.getValue() +1)); - int seconds = (int) (Double.valueOf(dvpAcqTime.getLabel().getText()) * steps); - int hours= seconds / (60 * 60); - textTotalTime.setText(hours >= 24 ? hours+"h": LocalTime.ofSecondOfDay(seconds).toString()); - } catch (Exception ex){ - textTotalTime.setText(""); - } - } - - @Override - public void onStateChange(State state, State former) { - setEnabled(isEnabled()); - } - - @Override - public void onExecutedFile(String fileName, Object result) { - } - - - @Override - public void setEnabled(boolean value) { - super.setEnabled(value); - - boolean enableControls = (value && (getState()==State.Ready)); - for (Component c : panelSensors.getComponents()) { - c.setEnabled(enableControls); - } - for (Component c : panelPositioners.getComponents()) { - c.setEnabled(enableControls); - } - - labelAcqTime.setEnabled(enableControls); - labelTotalTime.setEnabled(enableControls); - buttonStart.setEnabled(enableControls); - checkEndScan.setEnabled(enableControls); - - buttonAbort.setEnabled(value && getState().isInitialized()); - - spinnerStepSizePhi.setEnabled(enableControls && radioStepSize.isSelected()); - spinnerStepsPhi.setEnabled(enableControls && radioSteps.isSelected()); - spinnerFromPhi.setEnabled(enableControls); - spinnerToPhi.setEnabled(enableControls); - - spinnerStepSizeTheta.setEnabled(spinnerStepSizePhi.isEnabled()); - spinnerStepsTheta.setEnabled(spinnerStepsPhi.isEnabled()); - spinnerFromTheta.setEnabled(spinnerFromPhi.isEnabled()); - spinnerToTheta.setEnabled(spinnerToPhi.isEnabled()); - - buttonScientaSetup.setEnabled(value); - } - - @Override - public String getScript() { - return "HoloScan"; - } - - @Override - public Map getArgs() { - HashMap args = new HashMap<>(); - ArrayList sensors = new ArrayList(); - for (Component c : panelSensors.getComponents()) { - if ((c instanceof JCheckBox) && ((JCheckBox) c).isSelected()) { - sensors.add(c.getName()); - } - } - args.put("SENSORS", sensors); - args.put("PHI_RANGE", new Double[]{(Double) spinnerFromPhi.getValue(), (Double) spinnerToPhi.getValue()}); - args.put("THETA_RANGE", new Double[]{(Double) spinnerFromTheta.getValue(), (Double) spinnerToTheta.getValue()}); - ArrayList steps = new ArrayList(); - if (radioStepSize.isSelected()) { - steps.add((Double) spinnerStepSizePhi.getValue()); - steps.add((Double) spinnerStepSizeTheta.getValue()); - } else { - steps.add((Integer) spinnerStepsPhi.getValue()); - steps.add((Integer) spinnerStepsTheta.getValue()); - } - args.put("STEPS", steps); - args.put("LATENCY", (Double) 0.0); - args.put("RELATIVE", false); - args.put("ZIGZAG", checkZigzag.isSelected()); - args.put("ENDSCAN", checkEndScan.isSelected()); - return args; - } - - - @SuppressWarnings("unchecked") - // //GEN-BEGIN:initComponents - private void initComponents() { - - buttonGroup1 = new javax.swing.ButtonGroup(); - buttonGroup2 = new javax.swing.ButtonGroup(); - panelPositioners = new javax.swing.JPanel(); - motorPanelPhi = new ch.psi.pshell.swing.MotorReadoutPanel(); - radioStepSize = new javax.swing.JRadioButton(); - radioSteps = new javax.swing.JRadioButton(); - spinnerStepSizePhi = new javax.swing.JSpinner(); - spinnerStepsPhi = new javax.swing.JSpinner(); - spinnerFromPhi = new javax.swing.JSpinner(); - jLabel4 = new javax.swing.JLabel(); - jLabel5 = new javax.swing.JLabel(); - spinnerToPhi = new javax.swing.JSpinner(); - jLabel6 = new javax.swing.JLabel(); - jLabel7 = new javax.swing.JLabel(); - motorPanelTheta = new ch.psi.pshell.swing.MotorReadoutPanel(); - jLabel8 = new javax.swing.JLabel(); - jLabel9 = new javax.swing.JLabel(); - spinnerFromTheta = new javax.swing.JSpinner(); - spinnerToTheta = new javax.swing.JSpinner(); - jLabel11 = new javax.swing.JLabel(); - jLabel12 = new javax.swing.JLabel(); - spinnerStepSizeTheta = new javax.swing.JSpinner(); - jLabel13 = new javax.swing.JLabel(); - jLabel14 = new javax.swing.JLabel(); - spinnerStepsTheta = new javax.swing.JSpinner(); - checkZigzag = new javax.swing.JCheckBox(); - panelSensors = new javax.swing.JPanel(); - checkImage = new javax.swing.JCheckBox(); - checkImageIntegration = new javax.swing.JCheckBox(); - checkAngleDistribution = new javax.swing.JCheckBox(); - checkSpectrum = new javax.swing.JCheckBox(); - checkTotalCount = new javax.swing.JCheckBox(); - checkCounts1 = new javax.swing.JCheckBox(); - checkCounts2 = new javax.swing.JCheckBox(); - checkCounts3 = new javax.swing.JCheckBox(); - checkCounts4 = new javax.swing.JCheckBox(); - checkCurrent = new javax.swing.JCheckBox(); - checkCur1 = new javax.swing.JCheckBox(); - checkCur2 = new javax.swing.JCheckBox(); - checkCur3 = new javax.swing.JCheckBox(); - buttonScientaSetup = new javax.swing.JButton(); - panelScan = new javax.swing.JPanel(); - buttonStart = new javax.swing.JButton(); - buttonAbort = new javax.swing.JButton(); - checkEndScan = new javax.swing.JCheckBox(); - labelAcqTime = new javax.swing.JLabel(); - dvpAcqTime = new ch.psi.pshell.swing.DeviceValuePanel(); - labelTotalTime = new javax.swing.JLabel(); - textTotalTime = new javax.swing.JLabel(); - buttonQueue = new javax.swing.JButton(); - - panelPositioners.setBorder(javax.swing.BorderFactory.createTitledBorder("Positioners")); - panelPositioners.setPreferredSize(new java.awt.Dimension(248, 543)); - - buttonGroup1.add(radioStepSize); - radioStepSize.setSelected(true); - radioStepSize.setText("Step Size"); - radioStepSize.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - radioStepSizeActionPerformed(evt); - } - }); - - buttonGroup1.add(radioSteps); - radioSteps.setText("Number of Steps"); - radioSteps.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - radioStepSizeActionPerformed(evt); - } - }); - - spinnerStepSizePhi.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.1d, 180.0d, 0.1d)); - - spinnerStepsPhi.setModel(new javax.swing.SpinnerNumberModel(10, 1, 1000, 1)); - spinnerStepsPhi.setEnabled(false); - - spinnerFromPhi.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.0d, 1.0d, 1.0d)); - - jLabel4.setText("Phi From:"); - - jLabel5.setText("Phi To:"); - - spinnerToPhi.setModel(new javax.swing.SpinnerNumberModel(10.0d, 0.0d, 10.0d, 1.0d)); - - jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - jLabel6.setText("Phi:"); - - jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - jLabel7.setText("Theta:"); - - jLabel8.setText("Theta To:"); - - jLabel9.setText("Theta From:"); - - spinnerFromTheta.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.0d, 1.0d, 1.0d)); - - spinnerToTheta.setModel(new javax.swing.SpinnerNumberModel(10.0d, 0.0d, 10.0d, 1.0d)); - - jLabel11.setText("Phi:"); - - jLabel12.setText("Theta:"); - - spinnerStepSizeTheta.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.1d, 90.0d, 0.1d)); - - jLabel13.setText("Phi:"); - - jLabel14.setText("Theta:"); - - spinnerStepsTheta.setModel(new javax.swing.SpinnerNumberModel(10, 1, 1000, 1)); - spinnerStepsTheta.setEnabled(false); - - checkZigzag.setText("Zigzag"); - - javax.swing.GroupLayout panelPositionersLayout = new javax.swing.GroupLayout(panelPositioners); - panelPositioners.setLayout(panelPositionersLayout); - panelPositionersLayout.setHorizontalGroup( - panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelPositionersLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelPositionersLayout.createSequentialGroup() - .addComponent(jLabel6) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(motorPanelPhi, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPositionersLayout.createSequentialGroup() - .addGap(0, 36, Short.MAX_VALUE) - .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPositionersLayout.createSequentialGroup() - .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jLabel5, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jLabel8, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jLabel9, javax.swing.GroupLayout.Alignment.TRAILING)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(spinnerFromPhi, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 91, Short.MAX_VALUE) - .addComponent(spinnerToPhi, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(spinnerFromTheta, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(spinnerToTheta, javax.swing.GroupLayout.Alignment.TRAILING))) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPositionersLayout.createSequentialGroup() - .addComponent(jLabel11) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(spinnerStepSizePhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPositionersLayout.createSequentialGroup() - .addComponent(jLabel12) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(spinnerStepSizeTheta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPositionersLayout.createSequentialGroup() - .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jLabel14) - .addComponent(jLabel13)) - .addGap(6, 6, 6) - .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(spinnerStepsPhi, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(spinnerStepsTheta, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))) - .addGroup(panelPositionersLayout.createSequentialGroup() - .addComponent(jLabel7) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(motorPanelTheta, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGroup(panelPositionersLayout.createSequentialGroup() - .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(radioSteps) - .addComponent(radioStepSize) - .addComponent(checkZigzag)) - .addGap(0, 0, Short.MAX_VALUE))) - .addContainerGap()) - ); - - panelPositionersLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {radioStepSize, radioSteps}); - - panelPositionersLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerStepSizePhi, spinnerStepSizeTheta, spinnerStepsPhi}); - - panelPositionersLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel6, jLabel7}); - - panelPositionersLayout.setVerticalGroup( - panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelPositionersLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) - .addComponent(jLabel6) - .addComponent(motorPanelPhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) - .addComponent(jLabel7) - .addComponent(motorPanelTheta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(spinnerFromPhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel4)) - .addGap(3, 3, 3) - .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(spinnerToPhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel5)) - .addGap(3, 3, 3) - .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(spinnerFromTheta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel9)) - .addGap(3, 3, 3) - .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(spinnerToTheta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel8)) - .addGap(18, 18, 18) - .addComponent(radioStepSize) - .addGap(3, 3, 3) - .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(spinnerStepSizePhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel11)) - .addGap(3, 3, 3) - .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(spinnerStepSizeTheta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel12)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(radioSteps) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(spinnerStepsPhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel13)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(spinnerStepsTheta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel14)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkZigzag) - .addContainerGap(99, Short.MAX_VALUE)) - ); - - panelSensors.setBorder(javax.swing.BorderFactory.createTitledBorder("Sensors")); - panelSensors.setPreferredSize(new java.awt.Dimension(248, 543)); - - checkImage.setSelected(true); - checkImage.setText("Scienta Image"); - checkImage.setToolTipText(""); - checkImage.setContentAreaFilled(false); - checkImage.setName("Scienta.dataMatrix"); // NOI18N - - checkImageIntegration.setSelected(true); - checkImageIntegration.setText("Scienta Energy Distribution"); - checkImageIntegration.setToolTipText(""); - checkImageIntegration.setContentAreaFilled(false); - checkImageIntegration.setName("EnergyDistribution"); // NOI18N - - checkAngleDistribution.setSelected(true); - checkAngleDistribution.setText("Scienta Angle Distribution"); - checkAngleDistribution.setToolTipText(""); - checkAngleDistribution.setContentAreaFilled(false); - checkAngleDistribution.setName("AngleDistribution"); // NOI18N - - checkSpectrum.setText("Scienta Spectrum"); - checkSpectrum.setName("Scienta.spectrum"); // NOI18N - - checkTotalCount.setSelected(true); - checkTotalCount.setText("Total Counts"); - checkTotalCount.setName("Counts"); // NOI18N - - checkCounts1.setText("Counts Region 1"); - checkCounts1.setName("CountsR1"); // NOI18N - - checkCounts2.setText("Counts Region 2"); - checkCounts2.setName("CountsR2"); // NOI18N - - checkCounts3.setText("Counts Region 3"); - checkCounts3.setName("CountsR3"); // NOI18N - - checkCounts4.setText("Counts Region 4"); - checkCounts4.setName("CountsR4"); // NOI18N - - checkCurrent.setText("Machine Current"); - checkCurrent.setName("MachineCurrent"); // NOI18N - - checkCur1.setText("Sample Current"); - checkCur1.setName("SampleCurrent"); // NOI18N - - checkCur2.setText("Ref Current"); - checkCur2.setName("RefCurrent"); // NOI18N - - checkCur3.setText("Aux Current"); - checkCur3.setName("AuxCurrent"); // NOI18N - - buttonScientaSetup.setText("Scienta Setup"); - buttonScientaSetup.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - buttonScientaSetupActionPerformed(evt); - } - }); - - javax.swing.GroupLayout panelSensorsLayout = new javax.swing.GroupLayout(panelSensors); - panelSensors.setLayout(panelSensorsLayout); - panelSensorsLayout.setHorizontalGroup( - panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelSensorsLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(buttonScientaSetup, javax.swing.GroupLayout.DEFAULT_SIZE, 208, Short.MAX_VALUE) - .addComponent(checkImage) - .addComponent(checkImageIntegration) - .addComponent(checkSpectrum) - .addComponent(checkCounts1) - .addComponent(checkTotalCount) - .addComponent(checkCounts2) - .addComponent(checkCounts3) - .addComponent(checkCounts4) - .addComponent(checkCurrent) - .addComponent(checkCur1) - .addComponent(checkCur2) - .addComponent(checkCur3) - .addComponent(checkAngleDistribution)) - .addContainerGap()) - ); - panelSensorsLayout.setVerticalGroup( - panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelSensorsLayout.createSequentialGroup() - .addContainerGap() - .addComponent(checkImage) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkImageIntegration) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkAngleDistribution) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkSpectrum) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkTotalCount) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkCounts1) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkCounts2) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkCounts3) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkCounts4) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkCurrent) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkCur1) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkCur2) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(checkCur3) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 97, Short.MAX_VALUE) - .addComponent(buttonScientaSetup) - .addGap(26, 26, 26)) - ); - - panelScan.setBorder(javax.swing.BorderFactory.createTitledBorder("Scan Control")); - panelScan.setPreferredSize(new java.awt.Dimension(248, 543)); - - buttonStart.setText("Start"); - buttonStart.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - buttonStartActionPerformed(evt); - } - }); - - buttonAbort.setText("Abort"); - buttonAbort.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - buttonAbortActionPerformed(evt); - } - }); - - checkEndScan.setText("Turn off beam at end"); - - labelAcqTime.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - labelAcqTime.setText("Acquisition time(s):"); - - labelTotalTime.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - labelTotalTime.setText("Total time:"); - - textTotalTime.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - textTotalTime.setBorder(javax.swing.BorderFactory.createTitledBorder("")); - - buttonQueue.setText("Queue"); - buttonQueue.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - buttonQueueActionPerformed(evt); - } - }); - - javax.swing.GroupLayout panelScanLayout = new javax.swing.GroupLayout(panelScan); - panelScan.setLayout(panelScanLayout); - panelScanLayout.setHorizontalGroup( - panelScanLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelScanLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelScanLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(buttonStart, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(buttonAbort, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(panelScanLayout.createSequentialGroup() - .addGroup(panelScanLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(labelAcqTime) - .addComponent(labelTotalTime)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelScanLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(textTotalTime, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(dvpAcqTime, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(0, 6, Short.MAX_VALUE)) - .addGroup(panelScanLayout.createSequentialGroup() - .addComponent(checkEndScan) - .addGap(53, 53, 53)) - .addComponent(buttonQueue, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - ); - - panelScanLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {labelAcqTime, labelTotalTime}); - - panelScanLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {dvpAcqTime, textTotalTime}); - - panelScanLayout.setVerticalGroup( - panelScanLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelScanLayout.createSequentialGroup() - .addContainerGap() - .addComponent(buttonStart) - .addGap(18, 18, 18) - .addComponent(buttonAbort) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(buttonQueue) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(panelScanLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) - .addComponent(labelAcqTime) - .addComponent(dvpAcqTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(panelScanLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) - .addComponent(textTotalTime) - .addComponent(labelTotalTime)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(checkEndScan) - .addGap(26, 26, 26)) - ); - - panelScanLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {dvpAcqTime, textTotalTime}); - - 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() - .addComponent(panelSensors, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(panelPositioners, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(panelScan, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {panelPositioners, panelScan, panelSensors}); - - layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(panelPositioners, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(panelSensors, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(panelScan, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - ); - }// //GEN-END:initComponents - - private void buttonScientaSetupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonScientaSetupActionPerformed - try{ - showDevicePanel("Scienta"); - } catch (Exception ex){ - SwingUtils.showException(this, ex); - } - }//GEN-LAST:event_buttonScientaSetupActionPerformed - - private void buttonStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonStartActionPerformed - try{ - execute(); - } catch (Exception ex){ - SwingUtils.showException(this, ex); - } - }//GEN-LAST:event_buttonStartActionPerformed - - private void buttonAbortActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonAbortActionPerformed - try { - abort(); - ((Scienta) getDevice("Scienta")).stop(); - } catch (Exception ex) { - showException(ex); - } - }//GEN-LAST:event_buttonAbortActionPerformed - - private void radioStepSizeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioStepSizeActionPerformed - setEnabled(isEnabled()); - }//GEN-LAST:event_radioStepSizeActionPerformed - - private void buttonQueueActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonQueueActionPerformed - try { - queue(); - } catch (Exception ex) { - SwingUtils.showException(this, ex); - } - }//GEN-LAST:event_buttonQueueActionPerformed - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JButton buttonAbort; - private javax.swing.ButtonGroup buttonGroup1; - private javax.swing.ButtonGroup buttonGroup2; - private javax.swing.JButton buttonQueue; - private javax.swing.JButton buttonScientaSetup; - private javax.swing.JButton buttonStart; - private javax.swing.JCheckBox checkAngleDistribution; - private javax.swing.JCheckBox checkCounts1; - private javax.swing.JCheckBox checkCounts2; - private javax.swing.JCheckBox checkCounts3; - private javax.swing.JCheckBox checkCounts4; - private javax.swing.JCheckBox checkCur1; - private javax.swing.JCheckBox checkCur2; - private javax.swing.JCheckBox checkCur3; - private javax.swing.JCheckBox checkCurrent; - private javax.swing.JCheckBox checkEndScan; - private javax.swing.JCheckBox checkImage; - private javax.swing.JCheckBox checkImageIntegration; - private javax.swing.JCheckBox checkSpectrum; - private javax.swing.JCheckBox checkTotalCount; - private javax.swing.JCheckBox checkZigzag; - private ch.psi.pshell.swing.DeviceValuePanel dvpAcqTime; - private javax.swing.JLabel jLabel11; - private javax.swing.JLabel jLabel12; - private javax.swing.JLabel jLabel13; - private javax.swing.JLabel jLabel14; - private javax.swing.JLabel jLabel4; - private javax.swing.JLabel jLabel5; - private javax.swing.JLabel jLabel6; - private javax.swing.JLabel jLabel7; - private javax.swing.JLabel jLabel8; - private javax.swing.JLabel jLabel9; - private javax.swing.JLabel labelAcqTime; - private javax.swing.JLabel labelTotalTime; - private ch.psi.pshell.swing.MotorReadoutPanel motorPanelPhi; - private ch.psi.pshell.swing.MotorReadoutPanel motorPanelTheta; - private javax.swing.JPanel panelPositioners; - private javax.swing.JPanel panelScan; - private javax.swing.JPanel panelSensors; - private javax.swing.JRadioButton radioStepSize; - private javax.swing.JRadioButton radioSteps; - private javax.swing.JSpinner spinnerFromPhi; - private javax.swing.JSpinner spinnerFromTheta; - private javax.swing.JSpinner spinnerStepSizePhi; - private javax.swing.JSpinner spinnerStepSizeTheta; - private javax.swing.JSpinner spinnerStepsPhi; - private javax.swing.JSpinner spinnerStepsTheta; - private javax.swing.JSpinner spinnerToPhi; - private javax.swing.JSpinner spinnerToTheta; - private javax.swing.JLabel textTotalTime; - // End of variables declaration//GEN-END:variables -} - diff --git a/script/local.py b/script/local.py index f57f70d..50518cb 100644 --- a/script/local.py +++ b/script/local.py @@ -2,9 +2,16 @@ # Deployment specific global definitions - executed after startup.py ################################################################################################### - def trig_ccd(): - pass + return + if ccd.isSimulated(): + time.sleep(0.1) + else: + image_id = ccd.currentImageCount + ccd.start() + ccd.waitReady(-1) + ccd.waitNewImage(3000, image_id) + def is_beam_ok(): return True diff --git a/script/templates/Scan1D.py b/script/templates/Scan1D.py index 5f3683f..fcde353 100644 --- a/script/templates/Scan1D.py +++ b/script/templates/Scan1D.py @@ -7,40 +7,17 @@ RANGE (tuple (min, max)) STEPS (int or tuple) LATENCY (double) RELATIVE (BOOLEAN) -FLY_SCAN (BOOLEAN) -ENDSCAN (BOOLEAN) """ - -#set_preference(Preference.PLOT_TYPES,{'ImageIntegrator':1}) -adjust_sensors() -set_adc_averaging() -set_preference(Preference.PLOT_TYPES, {'Scienta spectrum':1}) -set_exec_pars(compression=True) +#Debugging +if get_exec_pars().args is None: + MOTOR = dummy_x + SENSORS = [current, ccd.dataMatrix] + RANGE = [0.0,1.0] + STEPS = 5 + LATENCY = 0.1 + RELATIVE = False try: - if FLY_SCAN: - # time per scienta acquisition in seconds - trig_scienta() - time1 = time.time() - before_readout() - time.sleep(0.2) - time2 = time.time() - scienta_time = (time2 - time1) + 1. - print "step time: ", scienta_time - - if isinstance(STEPS,int): - raise Exception ("Fly Scan must define step size, and not number of steps") - - STEP = STEPS[0] - SPEED = STEP / scienta_time - fly_time = (RANGE[1] - RANGE[0]) / SPEED - STEPS = int(fly_time / scienta_time) + 1 - - print "speed: ", SPEED - print "scan time: ", fly_time - cscan(MOTOR, SENSORS, RANGE[0], RANGE[1], STEPS, LATENCY, fly_time, RELATIVE, before_read=before_readout, after_read = after_readout, check_positions = False) - else: - lscan(MOTOR, SENSORS, RANGE[0], RANGE[1], STEPS, LATENCY, RELATIVE, before_read=before_readout, after_read = after_readout) + r = lscan(MOTOR, SENSORS, RANGE[0], RANGE[1], STEPS, LATENCY, RELATIVE, before_read=before_readout, after_read = after_readout, compression=True) finally: - if ENDSCAN: - after_scan() + after_scan() diff --git a/script/templates/Scan2D.py b/script/templates/Scan2D.py index a419839..307100e 100644 --- a/script/templates/Scan2D.py +++ b/script/templates/Scan2D.py @@ -24,7 +24,8 @@ if get_exec_pars().args is None: ZIGZAG = True try: - ascan((ManipulatorPhi, ManipulatorTheta), SENSORS, (PHI_RANGE[0], THETA_RANGE[0]), (PHI_RANGE[1], THETA_RANGE[1]), STEPS, LATENCY, RELATIVE, zigzag = ZIGZAG, \ + ascan((MOTORS[0], MOTORS[1]), SENSORS, (RANGE_X[0], RANGE_Y[0]), (RANGE_X[1], RANGE_Y[1]), STEPS, LATENCY, RELATIVE, zigzag = ZIGZAG, \ before_read=before_readout, after_read = after_readout, compression = True) finally: - after_scan() \ No newline at end of file + after_scan() + \ No newline at end of file