Python Forum
Looping sent message with socket
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Looping sent message with socket
#1
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.

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_())
Reply


Messages In This Thread
Looping sent message with socket - by anastejzja - Jun-16-2022, 06:59 PM

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020