From 965b4dc66e9d0ca11e9a6de9811590add5162b90 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?G=C3=BCnter=20Quast?= <guenter.quast@online.de>
Date: Tue, 20 Feb 2024 17:23:53 +0100
Subject: [PATCH] protected main, fixes to rpOsci

---
 mcpha.py  | 18 +++++++++++-------
 rpOsci.py | 43 +++++++++++++++++++++++++++++++------------
 2 files changed, 42 insertions(+), 19 deletions(-)

diff --git a/mcpha.py b/mcpha.py
index 59263ca..83ab2a9 100755
--- a/mcpha.py
+++ b/mcpha.py
@@ -258,7 +258,6 @@ class MCPHA(QMainWindow, Ui_MCPHA):
             #else:
             #    return
 
-
     def reset_hst(self, number):
         if self.syncCheck.isChecked():
             self.reset |= 3
@@ -1037,9 +1036,14 @@ class GenDisplay(QWidget, Ui_GenDisplay):
             self.log.print("error: %s" % sys.exc_info()[1])
 
 
-app = QApplication(sys.argv)
-dpi = app.primaryScreen().logicalDotsPerInch()
-matplotlib.rcParams["figure.dpi"] = dpi
-window = MCPHA()
-window.show()
-sys.exit(app.exec_())
+def runQt():    
+    app = QApplication(sys.argv)
+    dpi = app.primaryScreen().logicalDotsPerInch()
+    matplotlib.rcParams["figure.dpi"] = dpi
+    window = MCPHA()
+    window.show()
+    sys.exit(app.exec_())
+
+if __name__ == '__main__': # ---------------------------------------------
+
+    runQt()
diff --git a/rpOsci.py b/rpOsci.py
index 7d3926d..4be4c0a 100755
--- a/rpOsci.py
+++ b/rpOsci.py
@@ -219,6 +219,8 @@ class rpControl(QMainWindow, Ui_MCPHA):
         # initialize variables for readout
         self.idle = False
         self.osc_waiting = False
+        self.osc_reset = False
+        self.osc_start = False
         self.state = 0
         self.set_rate(self.rateValue.currentIndex())
         self.set_negator(0, self.neg1Check.isChecked())
@@ -244,6 +246,10 @@ class rpControl(QMainWindow, Ui_MCPHA):
     def read_osci(self):
         """data transfer from RP,  triggered by QTimer readTimer
         """
+        if self.osc_reset:
+            self.reset_osc()
+        if self.osc_start:
+            self.start_osc()
         # check status
         self.read_status()
         if not self.read_data(self.status):
@@ -253,18 +259,26 @@ class rpControl(QMainWindow, Ui_MCPHA):
             self.command(20, 0, 0)
             if self.read_data(self.osc.buffer):
                 self.osc.update()
-                self.reset_osc()
-                self.start_osc()
+                self.mark_reset_osc()
+                self.mark_start_osc()
             else:
                 self.log.print("failed to read oscilloscope data")
                 return
 
+    def mark_start_osc(self):
+        self.osc_start = True
+        self.osc_waiting = True
+        
+    def mark_reset_osc(self):
+        self.osc_reset = True
+
     def reset_osc(self):        
         self.command(2, 0, 0)  
+        self.osc_reset=False
 
     def start_osc(self):        
         self.command(19, 0, 0)    
-        self.osc_waiting = True
+        self.osc_start = False
 
     def read_status(self):
         self.command(11, 0, 0) 
@@ -443,15 +457,15 @@ class OscDisplay(QWidget, Ui_OscDisplay):
         self.trg_source = int(self.ch2Button.isChecked())
         self.trg_slope = int(self.fallingButton.isChecked())
         self.trg_level = self.levelValue.value()
-
         self.rpControl.set_trg_mode(self.trg_mode)
         self.rpControl.set_trg_source(self.trg_source)
         self.rpControl.set_trg_slope(self.trg_slope)
         self.rpControl.set_trg_level(self.trg_level)
         self.rpControl.set_osc_pre(self.pre)
         self.rpControl.set_osc_tot(self.tot)
-        self.rpControl.reset_osc()
-        self.rpControl.start_osc()
+        self.rpControl.mark_reset_osc()
+        self.rpControl.mark_start_osc()
+        self.rpControl.osc_waiting = True
         self.log.print("oscilloscope started")
         # toggle startButton: turn to 'Stop'
         self.startButton.setText("Stop")
@@ -634,10 +648,15 @@ class GenDisplay(QWidget, Ui_GenDisplay):
         except:
             self.log.print("error: %s" % sys.exc_info()[1])
 
+def runQt():
+    app = QApplication(sys.argv)
+    dpi = app.primaryScreen().logicalDotsPerInch()
+    matplotlib.rcParams["figure.dpi"] = dpi
+    window = rpControl()
+    window.show()
+    sys.exit(app.exec_())
+            
+if __name__ == '__main__':
 
-app = QApplication(sys.argv)
-dpi = app.primaryScreen().logicalDotsPerInch()
-matplotlib.rcParams["figure.dpi"] = dpi
-window = rpControl()
-window.show()
-sys.exit(app.exec_())
+    # run the application with Qt5 interface
+    runQt()
-- 
GitLab