diff --git a/devices/CurrentCamera.properties b/devices/CurrentCamera.properties index 3b12d2d..3e91188 100644 --- a/devices/CurrentCamera.properties +++ b/devices/CurrentCamera.properties @@ -1,4 +1,4 @@ -#Fri Jan 13 15:57:44 CET 2017 +#Fri Jan 13 16:43:27 CET 2017 colormap=Temperature colormapAutomatic=true colormapMax=0.0 diff --git a/plugins/ScreenPanel.java b/plugins/ScreenPanel.java index 237637c..353bdcc 100644 --- a/plugins/ScreenPanel.java +++ b/plugins/ScreenPanel.java @@ -469,9 +469,8 @@ public class ScreenPanel extends Panel { } } - Thread tcomboScreen; - Thread tcomboFilter; - + Thread devicesInitTask; + void setCamera(String cameraName) throws IOException, InterruptedException { System.out.println("Setting camera: " + cameraName + " [" + (buttonCamtool.isSelected() ? "camtool" : "direct") + "]"); //renderer.removeOverlay(errorOverlay); @@ -480,8 +479,6 @@ public class ScreenPanel extends Panel { buttonGrabBackground.setEnabled(false); checkBackground.setEnabled(false); spinnerThreshold.setEnabled(false); - comboScreen.setModel(new DefaultComboBoxModel()); - comboFilter.setModel(new DefaultComboBoxModel()); checkThreshold.setEnabled(false); @@ -496,126 +493,79 @@ public class ScreenPanel extends Panel { renderer.removeOverlays(userOv); renderer.clear(); renderer.resetZoom(); - - if ((tcomboScreen!=null) && (tcomboScreen.isAlive())){ - tcomboScreen.interrupt(); - } - if ((tcomboFilter!=null) && (tcomboFilter.isAlive())){ - tcomboFilter.interrupt(); - } + boolean changed = !String.valueOf(cameraName).equals(this.cameraName); + this.cameraName = cameraName; - if (screen != null) { - screen.close(); - screen = null; - } - if (filter != null) { - filter.close(); - filter = null; - } - - //Parallelizing initialization - tcomboScreen = new Thread(() -> { - try { - screen = new DiscretePositioner("CurrentScreen", cameraName + ":SET_SCREEN1_POS", cameraName + ":GET_SCREEN1_POS"); - screen.initialize(); - DefaultComboBoxModel model = new DefaultComboBoxModel(); - for (String pos : screen.getPositions()) { - model.addElement(pos); - } - comboScreen.setModel(model); - comboScreen.setSelectedItem(screen.read()); - - } catch (Exception ex) { - comboScreen.setModel(new DefaultComboBoxModel()); - System.err.println(ex.getMessage()); + if (changed){ + if ( (devicesInitTask!=null) && (devicesInitTask.isAlive())){ + devicesInitTask.interrupt(); + } + if (screen != null) { + screen.close(); screen = null; } - comboScreen.setEnabled(screen != null); - valueScreen.setDevice(screen); - }); - tcomboScreen.start(); - - tcomboFilter = new Thread(() -> { - try { - filter = new DiscretePositioner("CurrentFilter", cameraName + ":SET_FILTER", cameraName + ":GET_FILTER"); - filter.initialize(); - DefaultComboBoxModel model = new DefaultComboBoxModel(); - for (String pos : filter.getPositions()) { - model.addElement(pos); - } - comboFilter.setModel(model); - comboFilter.setSelectedItem(filter.read()); - } catch (Exception ex) { - System.err.println(ex.getMessage()); + if (filter != null) { + filter.close(); filter = null; - } - comboFilter.setEnabled(filter != null); - valueFilter.setDevice(filter); - }); - tcomboFilter.start(); - + } + } try { Path configFile = Paths.get(configFolder, cameraName + ".json"); cameraConfigJson = configFile.toFile().exists() ? new String(Files.readAllBytes(configFile)) : null; if ((cameraConfigJson == null) && (buttonDirect.isSelected())) { throw new Exception("Cannot open camera config file: " + configFile.toFile()); - } - boolean changed = !String.valueOf(cameraName).equals(this.cameraName); - this.cameraName = cameraName; - try { - if (buttonCamtool.isSelected()) { - //camera = new Camtool("CurrentCamera", "gfa-lc6-64:8080"); - camera = new Camtool("CurrentCamera"); - camera.getConfig().flipHorizontally = false; - camera.getConfig().flipVertically = false; - camera.getConfig().rotation = 0.0; - camera.getConfig().roiX = 0; - camera.getConfig().roiY = 0; - camera.getConfig().roiWidth = -1; - camera.getConfig().roiHeight = -1; - } else { - camera = new PsiCamera("CurrentCamera", cameraName); - config = (CameraConfig) JsonSerializer.decode(cameraConfigJson, CameraConfig.class); - camera.getConfig().flipHorizontally = config.getMirrorX(); - camera.getConfig().flipVertically = config.getMirrorY(); - //camera.getConfig().rotation = config.getRotate(); - //camera.getConfig().rotationCrop = true; - switch (config.getRotate()) { - case 1: - camera.getConfig().rotation = 270; - break; - case 2: - camera.getConfig().rotation = 180; - break; - case 3: - camera.getConfig().rotation = 90; - break; - } - camera.getConfig().rotationCrop = false; - camera.getConfig().roiX = config.getRoiEnable() ? config.getRoi().get(0) : 0; - camera.getConfig().roiY = config.getRoiEnable() ? config.getRoi().get(1) : 0; - camera.getConfig().roiWidth = config.getRoiEnable() ? config.getRoi().get(2) : -1; - camera.getConfig().roiHeight = config.getRoiEnable() ? config.getRoi().get(3) : -1; - try { - camera.getConfig().spatialCalOffsetX = config.getCalOffsetX(); - camera.getConfig().spatialCalOffsetY = config.getCalOffsetY(); - camera.getConfig().spatialCalScaleX = -config.getScaleX(); - camera.getConfig().spatialCalScaleY = -config.getScaleY(); - } catch (Exception ex) { - camera.getConfig().spatialCalOffsetX = Double.NaN; - camera.getConfig().spatialCalOffsetY = Double.NaN; - camera.getConfig().spatialCalScaleX = Double.NaN; - camera.getConfig().spatialCalScaleY = Double.NaN; - } + } + + if (buttonCamtool.isSelected()) { + //camera = new Camtool("CurrentCamera", "gfa-lc6-64:8080"); + camera = new Camtool("CurrentCamera"); + camera.getConfig().flipHorizontally = false; + camera.getConfig().flipVertically = false; + camera.getConfig().rotation = 0.0; + camera.getConfig().roiX = 0; + camera.getConfig().roiY = 0; + camera.getConfig().roiWidth = -1; + camera.getConfig().roiHeight = -1; + } else { + camera = new PsiCamera("CurrentCamera", cameraName); + config = (CameraConfig) JsonSerializer.decode(cameraConfigJson, CameraConfig.class); + camera.getConfig().flipHorizontally = config.getMirrorX(); + camera.getConfig().flipVertically = config.getMirrorY(); + //camera.getConfig().rotation = config.getRotate(); + //camera.getConfig().rotationCrop = true; + switch (config.getRotate()) { + case 1: + camera.getConfig().rotation = 270; + break; + case 2: + camera.getConfig().rotation = 180; + break; + case 3: + camera.getConfig().rotation = 90; + break; + } + camera.getConfig().rotationCrop = false; + camera.getConfig().roiX = config.getRoiEnable() ? config.getRoi().get(0) : 0; + camera.getConfig().roiY = config.getRoiEnable() ? config.getRoi().get(1) : 0; + camera.getConfig().roiWidth = config.getRoiEnable() ? config.getRoi().get(2) : -1; + camera.getConfig().roiHeight = config.getRoiEnable() ? config.getRoi().get(3) : -1; + try { + camera.getConfig().spatialCalOffsetX = config.getCalOffsetX(); + camera.getConfig().spatialCalOffsetY = config.getCalOffsetY(); + camera.getConfig().spatialCalScaleX = -config.getScaleX(); + camera.getConfig().spatialCalScaleY = -config.getScaleY(); + } catch (Exception ex) { + camera.getConfig().spatialCalOffsetX = Double.NaN; + camera.getConfig().spatialCalOffsetY = Double.NaN; + camera.getConfig().spatialCalScaleX = Double.NaN; + camera.getConfig().spatialCalScaleY = Double.NaN; } - } catch (Exception ex) { - config = null; - showException(ex); } camera.initialize(); camera.assertInitialized(); + System.out.println("Camera initialization OK"); if (camera instanceof Camtool) { //Managing no background exception. Can be done in a better way? checkBackground.setEnabled(true); @@ -688,7 +638,12 @@ public class ScreenPanel extends Panel { public void onError(Object o, Exception excptn) { } }); + } catch (Exception ex) { + ex.printStackTrace(); + showException(ex); + renderer.clearOverlays(); + //TODO: Find better way to manage no background exception if (ex.getMessage().toLowerCase().contains("no background image")) { checkBackground.setSelected(true); @@ -704,10 +659,51 @@ public class ScreenPanel extends Panel { } finally { checkReticle(); onTimer(); - } + } + + if (changed){ + comboScreen.setModel(new DefaultComboBoxModel()); + comboFilter.setModel(new DefaultComboBoxModel()); + + //Parallelizing initialization + devicesInitTask = new Thread(() -> { + try { + screen = new DiscretePositioner("CurrentScreen", cameraName + ":SET_SCREEN1_POS", cameraName + ":GET_SCREEN1_POS"); + screen.initialize(); + DefaultComboBoxModel model = new DefaultComboBoxModel(); + for (String pos : screen.getPositions()) { + model.addElement(pos); + } + comboScreen.setModel(model); + comboScreen.setSelectedItem(screen.read()); + + } catch (Exception ex) { + comboScreen.setModel(new DefaultComboBoxModel()); + System.err.println(ex.getMessage()); + screen = null; + } + comboScreen.setEnabled(screen != null); + valueScreen.setDevice(screen); + + try { + filter = new DiscretePositioner("CurrentFilter", cameraName + ":SET_FILTER", cameraName + ":GET_FILTER"); + filter.initialize(); + DefaultComboBoxModel model = new DefaultComboBoxModel(); + for (String pos : filter.getPositions()) { + model.addElement(pos); + } + comboFilter.setModel(model); + comboFilter.setSelectedItem(filter.read()); + } catch (Exception ex) { + System.err.println(ex.getMessage()); + filter = null; + } + comboFilter.setEnabled(filter != null); + valueFilter.setDevice(filter); + }); + devicesInitTask.start(); + } - //tcomboScreen.join(); - //tcomboFilter.join(); } diff --git a/script/RFscan/phase_scan_caqtdm.py b/script/RFscan/phase_scan_caqtdm.py index 553ae5d..248f902 100644 --- a/script/RFscan/phase_scan_caqtdm.py +++ b/script/RFscan/phase_scan_caqtdm.py @@ -46,10 +46,9 @@ def after(rec): try: Vb = create_averager(V, nb, lat) xb = create_averager(x, nb, lat) - r = lscan(phase, [Vb, xb], start, stop, step , latency=lat, after_read = after) rf_phase = r.getPositions(0) - energy = [val/1000.0/disp*energy0 for val in r.getReadable(1).mean] + energy = [val.mean/1000.0/disp*energy0 for val in r.getReadable(1)] caput(station + "-RSYS:GET-ENERGY-ARRAY", to_array(energy, 'd')) caput(station + "-RSYS:GET-PHASE-ARRAY", to_array(rf_phase,'d')) phase_fit_max = None