From b018c0ccf2998e174d21358cb14d705f4aac8295 Mon Sep 17 00:00:00 2001 From: jens Date: Fri, 4 Nov 2022 11:29:26 +0100 Subject: [PATCH] =?UTF-8?q?Kommunication=20mit=20Rherodyne=20l=C3=A4uft=20?= =?UTF-8?q?nun?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jfs_main01.py | 153 +++++++++++++++++++++++++------------------------- 1 file changed, 76 insertions(+), 77 deletions(-) diff --git a/jfs_main01.py b/jfs_main01.py index 179a29d..00a493a 100644 --- a/jfs_main01.py +++ b/jfs_main01.py @@ -70,7 +70,51 @@ class MainWindow2( MainWindow): self.ui.checkBox_3.setEnabled(False) self.ui.pushButton_3.setEnabled(False) self.ui.pushButton_4.setEnabled(False) - ### ESP32 + + + ################### ESP32 + def connectESP32(self): + self.esp32_port = self.ui.rheo_port_comboBox.currentText() + self.statusBar().showMessage("You clicked CONNECT TO Esp32") + try: + port_declared = self.port in vars() + try: + print(self.esp32_port) + self.esp32_serial = serial.Serial() + self.esp32_serial.port = self.esp32_port + self.esp32_serial.baudrate = 115200 + self.esp32_serial.parity = serial.PARITY_NONE + self.esp32_serial.stopbits = serial.STOPBITS_ONE + self.esp32_serial.bytesize = serial.EIGHTBITS + self.esp32_serial.timeout = 1 + self.esp32_serial.open() + self.ui.closeRheo_btn.setEnabled(True) + self.ui.openRheo_btn.setEnabled(False) + self.ui.start_btn.setEnabled(True) + self.ui.stop_btn.setEnabled(False) + self.ui.checkBox.setEnabled(True) + self.ui.lineEdit.setEnabled(True) + time.sleep(1) + self.statusBar().showMessage("Successfully connected to esp32 board.") + except: + self.statusBar().showMessage("Cannot connect to board. Try again..") + #raise CannotConnectException + except AttributeError: + self.statusBar().showMessage("Please plug in the board and select a proper port, then press connect.") + + def disconnectESP32(self): + self.statusBar().showMessage("You clicked DISCONNECT FROM ESP32") + print("Disconnecting from board..") + time.sleep(0.1) + self.esp32_serial.close() + print("Board has been disconnected") + self.ui.openRheo_btn.setEnabled(True) + self.ui.closeRheo_btn.setEnabled(False) + self.ui.start_btn.setEnabled(False) + self.ui.stop_btn.setEnabled(False) + self.ui.checkBox.setEnabled(False) + self.ui.lineEdit.setEnabled(False) + def setFrequency(self): s = self.ui.lineEdit.text() cmd='o'+str(s)+'\n' @@ -85,29 +129,21 @@ class MainWindow2( MainWindow): def clickedBox(self,state): if state == QtCore.Qt.Checked: - print('checkes') - #self.threadx[2] =ThC_2(parent=None,port = self.esp32_serial) - #self.threadx[2].start() self.threadx[2] = ThC_2(port = self.esp32_serial) self.threadpool.start(self.threadx[2]) else: - print('no') self.threadx[2].stop() def flowBox(self,state): if state == QtCore.Qt.Checked: - print('checkes') self.wait2Stopflow=True self.stopFlowLimit = float(self.ui.lineEdit_2.text()) else: - print('no') - self.wait2Stopflow=False - + self.wait2Stopflow=False def startesp32(self): self.clearPlot() self.threadx[1] = ThC(index=1,port = self.esp32_serial,base=self.timeBase) - #self.threadx[1].start() self.threadpool.start(self.threadx[1]) self.threadx[1].signals.datasignal.connect(self.updateData) self.ui.start_btn.setEnabled(False) @@ -124,11 +160,7 @@ class MainWindow2( MainWindow): def setTimeBase(self): self.timeBase=int(self.ui.comboBox_tb.currentText()) - - - - - + ########### REODyneVentil def connectRheo(self): self.rheo_port = self.ui.comboBox.currentText() self.statusBar().showMessage("You clicked CONNECT TO Rheo Ventil") @@ -182,10 +214,24 @@ class MainWindow2( MainWindow): def sendRheoInject(self): xx = int(self.ui.lineEdit_3.text()) + s = self.ui.label_26.text()[5:-2] + x1 = int(s) + left = x1 - xx + + if ( left < 10): + self.statusBar().showMessage(f"Inject {xx} left {left} is to small !!") + return if (xx > 7) or (xx<0): + self.ui.checkBox_3.setChecked(False) + time.sleep(1) + self.ui.pushButton_4.setEnabled(False) cmd=str(xx)+'\r\n' self.sendToRheo(cmd) self.getFromRheo() + self.statusBar().showMessage(f"Inject {xx} left {left}") + else: + self.statusBar().showMessage("Amount should be > 7") + def sendRheoHome(self): cmd=str(3)+'\r\n' @@ -206,20 +252,12 @@ class MainWindow2( MainWindow): self.threadpool.start(thread) def setwhatsleft(self,xx): - #print (f'that left {xx} ') self.ui.label_26.setText(f'left {xx}') + self.ui.pushButton_4.setEnabled(True) def sendRheo(self, sendStr): self.rheo_serial.flushInput() self.rheo_serial.write(sendStr.encode('utf-8')) - - #cmd=str(5)+'\r\n' - #time.sleep(1) - #self.rheo_serial.write(cmd.encode('utf-8')) - #time.sleep(1) - #inp = self.rheo_serial.readline().decode('utf-8') - #print(inp) - #self.leftsignal.emit(float(inp)) def getFromRheo(self): cmd = "" @@ -235,67 +273,29 @@ class MainWindow2( MainWindow): cmd = str(5)+'\r\n' self.rheo_serial.write(cmd.encode('utf-8')) time.sleep(1) - inp = self.rheo_serial.readline().decode('utf-8') - inp = inp.rstrip() - print(f" >{inp}<") - #inp = 200 - return inp + cnt=0 + while True: + cnt+=1 + inp = self.rheo_serial.readline() + try: + if inp[0] == 60 and inp[-3] == 62 : + inp = inp[1:-3] + y = float(inp.decode('utf-8')) + return y + except IndexError: + pass + if cnt > 100: #warten bis der Motor steht und der Arduino antwortet + return 0 - def connectESP32(self): - self.esp32_port = self.ui.rheo_port_comboBox.currentText() - self.statusBar().showMessage("You clicked CONNECT TO Esp32") - try: - port_declared = self.port in vars() - try: - print(self.esp32_port) - self.esp32_serial = serial.Serial() - self.esp32_serial.port = self.esp32_port - self.esp32_serial.baudrate = 115200 - self.esp32_serial.parity = serial.PARITY_NONE - self.esp32_serial.stopbits = serial.STOPBITS_ONE - self.esp32_serial.bytesize = serial.EIGHTBITS - self.esp32_serial.timeout = 1 - self.esp32_serial.open() - self.ui.closeRheo_btn.setEnabled(True) - self.ui.openRheo_btn.setEnabled(False) - self.ui.start_btn.setEnabled(True) - self.ui.stop_btn.setEnabled(False) - self.ui.checkBox.setEnabled(True) - self.ui.lineEdit.setEnabled(True) - # self.ui.connect_BTN.setEnabled(False) - time.sleep(1) - self.statusBar().showMessage("Successfully connected to esp32 board.") - - except: - self.statusBar().showMessage("Cannot connect to board. Try again..") - #raise CannotConnectException - except AttributeError: - self.statusBar().showMessage("Please plug in the board and select a proper port, then press connect.") - - def disconnectESP32(self): - self.statusBar().showMessage("You clicked DISCONNECT FROM ESP32") - print("Disconnecting from board..") - time.sleep(0.1) - self.esp32_serial.close() - print("Board has been disconnected") - - self.ui.openRheo_btn.setEnabled(True) - self.ui.closeRheo_btn.setEnabled(False) - self.ui.start_btn.setEnabled(False) - self.ui.stop_btn.setEnabled(False) - self.ui.checkBox.setEnabled(False) - self.ui.lineEdit.setEnabled(False) def checkForStopFlow(self): if self.checkForStopFlow : if self.y[-1] > self.stopFlowLimit : self.ui.pause_BTN.clicked.emit() - - def updateData(self,x,y): self.x.append(x) @@ -307,12 +307,10 @@ class MainWindow2( MainWindow): self.wait2Stopflow = False self.ui.checkBox_2.setChecked(False) - def clearPlot(self): self.x.clear() self.y.clear() self.data_line.setData(self.x,self.y) - def sendToEsp32(self, sendStr): self.esp32_serial.write(sendStr.encode()) @@ -324,6 +322,7 @@ class WorkerKilledException(Exception): class ThC_Signals(QtCore.QObject): datasignal = QtCore.pyqtSignal(int,float) + class ThC(QtCore.QRunnable): #datasignal = QtCore.pyqtSignal(int,float) def __init__(self,port=None,index=0,base=100):