/* * Copyright (c) 2014-2017 Paul Scherrer Institute. All rights reserved. */ import ch.psi.pshell.framework.Panel; import ch.psi.pshell.framework.Plugin; import ch.psi.pshell.swing.SwingUtils; import ch.psi.pshell.utils.State; import java.util.ArrayList; import java.util.List; import javax.swing.DefaultComboBoxModel; /** * */ public class WireScanCalibration extends Panel { public WireScanCalibration() { initComponents(); } //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_scanners()", true); for (String scan: ret){ model.addElement(scan); } comboWireScanner.setModel(model); } catch (Exception ex) { showException(ex); } } //S20CB01-DWSC440:MOTOR_1_HOME.PROC @Override public void onStateChange(State state, State former) { buttonScan.setEnabled(state==State.Ready) ; buttonAbort.setEnabled(state==State.Busy); } @Override public void onExecutedFile(String fileName, Object result) { } //Callback to perform update - in event thread @Override protected void doUpdate() { } @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { plot = new ch.psi.pshell.plot.LinePlotJFree(); panelLeft = new javax.swing.JPanel(); buttonScan = new javax.swing.JButton(); comboWire = new javax.swing.JComboBox(); jLabel7 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); comboWireScanner = new javax.swing.JComboBox(); jLabel20 = new javax.swing.JLabel(); spinnerRangeStart = new javax.swing.JSpinner(); buttonAbort = new javax.swing.JButton(); jLabel6 = new javax.swing.JLabel(); spinnerRangeEnd = new javax.swing.JSpinner(); spinnerScanPoints = new javax.swing.JSpinner(); jLabel8 = new javax.swing.JLabel(); jLabel9 = new javax.swing.JLabel(); spinnerSaturation = new javax.swing.JSpinner(); jLabel10 = new javax.swing.JLabel(); spinnerRangeFactor = new javax.swing.JSpinner(); jLabel11 = new javax.swing.JLabel(); spinnerInitialGain = new javax.swing.JSpinner(); buttonSetRange = new javax.swing.JButton(); buttonSetGain = new javax.swing.JButton(); jLabel3 = new javax.swing.JLabel(); textBlm = new javax.swing.JTextField(); plot.setTitle(""); buttonScan.setText("Start"); buttonScan.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonScanActionPerformed(evt); } }); comboWire.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "X1", "Y1", "X2", "Y2" })); jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel7.setText("Range End X (µm):"); jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel2.setText("Wire:"); comboWireScanner.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { comboWireScannerActionPerformed(evt); } }); jLabel20.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel20.setText("Wire Scanner:"); spinnerRangeStart.setModel(new javax.swing.SpinnerNumberModel(-2000.0d, -10000.0d, 10000.0d, 1.0d)); buttonAbort.setText("Abort"); buttonAbort.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonAbortActionPerformed(evt); } }); jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel6.setText("Range Start (µm):"); spinnerRangeEnd.setModel(new javax.swing.SpinnerNumberModel(2000.0d, -10000.0d, 10000.0d, 1.0d)); spinnerScanPoints.setModel(new javax.swing.SpinnerNumberModel(200.0d, 10.0d, 10000.0d, 1.0d)); jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel8.setText("Scan points:"); jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel9.setText("Saturation:"); spinnerSaturation.setModel(new javax.swing.SpinnerNumberModel(1995.0d, 10.0d, 100000.0d, 1.0d)); jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel10.setText("Range factor:"); spinnerRangeFactor.setModel(new javax.swing.SpinnerNumberModel(6.0d, 1.0d, 20.0d, 1.0d)); jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel11.setText("Initial Gain:"); spinnerInitialGain.setModel(new javax.swing.SpinnerNumberModel(0.6d, 0.5d, 1.1d, 0.1d)); buttonSetRange.setText("Set Range"); buttonSetRange.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonSetRangeActionPerformed(evt); } }); buttonSetGain.setText("Set Gain"); buttonSetGain.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonSetGainActionPerformed(evt); } }); jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel3.setText("BLM:"); textBlm.setEditable(false); javax.swing.GroupLayout panelLeftLayout = new javax.swing.GroupLayout(panelLeft); panelLeft.setLayout(panelLeftLayout); panelLeftLayout.setHorizontalGroup( panelLeftLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelLeftLayout.createSequentialGroup() .addContainerGap() .addGroup(panelLeftLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelLeftLayout.createSequentialGroup() .addComponent(buttonScan) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(buttonAbort) .addContainerGap()) .addGroup(panelLeftLayout.createSequentialGroup() .addComponent(buttonSetRange) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(buttonSetGain)) .addGroup(panelLeftLayout.createSequentialGroup() .addGroup(panelLeftLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(panelLeftLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel20, javax.swing.GroupLayout.DEFAULT_SIZE, 86, Short.MAX_VALUE) .addComponent(jLabel9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelLeftLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(comboWireScanner, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(comboWire, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(spinnerRangeStart) .addComponent(spinnerRangeEnd) .addComponent(spinnerScanPoints) .addComponent(spinnerSaturation) .addComponent(spinnerRangeFactor) .addComponent(spinnerInitialGain) .addComponent(textBlm))))) ); panelLeftLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel10, jLabel11, jLabel2, jLabel20, jLabel6, jLabel7, jLabel8, jLabel9}); panelLeftLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonAbort, buttonScan, buttonSetGain, buttonSetRange}); panelLeftLayout.setVerticalGroup( panelLeftLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelLeftLayout.createSequentialGroup() .addGap(0, 0, 0) .addGroup(panelLeftLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(comboWireScanner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel20)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelLeftLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(comboWire, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel2)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelLeftLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3) .addComponent(textBlm, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(47, 47, 47) .addGroup(panelLeftLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel6) .addComponent(spinnerRangeStart, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelLeftLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel7) .addComponent(spinnerRangeEnd, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelLeftLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel11) .addComponent(spinnerInitialGain, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addGroup(panelLeftLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(buttonSetRange) .addComponent(buttonSetGain)) .addGap(27, 27, 27) .addGroup(panelLeftLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel8) .addComponent(spinnerScanPoints, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelLeftLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel9) .addComponent(spinnerSaturation, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelLeftLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel10) .addComponent(spinnerRangeFactor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 76, Short.MAX_VALUE) .addGroup(panelLeftLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(buttonAbort) .addComponent(buttonScan)) .addGap(43, 43, 43)) ); 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(panelLeft, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(plot, javax.swing.GroupLayout.DEFAULT_SIZE, 425, Short.MAX_VALUE) .addGap(11, 11, 11)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(panelLeft, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(plot, javax.swing.GroupLayout.DEFAULT_SIZE, 484, Short.MAX_VALUE)) .addContainerGap()) ); }// //GEN-END:initComponents private void buttonScanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonScanActionPerformed try { ArrayList parameters = new ArrayList(); parameters.add(comboWireScanner.getSelectedItem().toString()); parameters.add(plot); parameters.add(comboWire.getSelectedItem().toString()); parameters.add(spinnerRangeStart.getValue()); parameters.add(spinnerRangeEnd.getValue()); parameters.add(spinnerScanPoints.getValue()); parameters.add(spinnerSaturation.getValue()); parameters.add(spinnerRangeFactor.getValue()); parameters.add(spinnerInitialGain.getValue()); runAsync("Diagnostics/WireScanCalibration", parameters).handle((ret, ex) -> { if (ex != null) { getLogger().info("Exception executing scan: " + ex); showException((Exception) ex); } else { SwingUtils.showMessage(WireScanCalibration.this, "Success", String.valueOf(ret)); } return ret; }); } catch (Exception ex) { showException(ex); ex.printStackTrace(); } }//GEN-LAST:event_buttonScanActionPerformed private void buttonAbortActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonAbortActionPerformed try { abort(); } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_buttonAbortActionPerformed private void buttonSetRangeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonSetRangeActionPerformed try { String ws_blm = comboWireScanner.getSelectedItem().toString(); String ws_wire = comboWire.getSelectedItem().toString(); Object start = spinnerRangeStart.getValue(); Object end = spinnerRangeEnd.getValue(); switch (ws_wire){ case "X1": ws_wire = "W1X"; break; case "Y1": ws_wire = "W1Y"; break; case "X2": ws_wire = "W2X"; break; case "Y2": ws_wire = "W2Y"; break; } //caput((ws_prefix + ":" + sel[wire] +"_START_SP"), start) //caput((ws_prefix + ":" + sel[wire] +"_END_SP"), end) String cmd = "caput('" + ws_blm + ":" + ws_wire + "_START_SP', " + start + ")"; System.out.println(cmd); //eval(cmd, true); cmd = "caput('" + ws_blm + ":" + ws_wire + "_END_SP', " + end + ")"; System.out.println(cmd); //eval(cmd, true); } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_buttonSetRangeActionPerformed private void buttonSetGainActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonSetGainActionPerformed try { String ws_blm = textBlm.getText(); if (!(ws_blm==null) && (!ws_blm.isEmpty())){ String ws_wire = comboWire.getSelectedItem().toString(); Object val = spinnerInitialGain.getValue(); String cmd = "set_setting('" + ws_blm + "GainWs" + ws_wire + "', " + val + ")"; eval(cmd, true); } } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_buttonSetGainActionPerformed private void comboWireScannerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboWireScannerActionPerformed try { String ws_prefix = comboWireScanner.getSelectedItem().toString(); String cmd = "get_wire_scanners_blms('" + ws_prefix + "')"; List blms=(List) eval(cmd, true); textBlm.setText(blms.get(0).toString()); } catch (Exception ex) { textBlm.setText(""); } }//GEN-LAST:event_comboWireScannerActionPerformed //String caqtdm = "caqtdm -noMsg -stylefile sfop.qss -attach"; String caqtdm = "caqtdm -noMsg -stylefile sfop.qss"; // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton buttonAbort; private javax.swing.JButton buttonScan; private javax.swing.JButton buttonSetGain; private javax.swing.JButton buttonSetRange; private javax.swing.JComboBox comboWire; private javax.swing.JComboBox comboWireScanner; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel20; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel panelLeft; private ch.psi.pshell.plot.LinePlotJFree plot; private javax.swing.JSpinner spinnerInitialGain; private javax.swing.JSpinner spinnerRangeEnd; private javax.swing.JSpinner spinnerRangeFactor; private javax.swing.JSpinner spinnerRangeStart; private javax.swing.JSpinner spinnerSaturation; private javax.swing.JSpinner spinnerScanPoints; private javax.swing.JTextField textBlm; // End of variables declaration//GEN-END:variables }