import ch.psi.pshell.ui.CamServerViewer; import ch.psi.pshell.ui.Panel; import ch.psi.utils.State; import java.io.IOException; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; /** * */ public class Pointing extends Panel { public Pointing() { initComponents(); try { viewer.initialize(CamServerViewer.SourceSelecionMode.Single); viewer.setCameraServerUrl("sf-daqsync-01:8888"); viewer.setPipelineServerUrl("sf-daqsync-01:8889"); viewer.setStartupStream(TOOL_TIP_TEXT_KEY); viewer.setToolbarVisible(false); viewer.setZoom(2.0); } catch (Exception ex) { showException(ex); } } //Overridable callbacks @Override public void onInitialize(int runCount) { try { viewer.setStream("SAROP21-PPRM094_sp"); } catch (Exception ex) { showException(ex); } this.startTimer(1000, 1000); } @Override public void onStateChange(State state, State former) { buttonStart.setEnabled(state.isReady()); } @Override public void onExecutedFile(String fileName, Object result) { } @Override protected void onTimer() { try{ Object img = viewer.getStreamDevice().take().getValue("image"); this.setGlobalVar("plugin_img", img); Object ret = eval("get_saturated_pixels(plugin_img)", true); textSaturated.setText((ret==null) ? "" : ret.toString()); } catch (Exception ex){ textSaturated.setText(""); this.getLogger().severe(ex.getMessage()); } if (ckOffsetCheck.isSelected()){ try{ Object ret = this.run("pointing/check_offset", null, true); List offset = (List) ret; Double offX = (Double) offset.get(0); Double offY = (Double) offset.get(1); textOffX.setText(String.format("%1.3f",offX)); textOffY.setText(String.format("%1.3f",offY)); } catch (Exception ex){ textOffX.setText(""); textOffY.setText(""); //showException(ex); } } } @Override protected void onLoaded() { } @Override protected void onUnloaded() { } //Invoked by 'update()' to update components in the event thread @Override protected void doUpdate() { } @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { viewer = new ch.psi.pshell.ui.CamServerViewer(); processVariablePanel1 = new ch.psi.pshell.swing.ProcessVariablePanel(); jLabel1 = new javax.swing.JLabel(); textSaturated = new javax.swing.JTextField(); buttonStart = new javax.swing.JButton(); buttonRefOffAp = new javax.swing.JButton(); buttonEnd = new javax.swing.JButton(); jLabel2 = new javax.swing.JLabel(); textOffX = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); textOffY = new javax.swing.JTextField(); ckOffsetCheck = new javax.swing.JCheckBox(); processVariablePanel1.setDeviceName("attenuator"); processVariablePanel1.setShowLimitButtons(false); processVariablePanel1.setShowSlider(false); processVariablePanel1.setShowStop(false); processVariablePanel1.setStepIncrement(0.01); processVariablePanel1.setStepSize(0.01); jLabel1.setText("Saturated Pixels:"); textSaturated.setEditable(false); textSaturated.setHorizontalAlignment(javax.swing.JTextField.CENTER); buttonStart.setText("Start"); buttonStart.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonStartActionPerformed(evt); } }); buttonRefOffAp.setText("Reference Offset Aperture"); buttonRefOffAp.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonRefOffApActionPerformed(evt); } }); buttonEnd.setText("End"); buttonEnd.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonEndActionPerformed(evt); } }); jLabel2.setText("Off X:"); textOffX.setEditable(false); textOffX.setHorizontalAlignment(javax.swing.JTextField.CENTER); jLabel3.setText("Off Y:"); textOffY.setEditable(false); textOffY.setHorizontalAlignment(javax.swing.JTextField.CENTER); ckOffsetCheck.setText("Enable Offset Check"); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(viewer, javax.swing.GroupLayout.PREFERRED_SIZE, 469, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(processVariablePanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addGap(75, 75, 75) .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(textSaturated, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 181, Short.MAX_VALUE)))) .addGroup(layout.createSequentialGroup() .addGap(130, 130, 130) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(buttonRefOffAp, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(buttonEnd, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(ckOffsetCheck) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addGroup(layout.createSequentialGroup() .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(textOffY)) .addGroup(layout.createSequentialGroup() .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(textOffX, javax.swing.GroupLayout.PREFERRED_SIZE, 136, javax.swing.GroupLayout.PREFERRED_SIZE))))) .addGap(0, 0, Short.MAX_VALUE))) .addContainerGap()) .addGroup(layout.createSequentialGroup() .addGap(165, 165, 165) .addComponent(buttonStart) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) ); layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonEnd, buttonRefOffAp, buttonStart}); layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {textOffX, textOffY, textSaturated}); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(viewer, javax.swing.GroupLayout.PREFERRED_SIZE, 716, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(layout.createSequentialGroup() .addGap(86, 86, 86) .addComponent(buttonStart) .addGap(73, 73, 73) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(textSaturated, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addComponent(processVariablePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(97, 97, 97) .addComponent(buttonRefOffAp) .addGap(74, 74, 74) .addComponent(ckOffsetCheck) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel2) .addComponent(textOffX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(3, 3, 3) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3) .addComponent(textOffY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addComponent(buttonEnd))) .addContainerGap(106, Short.MAX_VALUE)) ); }// //GEN-END:initComponents private void buttonStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonStartActionPerformed try{ runAsync("pointing/start").handle((ret,ex)->{ return ret; }); } catch (Exception ex){ showException(ex); } }//GEN-LAST:event_buttonStartActionPerformed private void buttonRefOffApActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonRefOffApActionPerformed try{ runAsync("pointing/reference_offset").handle((ret,ex)->{ return ret; }); } catch (Exception ex){ showException(ex); } }//GEN-LAST:event_buttonRefOffApActionPerformed private void buttonEndActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonEndActionPerformed try{ runAsync("pointing/end").handle((ret,ex)->{ return ret; }); } catch (Exception ex){ showException(ex); } }//GEN-LAST:event_buttonEndActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton buttonEnd; private javax.swing.JButton buttonRefOffAp; private javax.swing.JButton buttonStart; private javax.swing.JCheckBox ckOffsetCheck; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private ch.psi.pshell.swing.ProcessVariablePanel processVariablePanel1; private javax.swing.JTextField textOffX; private javax.swing.JTextField textOffY; private javax.swing.JTextField textSaturated; private ch.psi.pshell.ui.CamServerViewer viewer; // End of variables declaration//GEN-END:variables }