Kommunication mit Rherodyne läuft nun

This commit is contained in:
jens 2022-11-04 11:29:26 +01:00
parent c2e2f302a4
commit b018c0ccf2

View File

@ -70,7 +70,51 @@ class MainWindow2( MainWindow):
self.ui.checkBox_3.setEnabled(False) self.ui.checkBox_3.setEnabled(False)
self.ui.pushButton_3.setEnabled(False) self.ui.pushButton_3.setEnabled(False)
self.ui.pushButton_4.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): def setFrequency(self):
s = self.ui.lineEdit.text() s = self.ui.lineEdit.text()
cmd='o'+str(s)+'\n' cmd='o'+str(s)+'\n'
@ -85,29 +129,21 @@ class MainWindow2( MainWindow):
def clickedBox(self,state): def clickedBox(self,state):
if state == QtCore.Qt.Checked: 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.threadx[2] = ThC_2(port = self.esp32_serial)
self.threadpool.start(self.threadx[2]) self.threadpool.start(self.threadx[2])
else: else:
print('no')
self.threadx[2].stop() self.threadx[2].stop()
def flowBox(self,state): def flowBox(self,state):
if state == QtCore.Qt.Checked: if state == QtCore.Qt.Checked:
print('checkes')
self.wait2Stopflow=True self.wait2Stopflow=True
self.stopFlowLimit = float(self.ui.lineEdit_2.text()) self.stopFlowLimit = float(self.ui.lineEdit_2.text())
else: else:
print('no')
self.wait2Stopflow=False self.wait2Stopflow=False
def startesp32(self): def startesp32(self):
self.clearPlot() self.clearPlot()
self.threadx[1] = ThC(index=1,port = self.esp32_serial,base=self.timeBase) self.threadx[1] = ThC(index=1,port = self.esp32_serial,base=self.timeBase)
#self.threadx[1].start()
self.threadpool.start(self.threadx[1]) self.threadpool.start(self.threadx[1])
self.threadx[1].signals.datasignal.connect(self.updateData) self.threadx[1].signals.datasignal.connect(self.updateData)
self.ui.start_btn.setEnabled(False) self.ui.start_btn.setEnabled(False)
@ -124,11 +160,7 @@ class MainWindow2( MainWindow):
def setTimeBase(self): def setTimeBase(self):
self.timeBase=int(self.ui.comboBox_tb.currentText()) self.timeBase=int(self.ui.comboBox_tb.currentText())
########### REODyneVentil
def connectRheo(self): def connectRheo(self):
self.rheo_port = self.ui.comboBox.currentText() self.rheo_port = self.ui.comboBox.currentText()
self.statusBar().showMessage("You clicked CONNECT TO Rheo Ventil") self.statusBar().showMessage("You clicked CONNECT TO Rheo Ventil")
@ -182,10 +214,24 @@ class MainWindow2( MainWindow):
def sendRheoInject(self): def sendRheoInject(self):
xx = int(self.ui.lineEdit_3.text()) 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): 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' cmd=str(xx)+'\r\n'
self.sendToRheo(cmd) self.sendToRheo(cmd)
self.getFromRheo() self.getFromRheo()
self.statusBar().showMessage(f"Inject {xx} left {left}")
else:
self.statusBar().showMessage("Amount should be > 7")
def sendRheoHome(self): def sendRheoHome(self):
cmd=str(3)+'\r\n' cmd=str(3)+'\r\n'
@ -206,21 +252,13 @@ class MainWindow2( MainWindow):
self.threadpool.start(thread) self.threadpool.start(thread)
def setwhatsleft(self,xx): def setwhatsleft(self,xx):
#print (f'that left {xx} ')
self.ui.label_26.setText(f'left {xx}') self.ui.label_26.setText(f'left {xx}')
self.ui.pushButton_4.setEnabled(True)
def sendRheo(self, sendStr): def sendRheo(self, sendStr):
self.rheo_serial.flushInput() self.rheo_serial.flushInput()
self.rheo_serial.write(sendStr.encode('utf-8')) 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): def getFromRheo(self):
cmd = "" cmd = ""
thread = Thread(self.getRheoVolume,cmd) thread = Thread(self.getRheoVolume,cmd)
@ -235,68 +273,30 @@ class MainWindow2( MainWindow):
cmd = str(5)+'\r\n' cmd = str(5)+'\r\n'
self.rheo_serial.write(cmd.encode('utf-8')) self.rheo_serial.write(cmd.encode('utf-8'))
time.sleep(1) time.sleep(1)
inp = self.rheo_serial.readline().decode('utf-8') cnt=0
inp = inp.rstrip() while True:
print(f" >{inp}<") cnt+=1
#inp = 200 inp = self.rheo_serial.readline()
return inp
def connectESP32(self):
self.esp32_port = self.ui.rheo_port_comboBox.currentText()
self.statusBar().showMessage("You clicked CONNECT TO Esp32")
try: try:
port_declared = self.port in vars() if inp[0] == 60 and inp[-3] == 62 :
try: inp = inp[1:-3]
print(self.esp32_port) y = float(inp.decode('utf-8'))
self.esp32_serial = serial.Serial() return y
self.esp32_serial.port = self.esp32_port except IndexError:
self.esp32_serial.baudrate = 115200 pass
self.esp32_serial.parity = serial.PARITY_NONE if cnt > 100: #warten bis der Motor steht und der Arduino antwortet
self.esp32_serial.stopbits = serial.STOPBITS_ONE return 0
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): def checkForStopFlow(self):
if self.checkForStopFlow : if self.checkForStopFlow :
if self.y[-1] > self.stopFlowLimit : if self.y[-1] > self.stopFlowLimit :
self.ui.pause_BTN.clicked.emit() self.ui.pause_BTN.clicked.emit()
def updateData(self,x,y): def updateData(self,x,y):
self.x.append(x) self.x.append(x)
self.y.append(y) self.y.append(y)
@ -307,13 +307,11 @@ class MainWindow2( MainWindow):
self.wait2Stopflow = False self.wait2Stopflow = False
self.ui.checkBox_2.setChecked(False) self.ui.checkBox_2.setChecked(False)
def clearPlot(self): def clearPlot(self):
self.x.clear() self.x.clear()
self.y.clear() self.y.clear()
self.data_line.setData(self.x,self.y) self.data_line.setData(self.x,self.y)
def sendToEsp32(self, sendStr): def sendToEsp32(self, sendStr):
self.esp32_serial.write(sendStr.encode()) self.esp32_serial.write(sendStr.encode())
self.esp32_serial.flushInput() self.esp32_serial.flushInput()
@ -324,6 +322,7 @@ class WorkerKilledException(Exception):
class ThC_Signals(QtCore.QObject): class ThC_Signals(QtCore.QObject):
datasignal = QtCore.pyqtSignal(int,float) datasignal = QtCore.pyqtSignal(int,float)
class ThC(QtCore.QRunnable): class ThC(QtCore.QRunnable):
#datasignal = QtCore.pyqtSignal(int,float) #datasignal = QtCore.pyqtSignal(int,float)
def __init__(self,port=None,index=0,base=100): def __init__(self,port=None,index=0,base=100):