Files
saresb/plugins/Pointing.java
gac-bernina 3edd5ecda9
2024-02-19 16:44:57 +01:00

282 lines
13 KiB
Java

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")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//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))
);
}// </editor-fold>//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
}