May-28-2022, 08:23 AM
Hi, I'm trying to make a whole GUI to control a robot, but I'm having real trouble with connecting the 5 sensors from the robot to the progress bars in the code. I can't find anything online. I know the code isn't perfect in any way, but until now, everything had worked. The application managed to connect to the robot, get data back from the robot, the battery was displayed. Leds don't work like they are supposed to and the engines of the wheels dont start correctly, but those things aren't that complicated ( i think ).
However the sensors mess up the WHOLE thing.
Is there any way to do it?
My code:
However the sensors mess up the WHOLE thing.
Is there any way to do it?
My code:
from PyQt5 import QtCore, QtGui, QtWidgets import socket import time global s class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 600) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.columnView = QtWidgets.QColumnView(self.centralwidget) self.columnView.setGeometry(QtCore.QRect(20, 10, 751, 501)) self.columnView.setObjectName("columnView") self.polacz = QtWidgets.QPushButton(self.centralwidget) self.polacz.setGeometry(QtCore.QRect(40, 60, 93, 28)) self.polacz.setObjectName("polacz") self.polacz.clicked.connect(self.clickpolacz) self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(40, 30, 81, 16)) self.label.setObjectName("label") self.adres = QtWidgets.QTextEdit(self.centralwidget) self.adres.setGeometry(QtCore.QRect(120, 20, 111, 31)) self.adres.setObjectName("adres") self.lewySilnik = QtWidgets.QSlider(self.centralwidget) self.lewySilnik.setGeometry(QtCore.QRect(170, 380, 491, 31)) self.lewySilnik.setMinimumSize(QtCore.QSize(491, 0)) self.lewySilnik.setOrientation(QtCore.Qt.Horizontal) self.lewySilnik.setObjectName("lewySilnik") #left engine self.lewySilnik.valueChanged.connect(self.slide_it) self.lewySilnik.setMinimum(-127) self.lewySilnik.setMaximum(128) self.val = 0 self.prawySilnik = QtWidgets.QSlider(self.centralwidget) self.prawySilnik.setGeometry(QtCore.QRect(170, 440, 491, 31)) self.prawySilnik.setOrientation(QtCore.Qt.Horizontal) self.prawySilnik.setObjectName("prawySilnik") # right engine self.prawySilnik.setMinimum(-127) self.prawySilnik.setMaximum(128) self.prawySilnik.valueChanged.connect(self.slide_it1) self.val1 = 0 self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(70, 380, 121, 31)) self.label_2.setObjectName("label_2") self.label_3 = QtWidgets.QLabel(self.centralwidget) self.label_3.setGeometry(QtCore.QRect(70, 450, 81, 21)) self.label_3.setObjectName("label_3") self.rozlacz = QtWidgets.QPushButton(self.centralwidget) self.rozlacz.setGeometry(QtCore.QRect(140, 60, 93, 28)) self.rozlacz.setObjectName("rozlacz") self.rozlacz.clicked.connect(self.clickrozlacz) self.label_4 = QtWidgets.QLabel(self.centralwidget) self.label_4.setGeometry(QtCore.QRect(310, 20, 81, 31)) self.label_4.setObjectName("label_4") self.bateria = QtWidgets.QTextBrowser(self.centralwidget) self.bateria.setGeometry(QtCore.QRect(290, 50, 121, 31)) self.bateria.setObjectName("bateria") #self.bateria.setText(self.infobateria) self.label_5 = QtWidgets.QLabel(self.centralwidget) self.label_5.setGeometry(QtCore.QRect(520, 20, 141, 31)) self.label_5.setObjectName("label_5") self.odebrana = QtWidgets.QTextBrowser(self.centralwidget) self.odebrana.setGeometry(QtCore.QRect(460, 50, 261, 31)) self.odebrana.setObjectName("odebrana") # message back self.sensor1 = QtWidgets.QProgressBar(self.centralwidget) self.sensor1.setGeometry(QtCore.QRect(30, 210, 118, 23)) self.sensor1.setProperty("value", 0) self.sensor1.setMinimum(0) self.sensor1.setMaximum(2000) self.sensor1.setObjectName("sensor1") self.sensor1. def signal_accept(self, msg): self.pbar.setValue(int(msg)) self.line_2 = QtWidgets.QFrame(self.centralwidget) self.line_2.setGeometry(QtCore.QRect(20, 100, 751, 20)) self.line_2.setFrameShape(QtWidgets.QFrame.HLine) self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_2.setObjectName("line_2") self.label_6 = QtWidgets.QLabel(self.centralwidget) self.label_6.setGeometry(QtCore.QRect(330, 120, 71, 21)) self.label_6.setObjectName("label_6") self.sensor2 = QtWidgets.QProgressBar(self.centralwidget) self.sensor2.setGeometry(QtCore.QRect(160, 210, 118, 23)) self.sensor2.setProperty("value", 24) self.sensor2.setMinimum(0) self.sensor2.setMaximum(2000) self.sensor2.setObjectName("sensor2") self.sensor2.value(0) self.sensor3 = QtWidgets.QProgressBar(self.centralwidget) self.sensor3.setGeometry(QtCore.QRect(300, 210, 118, 23)) self.sensor3.setProperty("value", 24) self.sensor3.setMinimum(0) self.sensor3.setMaximum(2000) self.sensor3.setObjectName("sensor3") self.sensor3.value(0) self.sensor4 = QtWidgets.QProgressBar(self.centralwidget) self.sensor4.setGeometry(QtCore.QRect(450, 210, 118, 23)) self.sensor4.setProperty("value", 24) self.sensor4.setMinimum(0) self.sensor4.setMaximum(2000) self.sensor4.setObjectName("sensor4") self.sensor4.value(0) self.sensor5 = QtWidgets.QProgressBar(self.centralwidget) self.sensor5.setGeometry(QtCore.QRect(610, 210, 118, 23)) self.sensor5.setProperty("value", 24) self.sensor5.setMinimum(0) self.sensor5.setMaximum(2000) self.sensor5.setObjectName("sensor5") self.sensor5.value(0) self.label_7 = QtWidgets.QLabel(self.centralwidget) self.label_7.setGeometry(QtCore.QRect(60, 320, 161, 21)) self.label_7.setObjectName("label_7") self.wyslana = QtWidgets.QTextBrowser(self.centralwidget) self.wyslana.setGeometry(QtCore.QRect(230, 320, 201, 31)) self.wyslana.setObjectName("wyslana") # sent message self.led1 = QtWidgets.QCheckBox(self.centralwidget) self.led1.setGeometry(QtCore.QRect(480, 320, 121, 31)) self.led1.setObjectName("led1") self.led1.stateChanged.connect(self.led1val) self.led1stan = 0 self.led2 = QtWidgets.QCheckBox(self.centralwidget) self.led2.setGeometry(QtCore.QRect(570, 320, 121, 31)) self.led2.setObjectName("led2") self.led2.stateChanged.connect(self.led2val) self.led2stan = 0 self.reset = QtWidgets.QPushButton(self.centralwidget) self.reset.setGeometry(QtCore.QRect(650, 320, 93, 28)) self.reset.setObjectName("reset") self.reset.clicked.connect(self.restart) self.label_8 = QtWidgets.QLabel(self.centralwidget) self.label_8.setGeometry(QtCore.QRect(50, 180, 71, 21)) self.label_8.setObjectName("label_8") self.label_9 = QtWidgets.QLabel(self.centralwidget) self.label_9.setGeometry(QtCore.QRect(170, 180, 71, 21)) self.label_9.setObjectName("label_9") self.label_10 = QtWidgets.QLabel(self.centralwidget) self.label_10.setGeometry(QtCore.QRect(300, 180, 71, 21)) self.label_10.setObjectName("label_10") self.label_11 = QtWidgets.QLabel(self.centralwidget) self.label_11.setGeometry(QtCore.QRect(460, 180, 71, 21)) self.label_11.setObjectName("label_11") self.label_12 = QtWidgets.QLabel(self.centralwidget) self.label_12.setGeometry(QtCore.QRect(620, 180, 71, 21)) self.label_12.setObjectName("label_12") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def slide_it(self, value): self.sum_slide_it(0, value) def slide_it1(self, value1): self.sum_slide_it(1, value1) def led1val(self, value2): if self.led1.isChecked(): self.sum_slide_it(2, value2-1) else: self.sum_slide_it(2, value2) def led2val(self, value3): if self.led2.isChecked(): self.sum_slide_it(3, value3 - 1) else: self.sum_slide_it(3, value3) def sum_slide_it(self, id, value): global s if id == 0: self.val = hex(value) if id == 1: self.val1 = hex(value) if id == 2: self.led1stan = (value) if id == 3: self.led2stan = (value) if id>-1 or id <4: self.send=('[' + str(self.led1stan) + str(self.led2stan) + str(self.val)[2:4] + str(self.val1)[2:4] + ']') self.wyslana.setText(self.send) s.send(str.encode(str(self.send))) BUFFER_SIZE = 1024 self.data = s.recv(BUFFER_SIZE) self.odebrana.setText(str(self.data)) # BATERIE self.bateryjka = int(self.data[2:6],16) self.bateria.setText(str(self.bateryjka)) BUFFER_SIZE = 1024 self.data = s.recv(BUFFER_SIZE) def s1(self,value): self.s1 = int(self.data[6:10]) self.sensor1.setValue(self.s1) ''' self.s2 = int(self.data[10:14]) self.sensor2.setValue(self.s2) self.s3 = int(self.data[14:18]) self.sensor3.setValue(self.s3) self.s4 = int(self.data[18:22]) self.sensor4.setValue(self.s4) self.s5 = int(self.data[22:]) self.sensor5.setValue(self.s5) ''' def restart(self): self.send=('[000000]') s.send(str.encode(str(self.send))) self.wyslana.setText(self.send) self.prawySilnik.setValue(0) self.lewySilnik.setValue(0) #def infobateria(self): def clickpolacz(self): TCP_IP = self.adres.toPlainText() TCP_PORT = 8000 s.connect((TCP_IP, TCP_PORT)) def clickrozlacz(self): s.close() def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.polacz.setText(_translate("MainWindow", "Połącz")) self.label.setText(_translate("MainWindow", "Adres robota")) self.label_2.setText(_translate("MainWindow", "Lewy Silnik")) self.label_3.setText(_translate("MainWindow", "Prawy Silnik")) self.rozlacz.setText(_translate("MainWindow", "Rozłącz")) self.label_4.setText(_translate("MainWindow", "Stan baterii")) self.label_5.setText(_translate("MainWindow", "Odebrana wiadomość ")) self.label_6.setText(_translate("MainWindow", "Sensory")) self.label_7.setText(_translate("MainWindow", "Wysłana wiadomość")) self.led1.setText(_translate("MainWindow", "Led 1")) self.led2.setText(_translate("MainWindow", "Led 2")) self.reset.setText(_translate("MainWindow", "Reset")) self.label_8.setText(_translate("MainWindow", "Sensor 1")) self.label_9.setText(_translate("MainWindow", "Sensor 2")) self.label_10.setText(_translate("MainWindow", "Sensor 3")) self.label_11.setText(_translate("MainWindow", "Sensor 4")) self.label_12.setText(_translate("MainWindow", "Sensor 5")) if __name__ == "__main__": import sys s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())And the sensors part in data ( they are 1 to 5):