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.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):