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



        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")

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