diff --git a/config/devices.properties b/config/devices.properties
index 41fc563..2ab3f36 100644
--- a/config/devices.properties
+++ b/config/devices.properties
@@ -1,5 +1,5 @@
img=ch.psi.pshell.prosilica.Prosilica|25001 "PacketSize=1522;PixelFormat=Mono8;BinningX=1;BinningY=1;RegionX=300;RegionY=200;Width=1000;Height=1000;MulticastEnable=Off"|||false
-#gripper_cam=ch.psi.pshell.imaging.MjpegSource|http://129.129.110.114/axis-cgi/mjpg/video.cgi||100|
+gripper_cam=ch.psi.pshell.imaging.MjpegSource|http://129.129.110.114/axis-cgi/mjpg/video.cgi||-1|
microscan=ch.psi.pshell.serial.TcpDevice|129.129.110.200:2001|||
microscan_cmd=ch.psi.pshell.serial.TcpDevice|129.129.110.200:2003|||
ue=LaserUE|COM4|||false
diff --git a/config/plugins.properties b/config/plugins.properties
index 00b35d6..5d37a10 100644
--- a/config/plugins.properties
+++ b/config/plugins.properties
@@ -1,15 +1,18 @@
+WagoPanel.java=enabled
+LaserUEPanel.java=enabled
+BarcodeReaderPanel.java=enabled
+PuckDetectionPanel.java=enabled
+HexiposiPanel.java=enabled
MjpegSource2.java=enabled
MXSC-1.10.0.jar=enabled
LN2.java=enabled
-Hexiposi.java=enabled
+Hexiposi.java=disabled
NewJPanel.java=disabled
Expert.java=disabled
RobotPanel.java=enabled
-Wayne.java=disabled
SmartMagnetConfig.java=disabled
SmartMagnetPanel.java=enabled
LaserUE.java=enabled
-PuckDetection.java=disabled
TestZMQ.java=disabled
RobotModbus.java=disabled
RobotTcp.java=disabled
diff --git a/devices/led_ctrl_1.properties b/devices/led_ctrl_1.properties
index 7c71df6..ff1c589 100644
--- a/devices/led_ctrl_1.properties
+++ b/devices/led_ctrl_1.properties
@@ -1,5 +1,5 @@
-#Wed Jun 27 09:59:11 CEST 2018
-maxValue=1.0
+#Fri Jun 29 16:49:51 CEST 2018
+maxValue=0.4
minValue=0.0
offset=0.0
precision=2
diff --git a/devices/led_ctrl_2.properties b/devices/led_ctrl_2.properties
index 7c71df6..ff1c589 100644
--- a/devices/led_ctrl_2.properties
+++ b/devices/led_ctrl_2.properties
@@ -1,5 +1,5 @@
-#Wed Jun 27 09:59:11 CEST 2018
-maxValue=1.0
+#Fri Jun 29 16:49:51 CEST 2018
+maxValue=0.4
minValue=0.0
offset=0.0
precision=2
diff --git a/devices/led_ctrl_3.properties b/devices/led_ctrl_3.properties
index 7c71df6..ff1c589 100644
--- a/devices/led_ctrl_3.properties
+++ b/devices/led_ctrl_3.properties
@@ -1,5 +1,5 @@
-#Wed Jun 27 09:59:11 CEST 2018
-maxValue=1.0
+#Fri Jun 29 16:49:51 CEST 2018
+maxValue=0.4
minValue=0.0
offset=0.0
precision=2
diff --git a/plugins/BarcodeReaderPanel.form b/plugins/BarcodeReaderPanel.form
new file mode 100644
index 0000000..3e615f6
--- /dev/null
+++ b/plugins/BarcodeReaderPanel.form
@@ -0,0 +1,118 @@
+
+
+
diff --git a/plugins/BarcodeReaderPanel.java b/plugins/BarcodeReaderPanel.java
new file mode 100644
index 0000000..cb269c2
--- /dev/null
+++ b/plugins/BarcodeReaderPanel.java
@@ -0,0 +1,162 @@
+import ch.psi.pshell.core.Context;
+import ch.psi.pshell.swing.DevicePanel;
+import ch.psi.utils.swing.SwingUtils;
+import java.util.concurrent.CompletableFuture;
+
+/**
+ *
+ */
+public class BarcodeReaderPanel extends DevicePanel {
+
+ volatile boolean enabled;
+ public BarcodeReaderPanel() {
+ initComponents();
+ this.startTimer(100);
+ }
+
+
+ CompletableFuture future;
+
+ @Override
+ public void onTimer(){
+ if ((getDevice()!=null) && enabled){
+ if ((future==null) || (future.isDone())){
+ future = Context.getInstance().evalLineBackgroundAsync("barcode_reader.get()");
+ }
+ }
+ }
+
+
+ void execute(String statement, boolean showReturn){
+ try {
+ Context.getInstance().evalLineBackgroundAsync(statement).handle((ret, ex) -> {
+ if (BarcodeReaderPanel.this.isShowing()){
+ if (ex != null){
+ showException((Exception)ex);
+ } else if (showReturn){
+ if (ret == null){
+ SwingUtils.showMessage(this, "Return", "No code detected", 20000);
+ } else {
+ SwingUtils.showMessage(this, "Return", "Detected code: " +ret, 20000);
+ }
+ }
+ }
+ return ret;
+ });
+ } catch (Exception ex) {
+ showException(ex);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ jPanel3 = new javax.swing.JPanel();
+ buttonEnable = new javax.swing.JButton();
+ buttonDisable = new javax.swing.JButton();
+ buttonRead = new javax.swing.JButton();
+ deviceStatePanel1 = new ch.psi.pshell.swing.DeviceStatePanel();
+ deviceValuePanel1 = new ch.psi.pshell.swing.DeviceValuePanel();
+
+ jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Commands"));
+
+ buttonEnable.setText("Enable");
+ buttonEnable.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonEnableActionPerformed(evt);
+ }
+ });
+
+ buttonDisable.setText("Disable");
+ buttonDisable.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonDisableActionPerformed(evt);
+ }
+ });
+
+ buttonRead.setText("Read");
+ buttonRead.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonReadActionPerformed(evt);
+ }
+ });
+
+ javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
+ jPanel3.setLayout(jPanel3Layout);
+ jPanel3Layout.setHorizontalGroup(
+ jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel3Layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(buttonEnable)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonDisable)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonRead)
+ .addContainerGap())
+ );
+
+ jPanel3Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonDisable, buttonEnable, buttonRead});
+
+ jPanel3Layout.setVerticalGroup(
+ jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel3Layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(buttonEnable)
+ .addComponent(buttonDisable)
+ .addComponent(buttonRead))
+ .addContainerGap())
+ );
+
+ deviceStatePanel1.setDeviceName("barcode_reader");
+
+ deviceValuePanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Value"));
+ deviceValuePanel1.setDeviceName("barcode_reader");
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ this.setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(deviceValuePanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(deviceStatePanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(0, 0, 0)
+ .addComponent(deviceValuePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(0, 0, 0)
+ .addComponent(deviceStatePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(0, 0, 0))
+ );
+ }// //GEN-END:initComponents
+
+ private void buttonEnableActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonEnableActionPerformed
+ execute("barcode_reader.enable()", false);
+ enabled = true;
+ }//GEN-LAST:event_buttonEnableActionPerformed
+
+ private void buttonDisableActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonDisableActionPerformed
+ enabled = false;
+ execute("barcode_reader.disable()", false);
+ }//GEN-LAST:event_buttonDisableActionPerformed
+
+ private void buttonReadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonReadActionPerformed
+ enabled = false;
+ execute("barcode_reader.read(5.0) ", true);
+ }//GEN-LAST:event_buttonReadActionPerformed
+
+
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton buttonDisable;
+ private javax.swing.JButton buttonEnable;
+ private javax.swing.JButton buttonRead;
+ private ch.psi.pshell.swing.DeviceStatePanel deviceStatePanel1;
+ private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel1;
+ private javax.swing.JPanel jPanel3;
+ // End of variables declaration//GEN-END:variables
+}
diff --git a/plugins/Expert.form b/plugins/Expert.form
index 64d9d05..f513673 100644
--- a/plugins/Expert.form
+++ b/plugins/Expert.form
@@ -16,206 +16,16 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -228,11 +38,12 @@
-
+
-
-
-
+
+
+
+
@@ -240,16 +51,14 @@
-
+
-
-
-
-
-
-
-
+
+
+
+
+
@@ -263,8 +72,9 @@
+
-
+
@@ -312,12 +122,17 @@
-
+
-
+
+
+
+
+
+
@@ -584,121 +399,20 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/plugins/Expert.java b/plugins/Expert.java
index 7f11523..3249ef2 100644
--- a/plugins/Expert.java
+++ b/plugins/Expert.java
@@ -2,17 +2,13 @@
* Copyright (c) 2014-2017 Paul Scherrer Institute. All rights reserved.
*/
-import ch.psi.pshell.core.Context;
import ch.psi.pshell.ui.Panel;
import ch.psi.utils.State;
import ch.psi.utils.swing.SwingUtils;
import java.awt.Component;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import javax.swing.JComponent;
import javax.swing.JSpinner;
import javax.swing.JTextField;
-import javax.swing.SwingConstants;
/**
*
@@ -47,6 +43,12 @@ public class Expert extends Panel {
protected void doUpdate() {
}
+ @Override
+ public boolean isActive() {
+ return true;
+ }
+
+
void execute(String statement){
execute(statement, false);
}
@@ -89,15 +91,6 @@ public class Expert extends Panel {
// //GEN-BEGIN:initComponents
private void initComponents() {
- panelRobot = new javax.swing.JPanel();
- buttonEnable = new javax.swing.JButton();
- buttonDisable = new javax.swing.JButton();
- jPanel2 = new javax.swing.JPanel();
- buttonPositionsHexiposi = new javax.swing.JButton();
- panelSafety = new javax.swing.JPanel();
- buttonReleasePsys = new javax.swing.JButton();
- buttonEnableAll = new javax.swing.JButton();
- buttonReleaseLocal = new javax.swing.JButton();
panelCommands = new javax.swing.JPanel();
buttonMount = new javax.swing.JButton();
buttonUnmount = new javax.swing.JButton();
@@ -128,128 +121,8 @@ public class Expert extends Panel {
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
spinnerDrySpeed = new javax.swing.JSpinner();
- jPanel3 = new javax.swing.JPanel();
- buttonPuckDetCheck = new javax.swing.JButton();
- buttonPuckDetStop = new javax.swing.JButton();
- buttonPuckDetStart = new javax.swing.JButton();
- panelRobot1 = new javax.swing.JPanel();
- buttonHeater = new javax.swing.JToggleButton();
- buttonStream = new javax.swing.JToggleButton();
-
- panelRobot.setBorder(javax.swing.BorderFactory.createTitledBorder("Robot"));
-
- buttonEnable.setText("Enable");
- buttonEnable.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- buttonEnableActionPerformed(evt);
- }
- });
-
- buttonDisable.setText("Disable");
- buttonDisable.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- buttonDisableActionPerformed(evt);
- }
- });
-
- javax.swing.GroupLayout panelRobotLayout = new javax.swing.GroupLayout(panelRobot);
- panelRobot.setLayout(panelRobotLayout);
- panelRobotLayout.setHorizontalGroup(
- panelRobotLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(panelRobotLayout.createSequentialGroup()
- .addContainerGap(32, Short.MAX_VALUE)
- .addComponent(buttonEnable)
- .addGap(27, 27, 27)
- .addComponent(buttonDisable)
- .addContainerGap(32, Short.MAX_VALUE))
- );
-
- panelRobotLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonDisable, buttonEnable});
-
- panelRobotLayout.setVerticalGroup(
- panelRobotLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(panelRobotLayout.createSequentialGroup()
- .addContainerGap()
- .addGroup(panelRobotLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(buttonEnable)
- .addComponent(buttonDisable))
- .addContainerGap())
- );
-
- jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Hexiposi"));
-
- buttonPositionsHexiposi.setText("Positions");
- buttonPositionsHexiposi.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- buttonPositionsHexiposiActionPerformed(evt);
- }
- });
-
- javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
- jPanel2.setLayout(jPanel2Layout);
- jPanel2Layout.setHorizontalGroup(
- jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
- .addContainerGap(76, Short.MAX_VALUE)
- .addComponent(buttonPositionsHexiposi)
- .addContainerGap(74, Short.MAX_VALUE))
- );
- jPanel2Layout.setVerticalGroup(
- jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(jPanel2Layout.createSequentialGroup()
- .addContainerGap()
- .addComponent(buttonPositionsHexiposi)
- .addContainerGap())
- );
-
- panelSafety.setBorder(javax.swing.BorderFactory.createTitledBorder("Safety"));
-
- buttonReleasePsys.setText("Release PSYS");
- buttonReleasePsys.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- buttonReleasePsysActionPerformed(evt);
- }
- });
-
- buttonEnableAll.setText("Enable Motion");
- buttonEnableAll.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- buttonEnableAllActionPerformed(evt);
- }
- });
-
- buttonReleaseLocal.setText("Release Local");
- buttonReleaseLocal.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- buttonReleaseLocalActionPerformed(evt);
- }
- });
-
- javax.swing.GroupLayout panelSafetyLayout = new javax.swing.GroupLayout(panelSafety);
- panelSafety.setLayout(panelSafetyLayout);
- panelSafetyLayout.setHorizontalGroup(
- panelSafetyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(panelSafetyLayout.createSequentialGroup()
- .addContainerGap()
- .addGroup(panelSafetyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(buttonEnableAll, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addGroup(panelSafetyLayout.createSequentialGroup()
- .addComponent(buttonReleasePsys)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(buttonReleaseLocal)))
- .addContainerGap())
- );
- panelSafetyLayout.setVerticalGroup(
- panelSafetyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(panelSafetyLayout.createSequentialGroup()
- .addContainerGap()
- .addComponent(buttonEnableAll)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addGroup(panelSafetyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(buttonReleaseLocal)
- .addComponent(buttonReleasePsys))
- .addContainerGap())
- );
+ buttonRecover = new javax.swing.JButton();
+ buttonEnableAll = new javax.swing.JButton();
panelCommands.setBorder(javax.swing.BorderFactory.createTitledBorder("Commands"));
@@ -431,30 +304,44 @@ public class Expert extends Panel {
spinnerDrySpeed.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.1d, 10.0d, 1.0d));
+ buttonRecover.setText("Recover");
+ buttonRecover.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonRecoverActionPerformed(evt);
+ }
+ });
+
+ buttonEnableAll.setText("Enable Motion");
+ buttonEnableAll.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonEnableAllActionPerformed(evt);
+ }
+ });
+
javax.swing.GroupLayout panelCommandsLayout = new javax.swing.GroupLayout(panelCommands);
panelCommands.setLayout(panelCommandsLayout);
panelCommandsLayout.setHorizontalGroup(
panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelCommandsLayout.createSequentialGroup()
.addContainerGap()
- .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+ .addComponent(buttonRecover, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(buttonMoveHeater, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(buttonMoveGonio, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(buttonMovePark, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(buttonGetGonio, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(buttonPutGonio, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(buttonMount, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(buttonUnmount, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(buttonGetDewar, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(buttonPutDewar, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(buttonDry, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addComponent(buttonMovePark, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonGetGonio, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonPutGonio, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonMount, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonUnmount, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonGetDewar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonPutDewar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonDry, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(30, 30, 30)
- .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(buttonMoveScanner, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(buttonMoveHome, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(buttonMoveDewar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(buttonMoveScanner, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonMoveHome, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonMoveDewar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(panelCommandsLayout.createSequentialGroup()
.addComponent(jLabel7)
@@ -464,8 +351,9 @@ public class Expert extends Panel {
.addComponent(jLabel6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(spinnerDryTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
- .addComponent(buttonHomingHexiposi, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- .addContainerGap(30, Short.MAX_VALUE))
+ .addComponent(buttonHomingHexiposi, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonEnableAll, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
panelCommandsLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonGetDewar, buttonGetGonio, buttonHomingHexiposi, buttonMount, buttonMoveDewar, buttonMoveGonio, buttonMoveHeater, buttonMoveHome, buttonMovePark, buttonMoveScanner, buttonPutDewar, buttonPutGonio, buttonUnmount});
@@ -507,139 +395,26 @@ public class Expert extends Panel {
.addComponent(buttonDry)
.addComponent(spinnerDryTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel6))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(spinnerDrySpeed, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7))
- .addContainerGap())
- );
-
- jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Puck Detection"));
-
- buttonPuckDetCheck.setText("Ckeck");
- buttonPuckDetCheck.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- buttonPuckDetCheckActionPerformed(evt);
- }
- });
-
- buttonPuckDetStop.setText("Stop");
- buttonPuckDetStop.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- buttonPuckDetStopActionPerformed(evt);
- }
- });
-
- buttonPuckDetStart.setText("Start");
- buttonPuckDetStart.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- buttonPuckDetStartActionPerformed(evt);
- }
- });
-
- javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
- jPanel3.setLayout(jPanel3Layout);
- jPanel3Layout.setHorizontalGroup(
- jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(jPanel3Layout.createSequentialGroup()
- .addContainerGap()
- .addComponent(buttonPuckDetCheck)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 11, Short.MAX_VALUE)
- .addComponent(buttonPuckDetStop)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 11, Short.MAX_VALUE)
- .addComponent(buttonPuckDetStart)
- .addContainerGap())
- );
-
- jPanel3Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonPuckDetCheck, buttonPuckDetStart, buttonPuckDetStop});
-
- jPanel3Layout.setVerticalGroup(
- jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(jPanel3Layout.createSequentialGroup()
- .addContainerGap()
- .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(buttonPuckDetCheck)
- .addComponent(buttonPuckDetStop)
- .addComponent(buttonPuckDetStart))
- .addContainerGap())
- );
-
- panelRobot1.setBorder(javax.swing.BorderFactory.createTitledBorder("Dryer"));
-
- buttonHeater.setText("Heater");
- buttonHeater.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- buttonHeaterActionPerformed(evt);
- }
- });
-
- buttonStream.setText("Air Stream");
- buttonStream.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- buttonStreamActionPerformed(evt);
- }
- });
-
- javax.swing.GroupLayout panelRobot1Layout = new javax.swing.GroupLayout(panelRobot1);
- panelRobot1.setLayout(panelRobot1Layout);
- panelRobot1Layout.setHorizontalGroup(
- panelRobot1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(panelRobot1Layout.createSequentialGroup()
- .addContainerGap(24, Short.MAX_VALUE)
- .addComponent(buttonHeater)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(buttonStream)
- .addContainerGap(25, Short.MAX_VALUE))
- );
-
- panelRobot1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonHeater, buttonStream});
-
- panelRobot1Layout.setVerticalGroup(
- panelRobot1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(panelRobot1Layout.createSequentialGroup()
- .addContainerGap()
- .addGroup(panelRobot1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(buttonHeater)
- .addComponent(buttonStream))
- .addContainerGap())
+ .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(buttonEnableAll)
+ .addComponent(buttonRecover))
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addContainerGap()
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
- .addComponent(panelRobot1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(panelRobot, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(panelSafety, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGap(18, 18, 18)
- .addComponent(panelCommands, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addContainerGap())
+ .addComponent(panelCommands, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
);
-
- layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jPanel2, jPanel3, panelRobot, panelRobot1, panelSafety});
-
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addContainerGap()
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(panelCommands, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGroup(layout.createSequentialGroup()
- .addComponent(panelSafety, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(jPanel2, 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)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(panelRobot, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(panelRobot1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
- .addContainerGap(23, Short.MAX_VALUE))
+ .addComponent(panelCommands, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
);
}// //GEN-END:initComponents
@@ -657,30 +432,10 @@ public class Expert extends Panel {
}//GEN-LAST:event_buttonMountActionPerformed
- private void buttonEnableActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonEnableActionPerformed
- execute("robot.enable()", true);
- }//GEN-LAST:event_buttonEnableActionPerformed
-
- private void buttonDisableActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonDisableActionPerformed
- execute("robot.disable()", true);
- }//GEN-LAST:event_buttonDisableActionPerformed
-
- private void buttonReleaseLocalActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonReleaseLocalActionPerformed
- execute("release_local()", true);
- }//GEN-LAST:event_buttonReleaseLocalActionPerformed
-
- private void buttonReleasePsysActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonReleasePsysActionPerformed
- execute("release_psys()", true);
- }//GEN-LAST:event_buttonReleasePsysActionPerformed
-
private void buttonHomingHexiposiActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonHomingHexiposiActionPerformed
execute("homing_hexiposi()");
}//GEN-LAST:event_buttonHomingHexiposiActionPerformed
- private void buttonPositionsHexiposiActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonPositionsHexiposiActionPerformed
- this.showDevicePanel("hexiposi");
- }//GEN-LAST:event_buttonPositionsHexiposiActionPerformed
-
private void buttonUnmountActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonUnmountActionPerformed
String segment = (String) spinnerSegment.getValue();
int puck = (Integer) spinnerPuck.getValue();
@@ -715,18 +470,6 @@ public class Expert extends Panel {
execute("put_gonio('force=" + force + ")");
}//GEN-LAST:event_buttonPutGonioActionPerformed
- private void buttonPuckDetCheckActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonPuckDetCheckActionPerformed
- execute("check_puck_detection()", true, true);
- }//GEN-LAST:event_buttonPuckDetCheckActionPerformed
-
- private void buttonPuckDetStopActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonPuckDetStopActionPerformed
- execute("stop_puck_detection()", true);
- }//GEN-LAST:event_buttonPuckDetStopActionPerformed
-
- private void buttonPuckDetStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonPuckDetStartActionPerformed
- execute("start_puck_detection()", true);
- }//GEN-LAST:event_buttonPuckDetStartActionPerformed
-
private void buttonMoveParkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonMoveParkActionPerformed
execute("move_park()");
}//GEN-LAST:event_buttonMoveParkActionPerformed
@@ -758,22 +501,15 @@ public class Expert extends Panel {
execute("dry(" + dryTime + ", " + streamTime + ")");
}//GEN-LAST:event_buttonDryActionPerformed
- private void buttonHeaterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonHeaterActionPerformed
- execute("set_heater(" + (buttonHeater.isSelected() ? "True": "False") + ")", true);
- }//GEN-LAST:event_buttonHeaterActionPerformed
-
- private void buttonStreamActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonStreamActionPerformed
- execute("set_air_stream(" + (buttonStream.isSelected()? "True": "False")+ ")", true);
- }//GEN-LAST:event_buttonStreamActionPerformed
+ private void buttonRecoverActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonRecoverActionPerformed
+ execute("robot_recover()");
+ }//GEN-LAST:event_buttonRecoverActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JButton buttonDisable;
private javax.swing.JButton buttonDry;
- private javax.swing.JButton buttonEnable;
private javax.swing.JButton buttonEnableAll;
private javax.swing.JButton buttonGetDewar;
private javax.swing.JButton buttonGetGonio;
- private javax.swing.JToggleButton buttonHeater;
private javax.swing.JButton buttonHomingHexiposi;
private javax.swing.JButton buttonMount;
private javax.swing.JButton buttonMoveDewar;
@@ -782,15 +518,9 @@ public class Expert extends Panel {
private javax.swing.JButton buttonMoveHome;
private javax.swing.JButton buttonMovePark;
private javax.swing.JButton buttonMoveScanner;
- private javax.swing.JButton buttonPositionsHexiposi;
- private javax.swing.JButton buttonPuckDetCheck;
- private javax.swing.JButton buttonPuckDetStart;
- private javax.swing.JButton buttonPuckDetStop;
private javax.swing.JButton buttonPutDewar;
private javax.swing.JButton buttonPutGonio;
- private javax.swing.JButton buttonReleaseLocal;
- private javax.swing.JButton buttonReleasePsys;
- private javax.swing.JToggleButton buttonStream;
+ private javax.swing.JButton buttonRecover;
private javax.swing.JButton buttonUnmount;
private javax.swing.JCheckBox checkDatamatrix;
private javax.swing.JCheckBox checkForce;
@@ -801,13 +531,8 @@ public class Expert extends Panel {
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
- private javax.swing.JPanel jPanel2;
- private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel panelCommands;
- private javax.swing.JPanel panelRobot;
- private javax.swing.JPanel panelRobot1;
- private javax.swing.JPanel panelSafety;
private javax.swing.JSpinner spinnerDrySpeed;
private javax.swing.JSpinner spinnerDryTime;
private javax.swing.JSpinner spinnerPuck;
diff --git a/plugins/HexiposiPanel.form b/plugins/HexiposiPanel.form
new file mode 100644
index 0000000..65d0c18
--- /dev/null
+++ b/plugins/HexiposiPanel.form
@@ -0,0 +1,81 @@
+
+
+
diff --git a/plugins/HexiposiPanel.java b/plugins/HexiposiPanel.java
new file mode 100644
index 0000000..64ae671
--- /dev/null
+++ b/plugins/HexiposiPanel.java
@@ -0,0 +1,109 @@
+
+
+import ch.psi.pshell.core.Context;
+import ch.psi.pshell.device.Device;
+import ch.psi.pshell.swing.DevicePanel;
+
+/**
+ *
+ */
+public class HexiposiPanel extends DevicePanel {
+
+ /**
+ * Creates new form HexiposiPositionPanel
+ */
+ public HexiposiPanel() {
+ initComponents();
+ }
+
+ @Override
+ public void setDevice(Device device){
+ super.setDevice(device);
+ discretePositionerPanel.setDevice(device);
+ }
+
+ @Override
+ public void setEnabled(boolean enabled){
+ super.setEnabled(enabled);
+ discretePositionerPanel.setEnabled(enabled);
+ }
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
+ */
+ @SuppressWarnings("unchecked")
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ discretePositionerPanel = new ch.psi.pshell.swing.DiscretePositionerPanel();
+ jPanel1 = new javax.swing.JPanel();
+ buttonHoming = new javax.swing.JButton();
+
+ jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Initialize"));
+
+ buttonHoming.setText("Homing");
+ buttonHoming.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonHomingActionPerformed(evt);
+ }
+ });
+
+ javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
+ jPanel1.setLayout(jPanel1Layout);
+ jPanel1Layout.setHorizontalGroup(
+ jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonHoming)
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
+ jPanel1Layout.setVerticalGroup(
+ jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(buttonHoming)
+ .addContainerGap())
+ );
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ this.setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+ .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(discretePositionerPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addGap(0, 0, Short.MAX_VALUE))
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(discretePositionerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ );
+ }// //GEN-END:initComponents
+
+ private void buttonHomingActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonHomingActionPerformed
+ try {
+ Context.getInstance().evalLineAsync("hexiposi.move_home()").handle((ret, ex) -> {
+ if (ex != null){
+ showException((Exception)ex);
+ }
+ return ret;
+ });
+ } catch (Exception ex) {
+ showException(ex);
+ }
+
+ }//GEN-LAST:event_buttonHomingActionPerformed
+
+
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton buttonHoming;
+ private ch.psi.pshell.swing.DiscretePositionerPanel discretePositionerPanel;
+ private javax.swing.JPanel jPanel1;
+ // End of variables declaration//GEN-END:variables
+}
diff --git a/plugins/LN2.java b/plugins/LN2.java
index 4fdeb64..3d11573 100644
--- a/plugins/LN2.java
+++ b/plugins/LN2.java
@@ -3,11 +3,15 @@
*/
import ch.psi.pshell.core.Context;
+import ch.psi.pshell.plot.TimePlotBase;
import ch.psi.pshell.swing.StripChart;
import ch.psi.pshell.ui.App;
import ch.psi.pshell.ui.Panel;
import ch.psi.utils.State;
+import ch.psi.utils.swing.SwingUtils;
+import java.awt.Dimension;
import java.io.File;
+import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -16,6 +20,7 @@ import java.util.logging.Logger;
*/
public class LN2 extends Panel {
final StripChart stripChart;
+ TimePlotBase plot;
public LN2() {
initComponents();
stripChart = new StripChart(this.getTopLevel(), false, App.getStripChartFolderArg());
@@ -27,23 +32,30 @@ public class LN2 extends Panel {
} catch (Exception ex) {
showException(ex);
Logger.getLogger(LN2.class.getName()).log(Level.WARNING, null, ex);
- }
+ }
+ plot = (TimePlotBase) SwingUtils.getComponentsByType(stripChart.getPlotPanel(),TimePlotBase.class)[0];
}
//Overridable callbacks
@Override
public void onInitialize(int runCount) {
-
}
@Override
public void onStop() {
+ //saveImage();
super.onStop();
}
+
@Override
public void onStateChange(State state, State former) {
+ if ( (state == State.Closing) ||
+ ((state == State.Initializing) && (former != State.Invalid))
+ ){
+ saveImage();
+ }
}
@@ -51,6 +63,17 @@ public class LN2 extends Panel {
public void onExecutedFile(String fileName, Object result) {
}
+ public void saveImage(){
+ getLogger().severe("Saving image");
+ try {
+ String fileName = new File(getContext().getSetup().expandPath("{images}/ln2/{date}_{time}.png")).getCanonicalPath();
+ getLogger().severe("File: " + fileName);
+ plot.saveSnapshot(fileName, "png", new Dimension(1200,800));
+ } catch (Exception ex) {
+ getLogger().log(Level.SEVERE, null, ex);
+ }
+ getLogger().severe("Done");
+ }
//Callback to perform update - in event thread
@Override
diff --git a/plugins/LaserUEPanel.form b/plugins/LaserUEPanel.form
new file mode 100644
index 0000000..c9c5f8d
--- /dev/null
+++ b/plugins/LaserUEPanel.form
@@ -0,0 +1,59 @@
+
+
+
diff --git a/plugins/LaserUEPanel.java b/plugins/LaserUEPanel.java
new file mode 100644
index 0000000..017fb77
--- /dev/null
+++ b/plugins/LaserUEPanel.java
@@ -0,0 +1,98 @@
+import ch.psi.pshell.core.Context;
+import ch.psi.pshell.device.Device;
+import ch.psi.pshell.swing.DevicePanel;
+import ch.psi.utils.swing.SwingUtils;
+
+/**
+ *
+ */
+public class LaserUEPanel extends DevicePanel {
+
+ public LaserUEPanel() {
+ initComponents();
+ }
+
+ @Override
+ public void setDevice(Device device){
+ super.setDevice(device);
+ if (device!=null){
+ historyChart.addDevice("Laser Distance", device);
+ } else {
+ for (Device d: historyChart.getDevices()){
+ historyChart.removeDevice(device);
+ }
+ }
+ }
+
+
+ void execute(String statement, boolean showReturn){
+ try {
+ Context.getInstance().evalLineBackgroundAsync(statement).handle((ret, ex) -> {
+ if (LaserUEPanel.this.isShowing()){
+ if (ex != null){
+ showException((Exception)ex);
+ } else if (showReturn){
+ if (ret == null){
+ SwingUtils.showMessage(this, "Return", "No code detected", 20000);
+ } else {
+ SwingUtils.showMessage(this, "Return", "Detected code: " +ret, 20000);
+ }
+ }
+ }
+ return ret;
+ });
+ } catch (Exception ex) {
+ showException(ex);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ deviceStatePanel2 = new ch.psi.pshell.swing.DeviceStatePanel();
+ try {
+ historyChart = new ch.psi.pshell.swing.HistoryChart();
+ } catch (java.lang.ClassNotFoundException e1) {
+ e1.printStackTrace();
+ } catch (java.lang.InstantiationException e2) {
+ e2.printStackTrace();
+ } catch (java.lang.IllegalAccessException e3) {
+ e3.printStackTrace();
+ }
+ deviceValuePanel1 = new ch.psi.pshell.swing.DeviceValuePanel();
+
+ deviceStatePanel2.setDeviceName("ue");
+
+ deviceValuePanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Value"));
+ deviceValuePanel1.setDeviceName("ue");
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ this.setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(historyChart, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(deviceStatePanel2, javax.swing.GroupLayout.DEFAULT_SIZE, 297, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(deviceValuePanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 297, Short.MAX_VALUE))
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(historyChart, javax.swing.GroupLayout.DEFAULT_SIZE, 307, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(deviceStatePanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(deviceValuePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ );
+ }// //GEN-END:initComponents
+
+
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private ch.psi.pshell.swing.DeviceStatePanel deviceStatePanel2;
+ private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel1;
+ private ch.psi.pshell.swing.HistoryChart historyChart;
+ // End of variables declaration//GEN-END:variables
+}
diff --git a/plugins/MXSC-1.10.0.jar b/plugins/MXSC-1.10.0.jar
index 504236f..c51970f 100644
Binary files a/plugins/MXSC-1.10.0.jar and b/plugins/MXSC-1.10.0.jar differ
diff --git a/plugins/MjpegSource2.java b/plugins/MjpegSource2.java
index a4f55f7..89ab9ef 100644
--- a/plugins/MjpegSource2.java
+++ b/plugins/MjpegSource2.java
@@ -35,9 +35,9 @@ public class MjpegSource2 extends SourceBase {
super.doInitialize();
URL aux = new URL(url);
stream = aux.openStream();
- // if (!stream.markSupported()) {
+ if (!stream.markSupported()) {
stream = new BufferedInputStream(stream);
- // }
+ }
}
Thread monitoredThread;
@@ -102,7 +102,7 @@ public class MjpegSource2 extends SourceBase {
if (endOfFrame >= 0) {
stream.reset();
stream.skip(startOfFrame);
- int length = endOfFrame - END_OF_FRAME.length;
+ int length = endOfFrame ;//- END_OF_FRAME.length ;
byte[] data = new byte[length];
stream.read(data, 0, length);
return data;
diff --git a/plugins/PuckDetection.java b/plugins/PuckDetection.java
deleted file mode 100644
index 8edf011..0000000
--- a/plugins/PuckDetection.java
+++ /dev/null
@@ -1,169 +0,0 @@
-
-import ch.psi.pshell.device.DeviceBase;
-import ch.psi.utils.Arr;
-import ch.psi.utils.Chrono;
-import ch.psi.utils.State;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.logging.Level;
-
-
-public class PuckDetection extends DeviceBase{
- public static final int PUCKS_NUMBER = 30;
- final String server;
- public volatile Chrono chrono;
-
- public PuckDetection(String name, String server){
- super(name);
- this.server = server.startsWith("tcp://") ? server : "tcp://" + server;
- }
-
-
- public static class PuckState{
- public boolean online;
- public boolean mecSwitch;
- public boolean indSwitch;
-
- void clear(){
- online = false;
- mecSwitch = false;
- indSwitch = false;
- }
- void set(boolean mecSwitch, boolean indSwitch){
- online = true;
- this.mecSwitch = mecSwitch;
- this.indSwitch = indSwitch;
- }
-
- @Override
- public String toString(){
- return "Online = " + online + "\ns1 = " + mecSwitch+ "\ns2 = " + indSwitch;
- }
- }
-
- PuckState[] pucks;
- public PuckState[] getPucks(){
- return pucks;
- }
-
- //From 1 to PUCKS_NUMBER
- public PuckState getPuck(int id) throws Exception{
- assertInitialized();
- if ((id<=0) || (id>PUCKS_NUMBER)){
- throw new Exception("invalid puck id: "+ id);
- }
- return pucks[id-1];
- }
-
-
- Thread thread;
- Thread watchDog;
-
- @Override
- protected void doInitialize() throws IOException, InterruptedException{
- doClose();
- super.doInitialize();
- pucks = new PuckState[PUCKS_NUMBER];
- for (int i=0; i present = new ArrayList<>();
- for (String line:msg.split("\t")){
- try{
- line = line.trim();
- String[] tokens = line.split(" ");
- int id = Integer.valueOf(tokens[0].substring(1));
- present.add(id);
- PuckState puck = getPuck(id);
- if (tokens.length<3){
- puck.clear();
- } else {
- puck.set(tokens[1].trim().equals("1"),tokens[2].trim().equals("1"));
- }
- } catch (Exception ex){
- getLogger().log(Level.INFO, null, ex);
- }
- }
- for (int i=1; i<= PUCKS_NUMBER; i++){
- if (!Arr.containsEqual(present.toArray(), i)){
- pucks[i-1].clear();
- }
- }
- }
-
- @Override
- protected void doClose(){
- if (watchDog!=null){
- watchDog.interrupt();
- watchDog = null;
- }
- if (thread!=null){
- thread.interrupt();
- thread = null;
- }
- }
-}
diff --git a/plugins/PuckDetectionPanel.form b/plugins/PuckDetectionPanel.form
new file mode 100644
index 0000000..9e5eb14
--- /dev/null
+++ b/plugins/PuckDetectionPanel.form
@@ -0,0 +1,184 @@
+
+
+
diff --git a/plugins/PuckDetectionPanel.java b/plugins/PuckDetectionPanel.java
new file mode 100644
index 0000000..f17059a
--- /dev/null
+++ b/plugins/PuckDetectionPanel.java
@@ -0,0 +1,250 @@
+import ch.psi.mxsc.Puck;
+import ch.psi.mxsc.PuckDetection;
+import ch.psi.mxsc.PuckState;
+import ch.psi.pshell.core.Context;
+import ch.psi.pshell.swing.DevicePanel;
+import ch.psi.utils.swing.SwingUtils;
+
+/**
+ *
+ */
+public class PuckDetectionPanel extends DevicePanel {
+
+ public PuckDetectionPanel() {
+ initComponents();
+ int row = 0;
+ for (String segment : new String[]{"A", "B", "C", "D", "E", "F"}){
+ for (int puck=1; puck<=5; puck++){
+ table.getModel().setValueAt(segment+puck, row++, 0);
+ }
+ }
+ }
+
+ @Override
+ public PuckDetection getDevice(){
+ return (PuckDetection) super.getDevice();
+ }
+
+
+ @Override
+ protected void onDeviceCacheChanged(Object value, Object former, long timestamp, boolean arg3) {
+ for (int row=0; row< 30; row++){
+ String name = table.getModel().getValueAt(row, 0).toString();
+ //int id = row+1;
+ try {
+ Puck puck = getDevice().getPuck(name);
+ int id = puck.getIndex() + 1;
+ PuckState state = getDevice().getPuckState(id);
+ table.getModel().setValueAt(state.online, row, 1);
+ table.getModel().setValueAt(state.mecSwitch, row, 2);
+ table.getModel().setValueAt(state.indSwitch, row, 3);
+ table.getModel().setValueAt(puck.getDetection() == null ? "" : puck.getDetection(), row, 4);
+ table.getModel().setValueAt(puck.getImageDetection() == null ? "" : puck.getImageDetection(), row, 5);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ table.getModel().setValueAt(false, row, 1);
+ table.getModel().setValueAt(false, row, 2);
+ table.getModel().setValueAt(false, row, 3);
+ table.getModel().setValueAt("", row, 4);
+ table.getModel().setValueAt("", row, 5);
+ }
+ }
+ }
+
+ void execute(String statement, boolean showReturn){
+ try {
+ Context.getInstance().evalLineBackgroundAsync(statement).handle((ret, ex) -> {
+ if (ex != null){
+ showException((Exception)ex);
+ } else if (showReturn){
+ SwingUtils.showMessage(this, "Return", String.valueOf(ret));
+ }
+ return ret;
+ });
+ } catch (Exception ex) {
+ showException(ex);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ jPanel3 = new javax.swing.JPanel();
+ buttonPuckDetCheck = new javax.swing.JButton();
+ buttonPuckDetStop = new javax.swing.JButton();
+ buttonPuckDetStart = new javax.swing.JButton();
+ jPanel1 = new javax.swing.JPanel();
+ jScrollPane1 = new javax.swing.JScrollPane();
+ table = new javax.swing.JTable();
+ deviceStatePanel1 = new ch.psi.pshell.swing.DeviceStatePanel();
+
+ jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Raspberry Pi "));
+
+ buttonPuckDetCheck.setText("Ckeck");
+ buttonPuckDetCheck.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonPuckDetCheckActionPerformed(evt);
+ }
+ });
+
+ buttonPuckDetStop.setText("Stop");
+ buttonPuckDetStop.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonPuckDetStopActionPerformed(evt);
+ }
+ });
+
+ buttonPuckDetStart.setText("Start");
+ buttonPuckDetStart.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonPuckDetStartActionPerformed(evt);
+ }
+ });
+
+ javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
+ jPanel3.setLayout(jPanel3Layout);
+ jPanel3Layout.setHorizontalGroup(
+ jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel3Layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(buttonPuckDetCheck)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 107, Short.MAX_VALUE)
+ .addComponent(buttonPuckDetStop)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 108, Short.MAX_VALUE)
+ .addComponent(buttonPuckDetStart)
+ .addContainerGap())
+ );
+
+ jPanel3Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonPuckDetCheck, buttonPuckDetStart, buttonPuckDetStop});
+
+ jPanel3Layout.setVerticalGroup(
+ jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel3Layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(buttonPuckDetCheck)
+ .addComponent(buttonPuckDetStop)
+ .addComponent(buttonPuckDetStart))
+ .addContainerGap())
+ );
+
+ jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Detection"));
+
+ table.setModel(new javax.swing.table.DefaultTableModel(
+ new Object [][] {
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null},
+ {null, null, null, null, null, null}
+ },
+ new String [] {
+ "Puck", "Online", "Mechanical", "Inductive", "Detection", "Image"
+ }
+ ) {
+ Class[] types = new Class [] {
+ java.lang.String.class, java.lang.Boolean.class, java.lang.Boolean.class, java.lang.Boolean.class, java.lang.String.class, java.lang.String.class
+ };
+ boolean[] canEdit = new boolean [] {
+ false, false, false, false, false, false
+ };
+
+ public Class getColumnClass(int columnIndex) {
+ return types [columnIndex];
+ }
+
+ public boolean isCellEditable(int rowIndex, int columnIndex) {
+ return canEdit [columnIndex];
+ }
+ });
+ jScrollPane1.setViewportView(table);
+
+ javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
+ jPanel1.setLayout(jPanel1Layout);
+ jPanel1Layout.setHorizontalGroup(
+ jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
+ .addContainerGap())
+ );
+ jPanel1Layout.setVerticalGroup(
+ jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 274, Short.MAX_VALUE)
+ .addContainerGap())
+ );
+
+ deviceStatePanel1.setDeviceName("puck_detection");
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ this.setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(deviceStatePanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addGap(0, 0, 0)
+ .addComponent(deviceStatePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(0, 0, 0))
+ );
+ }// //GEN-END:initComponents
+
+ private void buttonPuckDetCheckActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonPuckDetCheckActionPerformed
+ execute("check_puck_detection()", true);
+ }//GEN-LAST:event_buttonPuckDetCheckActionPerformed
+
+ private void buttonPuckDetStopActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonPuckDetStopActionPerformed
+ execute("stop_puck_detection()", false);
+ }//GEN-LAST:event_buttonPuckDetStopActionPerformed
+
+ private void buttonPuckDetStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonPuckDetStartActionPerformed
+ execute("start_puck_detection()", false);
+ }//GEN-LAST:event_buttonPuckDetStartActionPerformed
+
+
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton buttonPuckDetCheck;
+ private javax.swing.JButton buttonPuckDetStart;
+ private javax.swing.JButton buttonPuckDetStop;
+ private ch.psi.pshell.swing.DeviceStatePanel deviceStatePanel1;
+ private javax.swing.JPanel jPanel1;
+ private javax.swing.JPanel jPanel3;
+ private javax.swing.JScrollPane jScrollPane1;
+ private javax.swing.JTable table;
+ // End of variables declaration//GEN-END:variables
+}
diff --git a/plugins/RobotPanel.form b/plugins/RobotPanel.form
index db2bf43..e223812 100644
--- a/plugins/RobotPanel.form
+++ b/plugins/RobotPanel.form
@@ -20,6 +20,7 @@
+
@@ -27,6 +28,8 @@
+
+
@@ -446,5 +449,103 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/RobotPanel.java b/plugins/RobotPanel.java
index edbd65a..a520adc 100644
--- a/plugins/RobotPanel.java
+++ b/plugins/RobotPanel.java
@@ -5,7 +5,6 @@ import ch.psi.pshell.swing.DevicePanel;
import ch.psi.pshell.core.Context;
import ch.psi.utils.State;
import java.awt.Color;
-import java.lang.reflect.Method;
import java.util.Map;
/**
@@ -52,6 +51,7 @@ public class RobotPanel extends DevicePanel {
Boolean empty = null;
Boolean settled = null;
Boolean moving = null;
+ Boolean open = null;
Integer speed = null;
String task = null;
String mode = null;
@@ -70,6 +70,10 @@ public class RobotPanel extends DevicePanel {
settled = (Boolean) status.get("settled");
} catch (Exception ex) {
}
+ try {
+ open = (Boolean) status.get("open");
+ } catch (Exception ex) {
+ }
try {
speed = (Integer) status.get("speed");
} catch (Exception ex) {
@@ -109,6 +113,7 @@ public class RobotPanel extends DevicePanel {
ledPowered.setColor((powered == null) ? Color.GRAY : (powered ? Color.YELLOW : Color.DARK_GRAY));
ledEmpty.setColor((empty == null) ? Color.GRAY : (empty ? Color.GREEN : Color.YELLOW));
ledSettled.setColor((settled == null) ? Color.GRAY : (settled ? Color.GREEN : Color.YELLOW));
+ ledOpen.setColor((open == null) ? Color.GRAY : (open ? Color.GREEN : Color.DARK_GRAY));
ledMoving.setColor((moving == null) ? Color.GRAY : (moving ? Color.YELLOW : Color.DARK_GRAY));
textTask.setText((task == null) ? "" : task);
ledTask.setColor((task == null) ? Color.GRAY : (task.isEmpty() ? Color.DARK_GRAY : Color.YELLOW));
@@ -164,6 +169,12 @@ public class RobotPanel extends DevicePanel {
ledTask = new ch.psi.pshell.swing.Led();
ledMode = new ch.psi.pshell.swing.Led();
panelState = new ch.psi.pshell.swing.DeviceStatePanel();
+ jPanel4 = new javax.swing.JPanel();
+ ledOpen = new ch.psi.pshell.swing.Led();
+ jLabel5 = new javax.swing.JLabel();
+ panelPowerCtr1 = new javax.swing.JPanel();
+ buttonClose = new javax.swing.JButton();
+ buttonOpen = new javax.swing.JButton();
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Power"));
@@ -428,6 +439,74 @@ public class RobotPanel extends DevicePanel {
.addGap(2, 2, 2))
);
+ jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("Tool"));
+
+ ledOpen.setFont(new java.awt.Font("SansSerif", 0, 18)); // NOI18N
+
+ jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
+ jLabel5.setText("Open:");
+
+ buttonClose.setText(" Close ");
+ buttonClose.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonCloseActionPerformed(evt);
+ }
+ });
+
+ buttonOpen.setText(" Open ");
+ buttonOpen.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonOpenActionPerformed(evt);
+ }
+ });
+
+ javax.swing.GroupLayout panelPowerCtr1Layout = new javax.swing.GroupLayout(panelPowerCtr1);
+ panelPowerCtr1.setLayout(panelPowerCtr1Layout);
+ panelPowerCtr1Layout.setHorizontalGroup(
+ panelPowerCtr1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(panelPowerCtr1Layout.createSequentialGroup()
+ .addGap(0, 0, 0)
+ .addComponent(buttonOpen)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE)
+ .addComponent(buttonClose))
+ );
+
+ panelPowerCtr1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonClose, buttonOpen});
+
+ panelPowerCtr1Layout.setVerticalGroup(
+ panelPowerCtr1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(panelPowerCtr1Layout.createSequentialGroup()
+ .addGap(0, 0, 0)
+ .addGroup(panelPowerCtr1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+ .addComponent(buttonClose, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonOpen))
+ .addGap(0, 0, 0))
+ );
+
+ javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
+ jPanel4.setLayout(jPanel4Layout);
+ jPanel4Layout.setHorizontalGroup(
+ jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel4Layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(ledOpen, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(panelPowerCtr1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
+ jPanel4Layout.setVerticalGroup(
+ jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel4Layout.createSequentialGroup()
+ .addGap(4, 4, 4)
+ .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
+ .addComponent(jLabel5)
+ .addComponent(ledOpen, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(panelPowerCtr1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGap(2, 2, 2))
+ );
+
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
@@ -436,12 +515,15 @@ public class RobotPanel extends DevicePanel {
.addComponent(jPanel2, 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)
.addComponent(panelState, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0)
+ .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(0, 0, 0)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
@@ -509,32 +591,54 @@ public class RobotPanel extends DevicePanel {
}
}//GEN-LAST:event_buttonAbortActionPerformed
+ private void buttonCloseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonCloseActionPerformed
+ try{
+ Context.getInstance().evalLineBackground(getDevice().getName() + ".close_tool()");
+ } catch (Exception ex){
+ this.showException(ex);
+ }
+ }//GEN-LAST:event_buttonCloseActionPerformed
+
+ private void buttonOpenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonOpenActionPerformed
+ try{
+ Context.getInstance().evalLineBackground(getDevice().getName() + ".open_tool()");
+ } catch (Exception ex){
+ this.showException(ex);
+ }
+ }//GEN-LAST:event_buttonOpenActionPerformed
+
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton butonStop;
private javax.swing.JButton buttonAbort;
+ private javax.swing.JButton buttonClose;
private javax.swing.JButton buttonDisable;
private javax.swing.JButton buttonEnable;
+ private javax.swing.JButton buttonOpen;
private javax.swing.JButton buttonPause;
private javax.swing.JButton buttonResume;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
+ private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
+ private javax.swing.JPanel jPanel4;
private ch.psi.pshell.swing.Led ledEmpty;
private ch.psi.pshell.swing.Led ledMode;
private ch.psi.pshell.swing.Led ledMoving;
+ private ch.psi.pshell.swing.Led ledOpen;
private ch.psi.pshell.swing.Led ledPowered;
private ch.psi.pshell.swing.Led ledSettled;
private ch.psi.pshell.swing.Led ledTask;
private javax.swing.JPanel panelMotionCtr;
private javax.swing.JPanel panelPowerCtr;
+ private javax.swing.JPanel panelPowerCtr1;
private ch.psi.pshell.swing.DeviceStatePanel panelState;
private javax.swing.JSpinner spinnerSpeed;
private javax.swing.JTextField textMode;
diff --git a/plugins/WagoPanel.form b/plugins/WagoPanel.form
new file mode 100644
index 0000000..9864ffa
--- /dev/null
+++ b/plugins/WagoPanel.form
@@ -0,0 +1,167 @@
+
+
+
diff --git a/plugins/WagoPanel.java b/plugins/WagoPanel.java
new file mode 100644
index 0000000..cacadcd
--- /dev/null
+++ b/plugins/WagoPanel.java
@@ -0,0 +1,207 @@
+import ch.psi.mxsc.Controller;
+import ch.psi.pshell.core.Context;
+import ch.psi.pshell.swing.DevicePanel;
+import java.util.concurrent.CompletableFuture;
+import javax.swing.border.TitledBorder;
+
+/**
+ *
+ */
+public class WagoPanel extends DevicePanel {
+
+ public WagoPanel() {
+ initComponents();
+ this.startTimer(10000);
+ }
+
+
+ CompletableFuture future;
+
+ @Override
+ public void onTimer(){
+ if ((getDevice()!=null)){
+ updateTitle();
+ }
+ }
+
+ void updateTitle(){
+ Boolean roomTemp = (Controller.getInstance().isLedRoomTemp());
+ if (roomTemp==null){
+ ((TitledBorder)panelDewar.getBorder()).setTitle("Dewar Light");
+ } else if (roomTemp==true){
+ ((TitledBorder)panelDewar.getBorder()).setTitle("Dewar Light (room temperature)");
+ } else {
+ ((TitledBorder)panelDewar.getBorder()).setTitle("Dewar Light (LN2)");
+ }
+ }
+
+
+ void execute(String statement){
+ try {
+ Context.getInstance().evalLineBackgroundAsync(statement).handle((ret, ex) -> {
+ if (WagoPanel.this.isShowing()){
+ if (ex != null){
+ showException((Exception)ex);
+ }
+ }
+ return ret;
+ });
+ } catch (Exception ex) {
+ showException(ex);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ deviceStatePanel1 = new ch.psi.pshell.swing.DeviceStatePanel();
+ panelSafety = new javax.swing.JPanel();
+ buttonReleasePsys = new javax.swing.JButton();
+ buttonReleaseLocal = new javax.swing.JButton();
+ panelRobot1 = new javax.swing.JPanel();
+ buttonHeater = new javax.swing.JToggleButton();
+ buttonStream = new javax.swing.JToggleButton();
+ panelDewar = new ch.psi.pshell.swing.ProcessVariablePanel();
+
+ deviceStatePanel1.setDeviceName("wago");
+
+ panelSafety.setBorder(javax.swing.BorderFactory.createTitledBorder("Safety"));
+
+ buttonReleasePsys.setText("Release PSYS");
+ buttonReleasePsys.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonReleasePsysActionPerformed(evt);
+ }
+ });
+
+ buttonReleaseLocal.setText("Release Local");
+ buttonReleaseLocal.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonReleaseLocalActionPerformed(evt);
+ }
+ });
+
+ javax.swing.GroupLayout panelSafetyLayout = new javax.swing.GroupLayout(panelSafety);
+ panelSafety.setLayout(panelSafetyLayout);
+ panelSafetyLayout.setHorizontalGroup(
+ panelSafetyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(panelSafetyLayout.createSequentialGroup()
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonReleasePsys)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(buttonReleaseLocal)
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
+
+ panelSafetyLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonReleaseLocal, buttonReleasePsys});
+
+ panelSafetyLayout.setVerticalGroup(
+ panelSafetyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(panelSafetyLayout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(panelSafetyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(buttonReleaseLocal)
+ .addComponent(buttonReleasePsys))
+ .addContainerGap())
+ );
+
+ panelRobot1.setBorder(javax.swing.BorderFactory.createTitledBorder("Dryer"));
+
+ buttonHeater.setText("Heater");
+ buttonHeater.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonHeaterActionPerformed(evt);
+ }
+ });
+
+ buttonStream.setText("Air Stream");
+ buttonStream.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonStreamActionPerformed(evt);
+ }
+ });
+
+ javax.swing.GroupLayout panelRobot1Layout = new javax.swing.GroupLayout(panelRobot1);
+ panelRobot1.setLayout(panelRobot1Layout);
+ panelRobot1Layout.setHorizontalGroup(
+ panelRobot1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(panelRobot1Layout.createSequentialGroup()
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonHeater)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(buttonStream)
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
+
+ panelRobot1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonHeater, buttonStream});
+
+ panelRobot1Layout.setVerticalGroup(
+ panelRobot1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(panelRobot1Layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(panelRobot1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(buttonHeater)
+ .addComponent(buttonStream))
+ .addContainerGap())
+ );
+
+ panelDewar.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Dewar Light", javax.swing.border.TitledBorder.LEFT, javax.swing.border.TitledBorder.DEFAULT_POSITION));
+ panelDewar.setDeviceName("led_level");
+ panelDewar.setShowAdvanced(false);
+ panelDewar.setShowButtons(false);
+ panelDewar.setShowLimitButtons(false);
+ panelDewar.setShowSlider(true);
+ panelDewar.setShowStop(false);
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ this.setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(deviceStatePanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(panelSafety, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(panelRobot1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(panelDewar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(panelSafety, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(0, 0, 0)
+ .addComponent(panelDewar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(0, 0, 0)
+ .addComponent(panelRobot1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(0, 0, 0)
+ .addComponent(deviceStatePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ );
+ }// //GEN-END:initComponents
+
+ private void buttonReleasePsysActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonReleasePsysActionPerformed
+ execute("release_psys()");
+ }//GEN-LAST:event_buttonReleasePsysActionPerformed
+
+ private void buttonReleaseLocalActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonReleaseLocalActionPerformed
+ execute("release_local()");
+ }//GEN-LAST:event_buttonReleaseLocalActionPerformed
+
+ private void buttonHeaterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonHeaterActionPerformed
+ execute("set_heater(" + (buttonHeater.isSelected() ? "True": "False") + ")");
+ }//GEN-LAST:event_buttonHeaterActionPerformed
+
+ private void buttonStreamActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonStreamActionPerformed
+ execute("set_air_stream(" + (buttonStream.isSelected()? "True": "False")+ ")");
+ }//GEN-LAST:event_buttonStreamActionPerformed
+
+
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JToggleButton buttonHeater;
+ private javax.swing.JButton buttonReleaseLocal;
+ private javax.swing.JButton buttonReleasePsys;
+ private javax.swing.JToggleButton buttonStream;
+ private ch.psi.pshell.swing.DeviceStatePanel deviceStatePanel1;
+ private ch.psi.pshell.swing.ProcessVariablePanel panelDewar;
+ private javax.swing.JPanel panelRobot1;
+ private javax.swing.JPanel panelSafety;
+ // End of variables declaration//GEN-END:variables
+}
diff --git a/plugins/Wayne.form b/plugins/Wayne.form
deleted file mode 100644
index f6456c5..0000000
--- a/plugins/Wayne.form
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
diff --git a/plugins/Wayne.java b/plugins/Wayne.java
deleted file mode 100644
index 955c0e5..0000000
--- a/plugins/Wayne.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2014-2017 Paul Scherrer Institute. All rights reserved.
- */
-
-import ch.psi.pshell.ui.Panel;
-import ch.psi.utils.State;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- *
- */
-public class Wayne extends Panel {
-
- public Wayne() {
- initComponents();
- }
-
- //Overridable callbacks
- @Override
- public void onInitialize(int runCount) {
-
- }
-
- @Override
- public void onStateChange(State state, State former) {
-
- }
-
- @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() {
-
- jButton1 = new javax.swing.JButton();
-
- jButton1.setText("jButton1");
- jButton1.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- jButton1ActionPerformed(evt);
- }
- });
-
- javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
- this.setLayout(layout);
- layout.setHorizontalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addGap(18, 18, 18)
- .addComponent(jButton1)
- .addContainerGap(358, Short.MAX_VALUE))
- );
- layout.setVerticalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addGap(29, 29, 29)
- .addComponent(jButton1)
- .addContainerGap(85, Short.MAX_VALUE))
- );
- }// //GEN-END:initComponents
-
- private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
- try {
- this.runAsync("test/RobotCartesianScan");
- } catch (Exception ex) {
- Logger.getLogger(Wayne.class.getName()).log(Level.SEVERE, null, ex);
- }
- }//GEN-LAST:event_jButton1ActionPerformed
-
- // Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JButton jButton1;
- // End of variables declaration//GEN-END:variables
-}
diff --git a/script/devices/RobotTCP.py b/script/devices/RobotTCP.py
index 05c533c..662a2b5 100644
--- a/script/devices/RobotTCP.py
+++ b/script/devices/RobotTCP.py
@@ -40,6 +40,7 @@ class RobotTCP(TcpDevice, Stoppable):
self.joint_motors = []
self.tool = None
self.default_desc = None
+ self.tool_open = None
#self.tool_trsf = [0.0] * 6
self.frame = FRAME_DEFAULT
self.polling_interval = 0.01
@@ -52,7 +53,7 @@ class RobotTCP(TcpDevice, Stoppable):
def doInitialize(self):
super(RobotTCP, self).doInitialize()
- self.reset = True
+ self.reset = True
def set_tool(self, tool):
self.tool = tool
@@ -60,7 +61,8 @@ class RobotTCP(TcpDevice, Stoppable):
self.evaluate("tcp_curtool=" + tool)
if self.cartesian_motors_enabled:
self.update()
- self.set_motors_enabled(True)
+ self.set_motors_enabled(True)
+ self.is_tool_open()
def get_tool(self):
return self.tool
@@ -395,18 +397,36 @@ class RobotTCP(TcpDevice, Stoppable):
#self.waitState(State.Ready, -1)
- #Tool
- #This function can timeout since it synchronizes move.
- #Better check state before otherwise it can freeze the communication
+ #Tool - synchronized as can freeze communication
+ """
+ def open_tool(self, tool=None, timeout=3000):
+ #This function can timeout since it synchronizes move. Checking state before otherwise it can freeze the communication.
+ self.waitState(State.Ready, -1)
+ if tool is None: tool = self.tool
+ return self.evaluate("open(" + tool + " )", timeout=timeout)
+
+ def close_tool(self, tool=None, timeout=3000):
+ #This function can timeout since it synchronizes move. Checking state before otherwise it can freeze the communication.
+ self.waitState(State.Ready, -1)
+ if tool is None: tool = self.tool
+ return self.evaluate("close(" + tool + " )", timeout=timeout)
+ """
+ #Tool - Not synchronized calls: atention to open/close only when state is Ready
def open_tool(self, tool=None):
if tool is None: tool = self.tool
- return self.evaluate("open(" + tool + " )", timeout=3000)
+ self.evaluate(tool + ".gripper=true")
+ self.tool_open = True
- #This function can timeout since it synchronizes move. Better check state before
- #Better check state before otherwise it can freeze the communication
def close_tool(self, tool=None):
if tool is None: tool = self.tool
- return self.evaluate("close(" + tool + " )", timeout=3000)
+ self.evaluate(tool + ".gripper=false")
+ self.tool_open = False
+
+ def is_tool_open(self, tool=None):
+ if tool is None: tool = self.tool
+ self.tool_open = robot.eval_bool(tool + ".gripper")
+ return self.tool_open
+
#Arm position
def herej(self):
@@ -521,6 +541,7 @@ class RobotTCP(TcpDevice, Stoppable):
self.speed = int(sts[3])
self.empty = sts[4] == "1"
self.settled = sts[5] == "1"
+ #TODO: add tool open
if cur_task is not None:
if int(sts[6]) < 0:
log("Task "+ str(cur_task) + " finished with code: " + str(sts[7]), False)
@@ -547,7 +568,8 @@ class RobotTCP(TcpDevice, Stoppable):
"settled": self.settled,
"task": cur_task,
"mode": self.working_mode,
- "status": self.status
+ "status": self.status,
+ "open": self.tool_open
}, None)
if self.cartesian_motors_enabled:
for m in self.cartesian_motors:
diff --git a/script/local.py b/script/local.py
index ca79cd3..e7b45da 100644
--- a/script/local.py
+++ b/script/local.py
@@ -4,6 +4,7 @@
import traceback
from ch.psi.pshell.serial import TcpDevice
from ch.psi.pshell.modbus import ModbusTCP
+import ch.psi.mxsc.Controller as Controller
run("setup/Layout")
@@ -60,6 +61,16 @@ def system_check(robot_move=True):
if not guiding_tool_park().read():
raise Exception("Guiding tool not parked")
+def get_puck_elect_detection(segment, puck):
+ return str(Controller.getInstance().getPuck(str(segment).upper() + str(puck)).detection)
+
+def get_puck_img_detection(segment, puck):
+ return str(Controller.getInstance().getPuck(str(segment).upper() + str(puck)).imageDetection)
+
+def assert_puck_detected(segment, puck):
+ if get_puck_detection(segment, puck) != "Present":
+ raise Exception ("Puck " + str(segment).upper() + str(puck) + " not present")
+
def start_puck_detection():
run("tools/RestartPuckDetection")
diff --git a/script/motion/get_dewar.py b/script/motion/get_dewar.py
index 7555edf..b082cf6 100644
--- a/script/motion/get_dewar.py
+++ b/script/motion/get_dewar.py
@@ -5,6 +5,8 @@ def get_dewar(segment, puck, sample, force=False):
#Initial checks
assertValidAddress(segment, puck, sample)
+ assert_puck_detected(segment, puck)
+
robot.assert_no_task()
robot.reset_motion()
robot.wait_ready()
diff --git a/script/motion/mount.py b/script/motion/mount.py
index 14a5cda..815dce6 100644
--- a/script/motion/mount.py
+++ b/script/motion/mount.py
@@ -5,6 +5,8 @@ def mount(segment, puck, sample, force=False, read_dm=False):
start = time.time()
#Initial checks
assertValidAddress(segment, puck, sample)
+ assert_puck_detected(segment, puck)
+
robot.assert_no_task()
robot.reset_motion()
robot.wait_ready()
diff --git a/script/motion/put_dewar.py b/script/motion/put_dewar.py
index 079411e..2f66fae 100644
--- a/script/motion/put_dewar.py
+++ b/script/motion/put_dewar.py
@@ -5,6 +5,8 @@ def put_dewar(segment, puck, sample, force=False):
#Initial checks
assertValidAddress(segment, puck, sample)
+ assert_puck_detected(segment, puck)
+
robot.assert_no_task()
robot.reset_motion()
robot.wait_ready()
diff --git a/script/motion/recover.py b/script/motion/recover.py
new file mode 100644
index 0000000..37e7d77
--- /dev/null
+++ b/script/motion/recover.py
@@ -0,0 +1,5 @@
+def recover():
+ """
+ """
+ print "recover"
+
diff --git a/script/motion/robot_recover.py b/script/motion/robot_recover.py
index 87e5d18..145e592 100644
--- a/script/motion/robot_recover.py
+++ b/script/motion/robot_recover.py
@@ -11,6 +11,4 @@ def robot_recover():
#Enabling
enable_motion()
- #barcode_reader.start_read(20.0)
-
robot.robot_recover()
diff --git a/script/motion/unmount.py b/script/motion/unmount.py
index 851ef30..d12f73f 100644
--- a/script/motion/unmount.py
+++ b/script/motion/unmount.py
@@ -5,6 +5,8 @@ def unmount(segment, puck, sample, force=False):
#Initial checks
assertValidAddress(segment, puck, sample)
+ assert_puck_detected(segment, puck)
+
robot.assert_no_task()
robot.reset_motion()
robot.wait_ready()
diff --git a/script/test/TestBugPcAPI2.py b/script/test/TestBugPcAPI2.py
index 037fbb0..0747cd0 100644
--- a/script/test/TestBugPcAPI2.py
+++ b/script/test/TestBugPcAPI2.py
@@ -1,6 +1,6 @@
import ch.psi.pshell.imaging.MjpegSource as MjpegSource
MjpegSource2 = get_context().pluginManager.getDynamicClass("MjpegSource2")
-add_device(MjpegSource2("gripper_cam", "http://129.129.110.114/axis-cgi/mjpg/video.cgi"), True)
-gripper_cam.polling=100
-#gripper_cam.monitored = True
+add_device(MjpegSource("gripper_cam", "http://129.129.110.114/axis-cgi/mjpg/video.cgi"), True)
+#gripper_cam.polling=1000
+gripper_cam.monitored = True
show_panel(gripper_cam)
\ No newline at end of file