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):
Larz60+ write May-28-2022, 10:39 AM:
Please post all code, output and errors (it it's entirety) between their respective tags. Refer to BBCode help topic on how to post. Use the "Preview Post" button to make sure the code is presented as you expect before hitting the "Post Reply/Thread" button.
As mentioned in next post by Axel_Erfurt. I have fixed it for you this time. Please use BBCode tags on future posts.
Please post all code, output and errors (it it's entirety) between their respective tags. Refer to BBCode help topic on how to post. Use the "Preview Post" button to make sure the code is presented as you expect before hitting the "Post Reply/Thread" button.
As mentioned in next post by Axel_Erfurt. I have fixed it for you this time. Please use BBCode tags on future posts.
Attached Files