From b59303da6ec804764ce4ed722afa6ae72ed6e1f7 Mon Sep 17 00:00:00 2001 From: Mathias Sander Date: Mon, 21 Mar 2022 12:25:15 +0100 Subject: [PATCH] Add crystal control --- plugins/PSSS.form | 150 ++++++++++++++++++++++++++++++---------------- plugins/PSSS.java | 90 ++++++++++++++++++++-------- script/local.py | 14 +++++ 3 files changed, 178 insertions(+), 76 deletions(-) diff --git a/plugins/PSSS.form b/plugins/PSSS.form index 88ececa..4de55c9 100755 --- a/plugins/PSSS.form +++ b/plugins/PSSS.form @@ -808,66 +808,116 @@ - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/PSSS.java b/plugins/PSSS.java index ed84ab9..add0885 100755 --- a/plugins/PSSS.java +++ b/plugins/PSSS.java @@ -236,10 +236,13 @@ public class PSSS extends Panel { btStartCr = new javax.swing.JButton(); plotScan = new ch.psi.pshell.plot.LinePlotJFree(); jPanel6 = new javax.swing.JPanel(); - registerPanel1 = new ch.psi.pshell.swing.RegisterPanel(); + jPanel8 = new javax.swing.JPanel(); + discretePositionerSelector2 = new ch.psi.pshell.swing.DiscretePositionerSelector(); discretePositionerSelector1 = new ch.psi.pshell.swing.DiscretePositionerSelector(); jLabel14 = new javax.swing.JLabel(); jLabel15 = new javax.swing.JLabel(); + jLabel19 = new javax.swing.JLabel(); + registerPanel1 = new ch.psi.pshell.swing.RegisterPanel(); tab.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { @@ -732,7 +735,7 @@ public class PSSS extends Panel { tab.addTab("Alignment", jPanel3); - registerPanel1.setDeviceName("psss_energy_set"); + discretePositionerSelector2.setDeviceName("psss_crystal"); discretePositionerSelector1.setDeviceName("psss_grating"); @@ -742,39 +745,71 @@ public class PSSS extends Panel { jLabel15.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel15.setText("Grating:"); + jLabel19.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + jLabel19.setText("Crystal:"); + + registerPanel1.setDeviceName("psss_energy_set"); + + javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8); + jPanel8.setLayout(jPanel8Layout); + jPanel8Layout.setHorizontalGroup( + jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel8Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(jPanel8Layout.createSequentialGroup() + .addComponent(jLabel19) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(discretePositionerSelector2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(jPanel8Layout.createSequentialGroup() + .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel15, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel14, javax.swing.GroupLayout.Alignment.TRAILING)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(discretePositionerSelector1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(registerPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) + .addContainerGap()) + ); + + jPanel8Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {discretePositionerSelector1, registerPanel1}); + + jPanel8Layout.setVerticalGroup( + jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel8Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(discretePositionerSelector1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(jPanel8Layout.createSequentialGroup() + .addGap(8, 8, 8) + .addComponent(jLabel15))) + .addGap(18, 18, 18) + .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(discretePositionerSelector2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(jPanel8Layout.createSequentialGroup() + .addGap(8, 8, 8) + .addComponent(jLabel19))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(registerPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel14)) + .addContainerGap()) + ); + javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6); jPanel6.setLayout(jPanel6Layout); jPanel6Layout.setHorizontalGroup( jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel6Layout.createSequentialGroup() - .addGap(66, 66, 66) - .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel15, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jLabel14, javax.swing.GroupLayout.Alignment.TRAILING)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(discretePositionerSelector1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(registerPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(553, Short.MAX_VALUE)) + .addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 595, Short.MAX_VALUE)) ); - - jPanel6Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {discretePositionerSelector1, registerPanel1}); - jPanel6Layout.setVerticalGroup( jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel6Layout.createSequentialGroup() - .addGap(52, 52, 52) - .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(registerPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel14)) - .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel6Layout.createSequentialGroup() - .addGap(18, 18, 18) - .addComponent(discretePositionerSelector1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(jPanel6Layout.createSequentialGroup() - .addGap(26, 26, 26) - .addComponent(jLabel15))) - .addContainerGap(306, Short.MAX_VALUE)) + .addGap(20, 20, 20) + .addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(265, Short.MAX_VALUE)) ); tab.addTab("Control", jPanel6); @@ -871,6 +906,7 @@ public class PSSS extends Panel { private javax.swing.JButton btStartEn; private javax.swing.ButtonGroup buttonGroup1; private ch.psi.pshell.swing.DiscretePositionerSelector discretePositionerSelector1; + private ch.psi.pshell.swing.DiscretePositionerSelector discretePositionerSelector2; private ch.psi.pshell.swing.HistogramGeneratorPanel histogramGeneratorFwhm; private ch.psi.pshell.swing.HistogramGeneratorPanel histogramGeneratorPanelCenter; private ch.psi.pshell.plot.TimePlotJFree history; @@ -884,6 +920,7 @@ public class PSSS extends Panel { private javax.swing.JLabel jLabel16; private javax.swing.JLabel jLabel17; private javax.swing.JLabel jLabel18; + private javax.swing.JLabel jLabel19; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; @@ -899,6 +936,7 @@ public class PSSS extends Panel { private javax.swing.JPanel jPanel5; private javax.swing.JPanel jPanel6; private javax.swing.JPanel jPanel7; + private javax.swing.JPanel jPanel8; private javax.swing.JPanel panelCameraScan; private javax.swing.JPanel panelCrystalScan; private javax.swing.JPanel panelEnergyScan; diff --git a/script/local.py b/script/local.py index 3465be7..00d3248 100755 --- a/script/local.py +++ b/script/local.py @@ -180,6 +180,20 @@ class PSSSGratingSet(DiscretePositioner): add_device(PSSSGratingSet("psss_grating", "SARFE10-PSSS055:GRATING_SP"), True) psss_grating.alias = "grating" psss_grating.monitored=True + +class PSSSCrystalSet(DiscretePositioner): + def doWrite(self, val): + if not is_dry_run(): + super(PSSSCrystalSet, self).doWrite(val) + #caput(psss_grating.getSetpoint().getChannelName(), val) + #self.setCache(val) + exec_cpython("/ioc/modules/qt/PSSS_motion.py", args = ["-m2", "SARFE10-PSSS059"]) + # python / ioc / modules / qt / PSSS_motion.py - m1 SARFE10 - PSSS059 + time.sleep(1) + +add_device(PSSSCrystalSet("psss_crystal", "SARFE10-PSSS059:CRYSTAL_SP"), True) +psss_crystal.alias = "grating" +psss_crystal.monitored=True ################################################################################################### # Tools ###################################################################################################