From bd706e068a4c834e1337dbf17cdb59f871094a22 Mon Sep 17 00:00:00 2001
From: Paolo Cinquegrana <paolo.cinquegrana@elettra.eu>
Date: Tue, 22 Sep 2020 12:17:18 +0200
Subject: [PATCH] aggiunto monitoraggio scope6

---
 src/slu-delay-calculator.py | 191 ++++++++++++++++++++++++++++++++----
 1 file changed, 172 insertions(+), 19 deletions(-)

diff --git a/src/slu-delay-calculator.py b/src/slu-delay-calculator.py
index 6dd37dd..64f4897 100644
--- a/src/slu-delay-calculator.py
+++ b/src/slu-delay-calculator.py
@@ -21,6 +21,7 @@ devprodic["tmu"] = PyTango.DeviceProxy("srv-tango-srf-01:20000/sl/timing/tmu_sl.
 devprodic["minimizzatore_correlazione"] = PyTango.DeviceProxy("srv-tango-srf-01:20000/f/optimization/optimizer_sldelay_f.01")
 devprodic["feedbackelite1"] = PyTango.DeviceProxy("srv-tango-srf-01:20000/sl/feedback/rtltf_osc.02")
 devprodic["totemdelay"] = PyTango.DeviceProxy("srv-tango-srf-01:20000/slu/motor/trls_slu.05")
+devprodic["scope6"] = PyTango.DeviceProxy("srv-tango-srf-01:20000/sl/diagnostics/scope_sl.01")
 # imposto subito velocita` 100 per salvare tempo procedura
 devprodic["trls8"].write_attribute("Speed", [-100])
 devprodic["trls4"].write_attribute("Speed", [100])
@@ -33,8 +34,8 @@ zero_Eos2 = 0
 trlsEOS2pos = 0
 trlsEOS1pos = 0
 trlsSLUpos = 0
-deltaS1 = 203806.0
-deltaS2 = 202949.0
+deltaS1 = 203808.0 #203810.0
+deltaS2 = 203800.0 #202954.0
 
 ####ns12 = 12.675074466
 
@@ -86,10 +87,8 @@ class MainWindow(QDialog):
         self.gruppodeltat.setLayout(lo_delta)
         #
         self.gruppobottoni = QGroupBox("")
-        self.apriscope3 = QPushButton('Open scope-laser-03')
-        self.apriscope3.clicked.connect(self.fapriscope3)
-        self.apriscope5 = QPushButton('Open scope-laser-05')
-        self.apriscope5.clicked.connect(self.fapriscope5)
+        self.apriscope = QPushButton('Open scope-laser-06')
+        self.apriscope.clicked.connect(self.fapriscope)
         self.apritrigger = QPushButton('Open Seed trigger panel')
         self.apritrigger.clicked.connect(self.fapritrigger)
         self.aprihdb = QPushButton('Open HDB')
@@ -98,8 +97,7 @@ class MainWindow(QDialog):
         self.minimcorr.clicked.connect(self.switchdelayminimizer)
         self.feedbackelite1 = QPushButton("fb Elite1 in")
         lo_bottoni = QGridLayout()
-        lo_bottoni.addWidget(self.apriscope3, 0, 0, 1, 3)
-        lo_bottoni.addWidget(self.apriscope5, 1, 0, 1, 3)
+        lo_bottoni.addWidget(self.apriscope, 0, 0, 1, 3)
         lo_bottoni.addWidget(self.apritrigger, 2, 0, 1, 3)
         lo_bottoni.addWidget(self.aprihdb, 3, 0, 1, 3)
         lo_bottoni.addWidget(self.minimcorr, 4, 0, 1, 3)
@@ -110,6 +108,11 @@ class MainWindow(QDialog):
         self.scritta1 = QLabel('0 state')
         self.scritta2 = QLabel('present state')
         self.scritta3 = QLabel('calculated')
+        self.enable_scope_measurament = QPushButton('Enable scope operation')
+        self.enable_scope_measurament.clicked.connect(self.dajediscope)
+        self.ddmeasure_seedpil_text = QLabel('Seed-Pil')
+        self.ddmeasure_slupil_text = QLabel('Slu-Pil')
+        self.ddmeasure_sluseed_text = QLabel('Slu-Seed')
         self.trls4_state = QPushButton("TRLS4")
         self.trls4_state.clicked.connect(self.apritrls4)
         self.trls8_state = QPushButton("TRLS8")
@@ -124,6 +127,13 @@ class MainWindow(QDialog):
         self.trgS2_state.clicked.connect(self.fapritrigger)
         self.FundAlignment_state = QPushButton("TMU")
         self.FundAlignment_state.clicked.connect(self.fapritmu)
+        
+        self.ddmeasure_seedpil_iniziale = QLineEdit("")
+        self.ddmeasure_seedpil_iniziale.setStyleSheet("background-color: rgb(220, 220, 220)")
+        self.ddmeasure_slupil_iniziale = QLineEdit("")
+        self.ddmeasure_slupil_iniziale.setStyleSheet("background-color: rgb(220, 220, 220)")
+        self.ddmeasure_sluseed_iniziale = QLineEdit("")
+        self.ddmeasure_sluseed_iniziale.setStyleSheet("background-color: rgb(220, 220, 220)")
         self.trls4_iniziale = QLineEdit("")
         self.trls4_iniziale.setStyleSheet("background-color: rgb(220, 220, 220)")
         self.trls4_iniziale.setReadOnly(1)
@@ -145,6 +155,13 @@ class MainWindow(QDialog):
         self.FundAlignment_iniziale = QLineEdit("")
         self.FundAlignment_iniziale.setStyleSheet("background-color: rgb(220, 220, 220)")
         self.FundAlignment_iniziale.setReadOnly(1)
+        
+        self.ddmeasure_seedpil_read = QLineEdit("")
+        self.ddmeasure_seedpil_read.setStyleSheet("background-color: rgb(220, 220, 220)")
+        self.ddmeasure_slupil_read = QLineEdit("")
+        self.ddmeasure_slupil_read.setStyleSheet("background-color: rgb(220, 220, 220)")
+        self.ddmeasure_sluseed_read = QLineEdit("")
+        self.ddmeasure_sluseed_read.setStyleSheet("background-color: rgb(220, 220, 220)")
         self.trls4_read = QLineEdit("")
         self.trls4_read.setStyleSheet("background-color: rgb(220, 220, 220)")
         self.trls4_read.setReadOnly(1)
@@ -166,6 +183,9 @@ class MainWindow(QDialog):
         self.FundAlignment_read = QLineEdit("")
         self.FundAlignment_read.setStyleSheet("background-color: rgb(220, 220, 220)")
         self.FundAlignment_read.setReadOnly(1)
+        self.ddmeasure_seedpil_calcolato = QLineEdit("")
+        self.ddmeasure_slupil_calcolato = QLineEdit("")
+        self.ddmeasure_sluseed_calcolato = QLineEdit("")
         self.trls4_calcolato = QLineEdit("")
         self.trls8_calcolato = QLineEdit("")
         self.trgE1_calcolato = QLineEdit("")
@@ -173,6 +193,9 @@ class MainWindow(QDialog):
         self.trgE2_calcolato = QLineEdit("")
         self.trgS2_calcolato = QLineEdit("")
         self.FundAlignment_calcolato = QLineEdit("")
+        
+        self.scope6clearswaps = QPushButton('ClearSweeps')
+        self.scope6clearswaps.clicked.connect(self.pulisci_oscilloscopio)
         self.trls4_applica = QPushButton('Apply')
         self.trls4_applica.clicked.connect(self.disastro_solotrls4)
         self.trls8_applica = QPushButton('Apply')
@@ -211,6 +234,20 @@ class MainWindow(QDialog):
         lo_centrale.addWidget(self.scritta1, 0, 1)
         lo_centrale.addWidget(self.scritta2, 0, 2)
         lo_centrale.addWidget(self.scritta3, 0, 3)
+        lo_centrale.addWidget(self.enable_scope_measurament, 1, 0)
+        lo_centrale.addWidget(self.ddmeasure_seedpil_text, 2, 0)
+        lo_centrale.addWidget(self.ddmeasure_seedpil_iniziale, 2, 1)
+        lo_centrale.addWidget(self.ddmeasure_seedpil_read, 2, 2)
+        lo_centrale.addWidget(self.ddmeasure_seedpil_calcolato, 2, 3)
+        lo_centrale.addWidget(self.ddmeasure_slupil_text, 3, 0)
+        lo_centrale.addWidget(self.ddmeasure_slupil_iniziale, 3, 1)
+        lo_centrale.addWidget(self.ddmeasure_slupil_read, 3, 2)
+        lo_centrale.addWidget(self.ddmeasure_slupil_calcolato, 3, 3)
+        lo_centrale.addWidget(self.ddmeasure_sluseed_text, 4, 0)
+        lo_centrale.addWidget(self.ddmeasure_sluseed_iniziale, 4, 1)
+        lo_centrale.addWidget(self.ddmeasure_sluseed_read, 4, 2)
+        lo_centrale.addWidget(self.ddmeasure_sluseed_calcolato, 4, 3)
+        lo_centrale.addWidget(self.scope6clearswaps, 2, 4, 3, 1)
         lo_centrale.addWidget(self.trls4_state, 10, 0)
         lo_centrale.addWidget(self.trls4_iniziale, 10, 1)
         lo_centrale.addWidget(self.trls4_read, 10, 2)
@@ -252,7 +289,6 @@ class MainWindow(QDialog):
         lo_centrale.addWidget(self.FundAlignment_read, 16, 2)
         lo_centrale.addWidget(self.FundAlignment_calcolato, 16, 3)
         lo_centrale.addWidget(self.FundAlignment_applica, 16, 4)
-        
         lo_centrale.addWidget(self.ripristina, 20, 1)
         lo_centrale.addWidget(self.applica, 20, 3)
         lo_centrale.addWidget(self.comenondetto, 20, 3)
@@ -305,6 +341,7 @@ class MainWindow(QDialog):
         self.trgS2_storna.hide()
         self.FundAlignment_storna.hide()
         #inizializzazione - lettura parametri
+        self.oscilloscopioattivo = False
         try:
             self.zero_trls4 = devprodic["trls4"].Position[0]
             self.trls4_iniziale.setText(str(round(self.zero_trls4, 3)))
@@ -386,7 +423,7 @@ class MainWindow(QDialog):
         ret = QMessageBox.warning(None, 'Speak with them, please', 'You are going to move the laser delay, please notify to control room.')
         #timer
         self.timer = QBasicTimer()
-        self.timer.start(500, self)
+        self.timer.start(1500, self)
         pass
 
     def timerEvent(self, event):
@@ -399,6 +436,7 @@ class MainWindow(QDialog):
         ret = QMessageBox.warning(None, 'Trigger reference file', 'Do not forget to save the new trigger reference file!')
 
     def update(self):
+        tinizio = time.time()
         ###simulazione###
         #self.read_values_trls4_state = "ON"
         #self.read_values_trls4_position = -175.5
@@ -615,6 +653,60 @@ class MainWindow(QDialog):
         self.trgS1_read.setText(str(round(self.read_values_trg_S1_delay, 3)) + " ns")
         self.trgS2_read.setText(str(round(self.read_values_trg_S2_delay, 3)) + " ns")
         self.FundAlignment_read.setText(str(self.read_values_FundAlignment))
+#        print('parziale ' + str(time.time() - tinizio))
+        if self.oscilloscopioattivo:
+            [self.read_values_P1_avg, self.read_values_P1_sigma, self.read_values_P1_sweep] = self.lettura_oscilloscopio("P1")
+            if self.read_values_P1_sigma > 12 or self.read_values_P1_sigma == 0.0:
+                self.ddmeasure_seedpil_read.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.ddmeasure_seedpil_read.setText(str(self.read_values_P1_avg) + ' ns, sigma ' + str(self.read_values_P1_sigma) + ' ns')
+            elif 0.2 < self.read_values_P1_sigma < 12:
+                self.ddmeasure_seedpil_read.setStyleSheet("background-color: rgb(255, 255, 0)")
+                self.ddmeasure_seedpil_read.setText(str(self.read_values_P1_avg) + ' ns, sigma ' + str(self.read_values_P1_sigma) + ' ns')
+            elif self.read_values_P1_sigma < 0.2:
+                self.ddmeasure_seedpil_read.setStyleSheet("background-color: rgb(0, 255, 0)")
+                self.ddmeasure_seedpil_read.setText(str(self.read_values_P1_avg) + ' ns')
+            [self.read_values_P2_avg, self.read_values_P2_sigma, self.read_values_P2_sweep] = self.lettura_oscilloscopio("P2")
+            if self.read_values_P2_sigma > 12 or self.read_values_P2_sigma == 0.0:
+                self.ddmeasure_slupil_read.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.ddmeasure_slupil_read.setText(str(self.read_values_P2_avg) + ' ns, sigma ' + str(self.read_values_P2_sigma) + ' ns')
+            elif 0.2 < self.read_values_P2_sigma < 12:
+                self.ddmeasure_slupil_read.setStyleSheet("background-color: rgb(255, 255, 0)")
+                self.ddmeasure_slupil_read.setText(str(self.read_values_P2_avg) + ' ns, sigma ' + str(self.read_values_P2_sigma) + ' ns')
+            elif self.read_values_P2_sigma < 0.2:
+                self.ddmeasure_slupil_read.setStyleSheet("background-color: rgb(0, 255, 0)")
+                self.ddmeasure_slupil_read.setText(str(self.read_values_P2_avg) + ' ns')
+            [self.read_values_P3_avg, self.read_values_P3_sigma, self.read_values_P3_sweep] = self.lettura_oscilloscopio("P3")
+            if self.read_values_P3_sigma > 12 or self.read_values_P3_sigma == 0.0:
+                self.ddmeasure_sluseed_read.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.ddmeasure_sluseed_read.setText(str(self.read_values_P3_avg) + ' ns, sigma ' + str(self.read_values_P3_sigma) + ' ns')
+            elif 0.2 < self.read_values_P3_sigma < 12:
+                self.ddmeasure_sluseed_read.setStyleSheet("background-color: rgb(255, 255, 0)")
+                self.ddmeasure_sluseed_read.setText(str(self.read_values_P3_avg) + ' ns, sigma ' + str(self.read_values_P3_sigma) + ' ns')
+            elif self.read_values_P3_sigma < 0.2:
+                self.ddmeasure_sluseed_read.setStyleSheet("background-color: rgb(0, 255, 0)")
+                self.ddmeasure_sluseed_read.setText(str(self.read_values_P3_avg) + ' ns')
+            if self.read_values_P1_sigma > 1 or self.read_values_P2_sigma > 1 or self.read_values_P3_sigma > 1:
+                epilessia1 = (150 + np.random.random_integers(100), 150 + np.random.random_integers(100), 150 + np.random.random_integers(100))
+                epilessia2 = (150 + np.random.random_integers(100), 150 + np.random.random_integers(100), 150 + np.random.random_integers(100))
+                epilessia3 = (150 + np.random.random_integers(100), 150 + np.random.random_integers(100), 150 + np.random.random_integers(100))
+                self.scope6clearswaps.setStyleSheet("background-color: rgb" + str(epilessia1) + "")
+            else:
+                self.scope6clearswaps.setStyleSheet("background-color: rgb(200, 200, 200)")
+        else:
+            self.ddmeasure_seedpil_read.setStyleSheet("background-color: rgb(200, 200, 200)")
+            self.ddmeasure_seedpil_read.setText('')
+            self.ddmeasure_slupil_read.setStyleSheet("background-color: rgb(200, 200, 200)")
+            self.ddmeasure_slupil_read.setText('')
+            self.ddmeasure_sluseed_read.setStyleSheet("background-color: rgb(200, 200, 200)")
+            self.ddmeasure_sluseed_read.setText('')
+            self.ddmeasure_seedpil_iniziale.setStyleSheet("background-color: rgb(200, 200, 200)")
+            self.ddmeasure_seedpil_iniziale.setText('')
+            self.ddmeasure_slupil_iniziale.setStyleSheet("background-color: rgb(200, 200, 200)")
+            self.ddmeasure_slupil_iniziale.setText('')
+            self.ddmeasure_sluseed_iniziale.setStyleSheet("background-color: rgb(200, 200, 200)")
+            self.ddmeasure_sluseed_iniziale.setText('')
+            self.scope6clearswaps.setStyleSheet("background-color: rgb(200, 200, 200)")
+#        print('finale ' + str(time.time() - tinizio))
         pass
 
     def calcola(self): # muovi SLU
@@ -628,6 +720,10 @@ class MainWindow(QDialog):
             print('SLU delay not a number')
             return 
         ###calcolo###
+        if self.oscilloscopioattivo:
+            self.ddmeasure_seedpil_calcolato.setText(str(self.read_values_P1_avg))
+            self.ddmeasure_slupil_calcolato.setText(str(self.read_values_P2_avg - delta_t))
+            self.ddmeasure_sluseed_calcolato.setText(str(self.read_values_P3_avg - delta_t))
         if (selettore >= 1 and selettore <= 4) or (selettore >= 5 and selettore <= 6): # elite1 x fel, elite2 x slu 
             print('elite1 x fel, elite2 x slu')
             resto = (delta_t/12.675074466 - int(delta_t/12.675074466))*12.675074466 #ns, avanzo da dare in pasto ai traslatori
@@ -934,6 +1030,7 @@ class MainWindow(QDialog):
     def disastro_soloS1trg(self):
         try:
             self.trgS1_old = devprodic["triggerS1"].command_inout('GetDelay', 2)*1000000000
+            procedi = True
         except:
             self.funzionamento.setText('!! FAULT !!')
             self.funzionamento.setStyleSheet("background-color: rgb(255, 0, 0)")
@@ -993,8 +1090,8 @@ class MainWindow(QDialog):
     def doppiodisastro_soloE2trg(self):
         devprodic["triggerEVR"].write_attribute('Chan2Delay', self.trgE2_old)
         tmp = devprodic["triggerEVR"].get_attribute_config_ex('Chan2Delay')
-        tmp[0].alarms.min_alarm = str(self.trgE1_old - 1)
-        tmp[0].alarms.max_alarm = str(self.trgE1_old + 1)
+        tmp[0].alarms.min_alarm = str(self.trgE2_old - 1)
+        tmp[0].alarms.max_alarm = str(self.trgE2_old + 1)
         devprodic["triggerEVR"].set_attribute_config(tmp)
         self.trgE2_applica.show()
         self.trgE2_storna.hide()
@@ -1002,6 +1099,7 @@ class MainWindow(QDialog):
     def disastro_soloS2trg(self):
         try:
             self.trgS2_old = devprodic["triggerS2"].command_inout('GetDelay', 2)*1000000000
+            procedi = True
         except:
             self.funzionamento.setText('!! FAULT !!')
             self.funzionamento.setStyleSheet("background-color: rgb(255, 0, 0)")
@@ -1473,16 +1571,12 @@ class MainWindow(QDialog):
         os.system('/runtime/bin/xps sl/motor/trls_sl.08 -title SL_XPS_Elite1_line_"trls_sl.08" &')
         pass
 
-    def fapriscope3(self):
-        os.system('/usr/bin/vncviewer scope-laser-03 &')
-        pass
-
-    def fapriscope5(self):
-        os.system('/usr/bin/vncviewer scope-laser-05 &')
+    def fapriscope(self):
+        os.system('/usr/bin/vncviewer scope-laser-06 &')
         pass
 
     def fapritrigger(self):
-        os.system('/usr/bin/python /home/lfo/runtime/panels/bin/sltriggerpanel.py &')
+        os.system('/runtime/bin/sl-trigger-gui &')
         pass
 
     def fapritmu(self):
@@ -1503,6 +1597,65 @@ class MainWindow(QDialog):
         gol = devprodic["totemdelay"].Position - float(self.trls5_rel.text())
         devprodic["totemdelay"].write_attribute('Position', gol)
 
+    def lettura_oscilloscopio(self, canale):
+        try:
+            testo = devprodic["scope6"].command_inout("GetParameter", canale)
+            testo1 = testo.split(',')
+            for sicurezza in range(len(testo1)):
+                if testo1[sicurezza] == 'AVG':
+                    tmp_AVG = round(float(testo1[sicurezza + 1].replace('S','')) * 10E+8, 1)
+                if testo1[sicurezza] == 'SIGMA':
+                    tmp_SIGMA = round(float(testo1[sicurezza + 1].replace('S','')) * 10E+8, 3)
+                if testo1[sicurezza] == 'SWEEPS':
+                    tmp_SWEEPS = round(float(testo1[sicurezza + 1].replace('S','')), 1)
+        except:
+            tmp_AVG = 0
+            tmp_SIGMA = 0
+            tmp_SWEEPS = 0
+        return tmp_AVG, tmp_SIGMA, tmp_SWEEPS
+
+    def pulisci_oscilloscopio(self):
+        devprodic["scope6"].command_inout("ClearSweeps")
+
+    def dajediscope(self):
+        if self.oscilloscopioattivo == False:
+            self.enable_scope_measurament.setText('Disable scope operation')
+            self.oscilloscopioattivo = True
+            self.timer.start(3200, self)
+            tmp = self.lettura_oscilloscopio("P1")
+            if tmp[1] > 12 or tmp[1] == 0:
+                self.ddmeasure_seedpil_iniziale.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.ddmeasure_seedpil_iniziale.setText(str(tmp[0]) + ' ns, sigma ' + str(tmp[1]) + ' ns')
+            elif 0.2 < tmp[1] < 12:
+                self.ddmeasure_seedpil_iniziale.setStyleSheet("background-color: rgb(255, 255, 0)")
+                self.ddmeasure_seedpil_iniziale.setText(str(tmp[0]) + ' ns, sigma ' + str(tmp[1]) + ' ns')
+            elif tmp[1] < 0.2:
+                self.ddmeasure_seedpil_iniziale.setStyleSheet("background-color: rgb(0, 255, 0)")
+                self.ddmeasure_seedpil_iniziale.setText(str(tmp[0]) + ' ns')
+            tmp = self.lettura_oscilloscopio("P2")
+            if tmp[1] > 12 or tmp[1] == 0:
+                self.ddmeasure_slupil_iniziale.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.ddmeasure_slupil_iniziale.setText(str(tmp[0]) + ' ns, sigma ' + str(tmp[1]) + ' ns')
+            elif 0.2 < tmp[1] < 12:
+                self.ddmeasure_slupil_iniziale.setStyleSheet("background-color: rgb(255, 255, 0)")
+                self.ddmeasure_slupil_iniziale.setText(str(tmp[0]) + ' ns, sigma ' + str(tmp[1]) + ' ns')
+            elif tmp[1] < 0.2:
+                self.ddmeasure_slupil_iniziale.setStyleSheet("background-color: rgb(0, 255, 0)")
+                self.ddmeasure_slupil_iniziale.setText(str(tmp[0]) + ' ns')
+            tmp = self.lettura_oscilloscopio("P3")
+            if tmp[1] > 12 or tmp[1] == 0:
+                self.ddmeasure_sluseed_iniziale.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.ddmeasure_sluseed_iniziale.setText(str(tmp[0]) + ' ns, sigma ' + str(tmp[1]) + ' ns')
+            elif 0.2 < tmp[1] < 12:
+                self.ddmeasure_sluseed_iniziale.setStyleSheet("background-color: rgb(255, 255, 0)")
+                self.ddmeasure_sluseed_iniziale.setText(str(tmp[0]) + ' ns, sigma ' + str(tmp[1]) + ' ns')
+            elif tmp[1] < 0.2:
+                self.ddmeasure_sluseed_iniziale.setStyleSheet("background-color: rgb(0, 255, 0)")
+                self.ddmeasure_sluseed_iniziale.setText(str(tmp[0]) + ' ns')
+        elif self.oscilloscopioattivo == True:
+            self.oscilloscopioattivo = False
+            self.enable_scope_measurament.setText('Enable scope operation')
+            self.timer.start(1000, self)
 
 if __name__ == '__main__':
     app = QApplication([])
-- 
GitLab