diff --git a/mcpha.py b/mcpha.py
index 59263ca4e96f2382adab1b53a748c6b990387201..83ab2a9aa1ad65cd67c71242bb15751edbd79f69 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 7d3926dbc329ccdb7da007aaa1189aa483db4bdf..4be4c0a0aa8c1e0f5c63b737389e58da19ddb248 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()