diff --git a/config/jcae.properties b/config/jcae.properties index 73d5e00..0d47d20 100755 --- a/config/jcae.properties +++ b/config/jcae.properties @@ -1,4 +1,4 @@ -#Thu Dec 01 11:20:18 CET 2016 +#Thu Feb 23 14:36:58 CET 2017 ch.psi.jcae.ContextFactory.addressList=172.26.0.255 172.26.2.255 172.26.8.255 172.26.16.255 172.26.24.255 172.26.32.255 172.26.40.255 172.26.120.255 ch.psi.jcae.ContextFactory.maxArrayBytes=50000000 ch.psi.jcae.ChannelFactory.retries=1 diff --git a/devices/CurrentCamera.properties b/devices/CurrentCamera.properties index 2463dba..7ff5b32 100644 --- a/devices/CurrentCamera.properties +++ b/devices/CurrentCamera.properties @@ -1,4 +1,4 @@ -#Thu Feb 23 10:32:25 CET 2017 +#Thu Feb 23 14:37:06 CET 2017 colormap=Temperature colormapAutomatic=true colormapMax=0.0 @@ -18,7 +18,7 @@ roiY=0 rotation=0.0 rotationCrop=false scale=1.0 -serverURL=sflc\:10000 +serverURL=localhost\:10001 spatialCalOffsetX=-630.0 spatialCalOffsetY=-612.0 spatialCalScaleX=-26.761819803746654 diff --git a/plugins/ScreenPanel.java b/plugins/ScreenPanel.java index 7bcdba8..5d025d3 100644 --- a/plugins/ScreenPanel.java +++ b/plugins/ScreenPanel.java @@ -101,6 +101,7 @@ public class ScreenPanel extends Panel { Overlay[] userOv; Overlay[] fitOv; Overlay errorOverlay; + boolean requestCameraListUpdate; Double getCamtoolDouble(String name) { return (Double) Convert.toDouble(((Camtool) camera).getValue(name)); @@ -330,6 +331,7 @@ public class ScreenPanel extends Panel { try { if (App.hasArgument("cam")) { setComboCameraSelection(App.getArgumentValue("cam")); + comboCamerasActionPerformed(null); } } catch (Exception ex) { ex.printStackTrace(); @@ -558,6 +560,9 @@ public class ScreenPanel extends Panel { filter = null; } } + if (cameraName==null){ + return; + } try { Path configFile = Paths.get(CONFIG_FOLDER, cameraName + ".json"); @@ -711,7 +716,8 @@ public class ScreenPanel extends Panel { devicesInitTask = new Thread(() -> { try { screen = new DiscretePositioner("CurrentScreen", cameraName + ":SET_SCREEN1_POS", cameraName + ":GET_SCREEN1_POS"); - screen.initialize(); + screen.setMonitored(true); + screen.initialize(); DefaultComboBoxModel model = new DefaultComboBoxModel(); for (String pos : screen.getPositions()) { model.addElement(pos); @@ -729,7 +735,8 @@ public class ScreenPanel extends Panel { try { filter = new DiscretePositioner("CurrentFilter", cameraName + ":SET_FILTER", cameraName + ":GET_FILTER"); - filter.initialize(); + filter.setMonitored(true); + filter.initialize(); DefaultComboBoxModel model = new DefaultComboBoxModel(); for (String pos : filter.getPositions()) { model.addElement(pos); @@ -740,9 +747,9 @@ public class ScreenPanel extends Panel { System.err.println(ex.getMessage()); filter = null; } - comboFilter.setEnabled(filter != null); + comboFilter.setEnabled(filter != null); valueFilter.setDevice(filter); - }); + }); devicesInitTask.start(); } @@ -2104,6 +2111,14 @@ public class ScreenPanel extends Panel { new Thread(new Runnable() { @Override public void run() { + if (requestCameraListUpdate){ + requestCameraListUpdate = false; + try { + updateCameraList(); + } catch (Exception ex) { + ex.printStackTrace(); + } + } try { setCamera(cameraName); } catch (Exception ex) { @@ -2316,7 +2331,7 @@ public class ScreenPanel extends Panel { private void buttonCamtoolActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonCamtoolActionPerformed if (!usingCamtool){ usingCamtool = true; - updateCameraList(); + requestCameraListUpdate = true; } comboCamerasActionPerformed(null); }//GEN-LAST:event_buttonCamtoolActionPerformed @@ -2324,37 +2339,50 @@ public class ScreenPanel extends Panel { private void buttonDirectActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonDirectActionPerformed if (usingCamtool){ usingCamtool = false; - updateCameraList(); + requestCameraListUpdate = true; } comboCamerasActionPerformed(null); }//GEN-LAST:event_buttonDirectActionPerformed private void comboScreenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboScreenActionPerformed - ChannelInteger setpoint = null; - try { - int index = comboScreen.getSelectedIndex(); - setpoint = new ChannelInteger(null, cameraName + ":SET_SCREEN1_POS"); - setpoint.initialize(); - if (setpoint.read() != index) { - boolean laserOn = getLaserState(); - if (laserOn) { - setLaserState(false); - } - try { - setpoint.write(index); - } finally { - if (laserOn) { - setLaserState(true); + + comboScreen.setEnabled(false); + new Thread(new Runnable() { + @Override + public void run() { + ChannelInteger setpoint = null; + try { + int index = comboScreen.getSelectedIndex(); + setpoint = new ChannelInteger(null, cameraName + ":SET_SCREEN1_POS"); + setpoint.initialize(); + if (setpoint.read() != index) { + setpoint.write(index); + //Must be threaded to control the laser because of sleep in setLaserState + /* + boolean laserOn = getLaserState(); + if (laserOn) { + setLaserState(false); + } + try { + setpoint.write(index); + } finally { + if (laserOn) { + setLaserState(true); + } + } + */ } + screen.read(); + } catch (Exception ex) { + showException(ex); + } finally { + comboScreen.setEnabled(true); + if (setpoint != null) { + setpoint.close(); + } } } - screen.read(); - } catch (Exception ex) { - showException(ex); - } - if (setpoint != null) { - setpoint.close(); - } + }).start(); }//GEN-LAST:event_comboScreenActionPerformed private void comboFilterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboFilterActionPerformed