Jun-16-2022, 06:59 PM
Hi, I'm almost finished with my project for university, but I'm having a really rough time with looping the message that is sent. I've tried doing it with threading library but it was showing an error with run(), so I tried doing it with while True:, but i still only works one time and it closes.
I know that doing it with QTdesigner isn't the most perfect way, but we only had 3 months do do it and we never had any python programming before. Also we don't have any help from our teacher so it was the fastest way to make a gui, which he demanded.
Can anyone help me with looping that message?
There aren't any errors, it just connects and shuts down after one time sending message.
I know that doing it with QTdesigner isn't the most perfect way, but we only had 3 months do do it and we never had any python programming before. Also we don't have any help from our teacher so it was the fastest way to make a gui, which he demanded.
Can anyone help me with looping that message?
There aren't any errors, it just connects and shuts down after one time sending message.
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") self.lewySilnik.valueChanged.connect(self.val) self.lewySilnik.setMinimum(-128) self.lewySilnik.setMaximum(127) 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") self.prawySilnik.setMinimum(-128) self.prawySilnik.setMaximum(127) self.prawySilnik.valueChanged.connect(self.val) 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.line_battery = QtWidgets.QTextBrowser(self.centralwidget) self.line_battery.setGeometry(QtCore.QRect(290, 50, 121, 31)) self.line_battery.setObjectName("bateria") 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") self.line_s1 = QtWidgets.QTextBrowser(self.centralwidget) self.line_s1.setGeometry(QtCore.QRect(30, 210, 118, 23)) self.line_s1.setObjectName("line_s1") 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.line_s2 = QtWidgets.QTextBrowser(self.centralwidget) self.line_s2.setGeometry(QtCore.QRect(160, 210, 118, 23)) self.line_s2.setObjectName("line_s2") self.line_s3 = QtWidgets.QTextBrowser(self.centralwidget) self.line_s3.setGeometry(QtCore.QRect(300, 210, 118, 23)) self.line_s3.setObjectName("line_s3") self.line_s4 = QtWidgets.QTextBrowser(self.centralwidget) self.line_s4.setGeometry(QtCore.QRect(450, 210, 118, 23)) self.line_s4.setObjectName("line_s4") self.line_s5 = QtWidgets.QTextBrowser(self.centralwidget) self.line_s5.setGeometry(QtCore.QRect(610, 210, 118, 23)) self.line_s5.setObjectName("line_s5") 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") self.led1 = QtWidgets.QCheckBox(self.centralwidget) self.led1.setGeometry(QtCore.QRect(480, 320, 121, 31)) self.led1.setObjectName("led1") self.led1.stateChanged.connect(self.val) self.led2 = QtWidgets.QCheckBox(self.centralwidget) self.led2.setGeometry(QtCore.QRect(570, 320, 121, 31)) self.led2.setObjectName("led2") self.led2.stateChanged.connect(self.val) 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 clickpolacz(self): TCP_IP = self.adres.toPlainText() TCP_PORT = 8000 s.connect((TCP_IP, TCP_PORT)) self.wyslana.setText('Połączono') s.send = '[000000]' def val(self): led1=int(self.led1.isChecked()) led2=int(self.led2.isChecked()) slide1=self.prawySilnik.value() slide2=self.lewySilnik.value() if slide1 <0: slide1 += 255 if slide2 <0: slide2+=255 slide1 = str(hex(slide1).lstrip("0x")).zfill(2) slide2 = str(hex(slide2).lstrip("0x")).zfill(2) while True: self.send = '[' + '0' + str(led1 + led2) + str(slide1) + str(slide2) + ']' self.wyslana.setText(self.send) s.send(str.encode(str(self.send))) self.send(str.encode(str(self.send))) time.sleep(0.5) def line_recmg(self): self.data = str(s.recv(1024)).lstrip("b'[").rstrip("]'") self.odebrana.setText('[' + self.data + ']') def bateria(self): self.line_battery.setText(str(int(self.data[4:6] + self.data[2:4], 16)) + 'mV') def sensors(self): self.line_s1.setText(str(int(self.data[8:10] + self.data[6:8], 16))) self.line_s2.setText(str(int(self.data[12:14] + self.data[10:12], 16))) self.line_s3.setText(str(int(self.data[16:18] + self.data[14:16], 16))) self.line_s4.setText(str(int(self.data[20:22] + self.data[18:20], 16))) self.line_s5.setText(str(int(self.data[24:26] + self.data[22:24], 16))) def restart(self): s.send(str.encode(str(self.send))) self.wyslana.setText(self.send) self.prawySilnik.setValue(0) self.lewySilnik.setValue(0) def clickrozlacz(self): socket.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) ex = Ui_MainWindow() w = QtWidgets.QMainWindow() ex.setupUi(w) w.show() sys.exit(app.exec_()) app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())