diff --git a/Server/Server+GUI_non_xml_dowload (копия).py b/Server/Server+GUI_non_xml_dowload (копия).py new file mode 100644 index 0000000..da05288 --- /dev/null +++ b/Server/Server+GUI_non_xml_dowload (копия).py @@ -0,0 +1,378 @@ +# -*- coding: utf-8 -*- . +from PyQt5.QtWidgets import * +from PyQt5.QtGui import * +from PyQt5.QtCore import * +from mpl_toolkits.mplot3d import Axes3D +import matplotlib.pyplot as plt +import time +import socket +import os +from PyQt5 import QtCore, QtGui, QtWidgets +import easygui +import threading +from threading import Thread +import math +import requests +import json +from PyQt5 import QtCore +import gui1 +ip = [1, 2] +# slids = 0 +sq_rad = 0 +sq_cet = 0 +cr_rad = 0 +cr_cet = 0 +copters = 1 +conn = [] +conn_2 = [] +file = '' +data = b'' +addr = [] +addr_2 = [] +coord = [] + +sock = socket.socket() + +sock.bind(('', 35001)) # назначается адресс и порт связи для отпраки команд на коптеры +sock.listen(1) + +sock_2 = socket.socket() +sock_2.bind(('', 35002)) # назначается адресс и порт связи для приема данных с коптеров +sock_2.listen(1) + + +"""class Dialog(QMainWindow, gui1.Ui_Dialog): + def __init__(self): + super().__init__() + self.setupUi(self) + + def up(self): + self.voltage_2.setText('1234567')""" + + +class Widget(QMainWindow, gui1.Ui_MainWindow): + def __init__(self): + super().__init__() + self.setupUi(self) + self.start_animation_button.clicked.connect(self.start_animation) + self.stop_swarm_but.clicked.connect(self.stop_swarm) + self.show_3d_scene_button.clicked.connect(self.show_3d) + self.disarm_all_button.clicked.connect(self.disarm) + + + self.turn_off_led_button.clicked.connect(self.off_leds) + self.turn_on_led_button.clicked.connect(self.on_leds) + self.upload_animation_button.clicked.connect(self.upload_animation) + self.land_all_button.clicked.connect(self.land) + self.take_off_button.clicked.connect(self.take_off) + #self.number_animation_copters.clicked.connect(self.number_animation) + self.take_off_n_button.clicked.connect(self.take_off_n) + self.land_n_button.clicked.connect(self.land_n) + self.disarm_n_button.clicked.connect(self.disarm_n) + self.land_spinBox.valueChanged.connect(self.land_led) + self.disarm_spinBox.valueChanged.connect(self.disarm_led) + self.take_off_spinBox.valueChanged.connect(self.take_off_led) + self.safty_button.clicked.connect(self.safty) + self.connect_button.clicked.connect(self.connect) + self.swarm_size_spinBox.valueChanged.connect(self.number_copters) + + def stop_swarm(self): + pass + + def receiver(self): + global copters + global addr + while True: + try: + for k in range(copters): + a = requests.get('http://' + addr[k][0] + ':8081/aruco_map') + tem = json.loads(a.text) + + coord[k] = str(tem['x']) + ',' + str(tem['y']) + ',' + str(tem['z']) + ',' + \ + str(tem['mode']) + ',' + str(tem['armed']) + ',' + str(tem['frame_id']) + str( + tem['voltage']) + ',' + \ + str(tem['yaw']) + ',' + str(tem['pitch']) + ',' + str(tem['roll']) + ',' + \ + str(tem['vx']) + ',' + str(tem['vy']) + ',' + str(tem['vz']) + + time.sleep(0.05) + + + + except Exception as e: + + pass + + def sender(self, com, num): + global conn + global conn_2 + global copters + print(com) + print(num) + try: + if num == 'all': + for i in range(copters): + conn[i].send(com + b'$$') + print(com + b'$$') + elif int(num) > 0: + conn[int(num) - 1].send(com + b'$$') + except: + pass + + def message(self, mes): + pass + + def connect(self): + global copters + global conn + global conn_2 + global addr + global addr_2 + global coord + + addr_2 = [] + + conn = [] + conn_2 = [] + + self.message('Try connect') + for i in range(copters): + conn.append(0) + addr.append(0) + coord.append('0') + + t_0 = Thread(target=self.connect_init) + t_0.daemon = True + t_0.start() + + def connect_init(self): + self.state_label.setText("

Wait

") + global copters + + global conn + global addr + global conn_2 + global addr_2 + + for i in range(copters): + conn[i], addr[i] = sock.accept() + print("connected_controllers:", addr[i]) + + self.disarm_spinBox.setMaximum(copters) + self.land_spinBox.setMaximum(copters) + self.take_off_spinBox.setMaximum(copters) + self.state_label.setText("

Connect

") + + t = Thread(target=self.receiver) + t.daemon = True + t.start() + + def number_animation(self): + global copters + col = [b'(255,0,0)', b'(173,255,47)', b'(255,215,0)', b'(255,0,255)', b'(0,0,255)', b'(205,92,92)', + b'(255,255,255)', b'(240,128,128)'] + for i in range(copters + 1): + self.sender(b'led.fill' + col[i], str(i)) + time.sleep(0.5) + self.sender(b'led.off()', str(i)) + for i in range(copters + 1): + self.sender(b'led.fill' + col[i], str(i)) + + time.sleep(0.5) + + def safty(self): + self.message('safty check') + self.sender(b'f.safety_check(False)', 'all') + + def take_off(self): + self.message('take off') + self.sender(b'f.takeoff(z=2, speed=2,speed_takeoff=2 , timeout=2)', 'all') + + def take_off_n(self): + self.message('take off n') + self.sender(b'f.takeoff()', str(self.take_off_spinBox.value())) + + def land(self): + self.message('land') + self.sender(b'f.land(preland=False)', 'all') + + def land_n(self): + self.message('land n') + self.sender(b'f.land(preland=False)', str(self.land_spinBox.value())) + + def disarm(self): + self.sender(b'f.arming(False)', 'all') + + def disarm_n(self): + self.sender(b'f.arming(False)', str(self.disarm_spinBox.value())) + + def off_leds(self): + self.sender(b'led.off()', 'all') + + def land_led(self): + self.sender(b'led.off()', 'all') + self.sender(b'led.fill(255,0,0)', self.land_spinBox.value()) + # print(1) + + def disarm_led(self): + self.sender(b'led.off()', 'all') + self.sender(b'led.fill(0,255,0)', self.disarm_spinBox.value()) + + def take_off_led(self): + self.sender(b'led.off()', 'all') + self.sender(b'led.fill(0,0,255)', self.take_off_spinBox.value()) + + def on_leds(self): + self.sender(b'led.fill(0, 0, 255)', 'all') + + def square(self): + + pass + + def number_copters(self): + global copters + copters = self.swarm_size_spinBox.value() + + def circle(self): + # ToDO to make this function + pass + + def upload_animation(self): + global file + file = easygui.fileopenbox(filetypes=["*.avi"]) # вызов окна проводника для выбора файла + + def start_animation(self): + t_4 = Thread(target=self.start_animation_1) + t_4.daemon = True + t_4.start() + + def start_animation_1(self): + global file + f = open(file, 'r') + prog = f.read() + self.sender(b'programm', 'all') + time.sleep(0.5) + self.sender(bytes(prog, 'utf-8'), 'all') + + def show_3d(self): + + global data + global copters + global coord + fig = plt.figure() + ax = fig.add_subplot(111, projection='3d') + updateDialog = Dialog() + updateDialog.show() + + while True: + s = str(self.console_textEdit.toPlainText()) + print(s) + if '>' in s: + + print(s[:-2], s[s.index('>') - 1]) + self.console_textEdit.setText('') + if s[s.index('>') - 1] == '0': + self.sender(bytes(str(s[:s.index('>') - 1]), 'utf-8'), 'all') + print(s[:s.index('>') - 1], 'all') + else: + self.sender(bytes(str(s[:s.index('>') - 1]), 'utf-8'), str(s[s.index('>') - 1])) + print('sender', s[s.index('>') - 1]) + try: + + i = updateDialog.number_spinBox.value() + if i > 0: + i -= 1 + + coord_drone = [] + coord_drone = coord[i].split(',') + + updateDialog.z_2.setText("

" + coord_drone[ + 0] + "

") + updateDialog.x_2.setText("

" + coord_drone[ + 1] + "

") + updateDialog.y_2.setText("

" + coord_drone[ + 2] + "

") + updateDialog.mode_2.setText("

" + coord_drone[ + 3] + "

") + updateDialog.armed_2.setText("

" + coord_drone[ + 4] + "

") + updateDialog.frame_id_2.setText("

" + coord_drone[ + 5] + "

") + updateDialog.voltage_2.setText("

" + coord_drone[ + 6] + "

") + updateDialog.yaw2.setText("

" + coord_drone[ + 7] + "

") + updateDialog.pitch_2.setText("

" + coord_drone[ + 8] + "

") + updateDialog.roll_2.setText("

" + coord_drone[ + 9] + "

") + updateDialog.vx_2.setText("

" + coord_drone[ + 10] + "

") + updateDialog.vy_2.setText("

" + coord_drone[ + 11] + "

") + updateDialog.vz_2.setText("

" + coord_drone[ + 12] + "

") + except Exception as e: + # print(e) + pass + try: + + n = 0 + # set size of scene + + ax.set_xlim(0, 1.5) + ax.set_ylim(0, 2.2) + ax.set_zlim(0, 2) + + ax.set_xlabel('x') + ax.set_ylabel('y') + ax.set_zlabel('z') + + plt.pause(0.01) + + ax.clear() + try: + for i in coord: + co = (0, 0, 0) + n += 1 + + if self.land_spinBox.value() == n: + co = (1, 0, 0) + if self.take_off_spinBox.value() == n: + co = (1, 0, 0) + if self.disarm_spinBox.value() == n: + co = (1, 0, 0) + + ax.scatter(float(i.split(',')[0]), float(i.split(',')[1]), float(i.split(',')[2]), s=50, c=co, + marker='.') + ax.text(float(i.split(',')[0]), float(i.split(',')[1]), float(i.split(',')[2]), str(n), size=10, + zorder=1, color=(0, 0, 0)) + + except Exception as e: + print(e) + + ax.set_xlim(0, 1.5) + ax.set_ylim(0, 2.2) + ax.set_zlim(0, 2) + + ax.set_xlabel('x') + ax.set_ylabel('y') + ax.set_zlabel('z') + + plt.draw() + except KeyboardInterrupt: + print('stop') + break + + plt.show() + + +#if __name__ == '__main__': +app = QApplication([]) +w = Widget() +w.show() + +app.exec() + +"""Code by Alexandr Osherov 10 class, phone - +79251834732, email - allexandr2001@mail.ru""" diff --git a/Server/back.png b/Server/back.png new file mode 100755 index 0000000..0a306ec Binary files /dev/null and b/Server/back.png differ diff --git a/Server/back_1.qrc b/Server/back_1.qrc new file mode 100755 index 0000000..cbabc36 --- /dev/null +++ b/Server/back_1.qrc @@ -0,0 +1,5 @@ + + + back.png + + diff --git a/Server/back_1_rc.py b/Server/back_1_rc.py new file mode 100644 index 0000000..e23970e --- /dev/null +++ b/Server/back_1_rc.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- + +# Resource object code +# +# Created by: The Resource Compiler for PyQt5 (Qt v5.11.2) +# +# WARNING! All changes made in this file will be lost! + +from PyQt5 import QtCore + +qt_resource_data = b"\ +\x00\x00\x01\x01\ +\x00\ +\x00\x11\x27\x78\x9c\xeb\x0c\xf0\x73\xe7\xe5\x92\xe2\x62\x60\x60\ +\xe0\xf5\xf4\x70\x09\x62\x60\x60\x05\x32\x99\x2e\x70\x30\x01\x29\ +\x07\x79\x2f\x46\x20\xc5\x58\x1c\xe4\xee\xc4\xb0\xee\x9c\xcc\x4b\ +\x20\x87\x25\xdd\xd1\xd7\x91\x81\x61\x63\x3f\xf7\x9f\x44\x90\x52\ +\xce\x02\x8f\xc8\x62\x06\x06\xbe\xc3\x20\xcc\x78\x3c\x7f\x45\x0a\ +\x03\x83\xc0\x1e\x4f\x17\xc7\x90\x8a\xb8\xb7\xd7\x37\x0a\x1e\x32\ +\x60\x60\x71\x74\xe4\xcf\x73\xef\xf4\x2a\x4f\x2c\x5a\xd4\xc2\xa4\ +\xf0\xa0\x6c\xf2\x7c\xfd\x87\x71\xdf\x6b\xf9\x19\x7e\x74\xee\xfd\ +\x3e\xe7\xf3\x1c\xff\xec\xb5\xaf\x77\x9d\x63\x64\xf8\xd1\xf4\x3d\ +\x12\x68\xe4\x8f\x6c\x26\x09\x06\x86\x06\x16\x46\x1e\xa0\x13\x9a\ +\x18\xd8\x18\x18\x14\x1c\x19\x98\x19\x18\x26\x28\x34\x00\x9d\xe3\ +\x21\x70\x00\xa8\x46\x85\x23\x01\x48\x0a\xb1\x18\x80\x9c\x30\xaa\ +\x7c\x54\xf9\xa8\xf2\x51\xe5\xa3\xca\x47\x95\x8f\x2a\x1f\x55\x3e\ +\xaa\x7c\x54\xf9\xa8\xf2\x51\xe5\xa3\xca\x47\x95\x8f\x2a\x1f\x55\ +\x4e\xbc\x72\x96\x9e\x8f\x0c\x2f\xa5\x79\x56\x38\x34\x3f\xa9\x06\ +\x72\x19\x3c\x5d\xfd\x5c\xd6\x39\x25\x34\x01\x00\xe9\xcb\xf7\x1d\ +\ +" + +qt_resource_name = b"\ +\x00\x04\ +\x00\x06\x87\x9b\ +\x00\x62\ +\x00\x61\x00\x63\x00\x6b\ +\x00\x08\ +\x07\x9e\x5a\x47\ +\x00\x62\ +\x00\x61\x00\x63\x00\x6b\x00\x2e\x00\x70\x00\x6e\x00\x67\ +" + +qt_resource_struct_v1 = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ +\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\ +" + +qt_resource_struct_v2 = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01\x64\x8d\x7d\xe9\xe9\ +" + +qt_version = [int(v) for v in QtCore.qVersion().split('.')] +if qt_version < [5, 8, 0]: + rcc_version = 1 + qt_resource_struct = qt_resource_struct_v1 +else: + rcc_version = 2 + qt_resource_struct = qt_resource_struct_v2 + +def qInitResources(): + QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/Server/gui.ui b/Server/gui.ui new file mode 100755 index 0000000..c83797f --- /dev/null +++ b/Server/gui.ui @@ -0,0 +1,460 @@ + + + MainWindow + + + + 0 + 0 + 1280 + 720 + + + + + 1280 + 720 + + + + + 1280 + 720 + + + + Drone Swarm + + + + + + 760 + 70 + 100 + 40 + + + + Take off all + + + + + + 890 + 70 + 91 + 40 + + + + Land all + + + + + + 1010 + 70 + 101 + 40 + + + + background-color: red + + + + Disarm all + + + + + + 760 + 150 + 100 + 40 + + + + Take off n + + + + + + 890 + 150 + 91 + 40 + + + + + + + Land n + + + + + + 1010 + 150 + 101 + 40 + + + + background-color: red + + + + Disarm n + + + + + + 790 + 120 + 50 + 22 + + + + + + + 910 + 120 + 50 + 22 + + + + + + + 1040 + 120 + 50 + 22 + + + + + + + 840 + 20 + 200 + 20 + + + + <html><head/><body><p><span style=" font-size:12pt; color:#c8c8c8;">Control console</span></p></body></html> + + + Qt::AlignCenter + + + + + + 1140 + 60 + 100 + 61 + + + + + + + Turn on Leds + + + + + + 1140 + 140 + 100 + 61 + + + + Turn off Leds + + + + + + 220 + 510 + 141 + 51 + + + + + + + Stop swarm + + + + + + 620 + 60 + 111 + 40 + + + + + + + Connect + + + + + + 260 + 80 + 50 + 20 + + + + + + + 240 + 50 + 100 + 20 + + + + <html><head/><body><p><span style=" font-size:9pt;">Swarm Size</span></p></body></html> + + + Qt::AlignCenter + + + + + + 840 + 260 + 200 + 20 + + + + <html><head/><body><p><span style=" font-size:12pt; color:#c8c8c8;">Send command</span></p></body></html> + + + Qt::AlignCenter + + + + + + 640 + 290 + 591 + 271 + + + + background-color: rgb(1, 36, 86) + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; color:#ffffff;">...</span></p></body></html> + + + + + + 220 + 300 + 141 + 51 + + + + + + + Show 3d scene + + + + + + 220 + 370 + 141 + 51 + + + + + + + Upload animation + + + + + + 220 + 160 + 131 + 41 + + + + color: red + + + + + <html><head/><body><p><span style=" font-size:12pt;">Disconnect</span></p></body></html> + + + Qt::AlignCenter + + + + + + 230 + 140 + 111 + 20 + + + + Statement swarm + + + Qt::AlignCenter + + + + + + 220 + 440 + 141 + 51 + + + + + + + Start animation + + + + + + 0 + -1 + 1280 + 701 + + + + <html><head/><body><p><img src=":/back/back.png"/></p></body></html> + + + + + + 620 + 110 + 111 + 40 + + + + + + + Safty check + + + + + + 620 + 160 + 111 + 40 + + + + + + + Synchronize + + + back_label + take_off_button + land_all_button + disarm_all_button + take_off_n_button + land_n_button + disarm_n_button + take_off_spinBox + land_spinBox + disarm_spinBox + control_console_label + turn_on_led_button + turn_off_led_button + stop_swarm_but + connect_button + swarm_size_spinBox + swarm_size_label + send_command_label + console_textEdit + show_3d_scene_button + upload_animation_button + state_label + statement_swarm_label + start_animation_button + safty_button + synch_button + + + + + 0 + 0 + 1280 + 23 + + + + + + + + + + diff --git a/Server/gui1.py b/Server/gui1.py new file mode 100644 index 0000000..844d61e --- /dev/null +++ b/Server/gui1.py @@ -0,0 +1,197 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'swarm_5.ui' +# +# Created by: PyQt5 UI code generator 5.11.3 +# +# WARNING! All changes made in this file will be lost! + +from PyQt5 import QtCore, QtGui, QtWidgets + +class Ui_MainWindow(object): + def setupUi(self, MainWindow): + MainWindow.setObjectName("MainWindow") + MainWindow.resize(1280, 720) + MainWindow.setMinimumSize(QtCore.QSize(1280, 720)) + MainWindow.setMaximumSize(QtCore.QSize(1280, 720)) + self.centralwidget = QtWidgets.QWidget(MainWindow) + self.centralwidget.setObjectName("centralwidget") + self.take_off_button = QtWidgets.QPushButton(self.centralwidget) + self.take_off_button.setGeometry(QtCore.QRect(760, 70, 100, 40)) + self.take_off_button.setObjectName("take_off_button") + self.land_all_button = QtWidgets.QPushButton(self.centralwidget) + self.land_all_button.setGeometry(QtCore.QRect(890, 70, 91, 40)) + self.land_all_button.setObjectName("land_all_button") + self.disarm_all_button = QtWidgets.QPushButton(self.centralwidget) + self.disarm_all_button.setGeometry(QtCore.QRect(1010, 70, 101, 40)) + self.disarm_all_button.setStyleSheet("background-color: red\n" +"") + self.disarm_all_button.setObjectName("disarm_all_button") + self.take_off_n_button = QtWidgets.QPushButton(self.centralwidget) + self.take_off_n_button.setGeometry(QtCore.QRect(760, 150, 100, 40)) + self.take_off_n_button.setObjectName("take_off_n_button") + self.land_n_button = QtWidgets.QPushButton(self.centralwidget) + self.land_n_button.setGeometry(QtCore.QRect(890, 150, 91, 40)) + self.land_n_button.setStyleSheet("") + self.land_n_button.setObjectName("land_n_button") + self.disarm_n_button = QtWidgets.QPushButton(self.centralwidget) + self.disarm_n_button.setGeometry(QtCore.QRect(1010, 150, 101, 40)) + self.disarm_n_button.setStyleSheet("background-color: red\n" +"") + self.disarm_n_button.setObjectName("disarm_n_button") + self.take_off_spinBox = QtWidgets.QSpinBox(self.centralwidget) + self.take_off_spinBox.setGeometry(QtCore.QRect(790, 120, 50, 22)) + self.take_off_spinBox.setObjectName("take_off_spinBox") + self.land_spinBox = QtWidgets.QSpinBox(self.centralwidget) + self.land_spinBox.setGeometry(QtCore.QRect(910, 120, 50, 22)) + self.land_spinBox.setObjectName("land_spinBox") + self.disarm_spinBox = QtWidgets.QSpinBox(self.centralwidget) + self.disarm_spinBox.setGeometry(QtCore.QRect(1040, 120, 50, 22)) + self.disarm_spinBox.setObjectName("disarm_spinBox") + self.control_console_label = QtWidgets.QLabel(self.centralwidget) + self.control_console_label.setGeometry(QtCore.QRect(840, 20, 200, 20)) + self.control_console_label.setAlignment(QtCore.Qt.AlignCenter) + self.control_console_label.setObjectName("control_console_label") + self.turn_on_led_button = QtWidgets.QPushButton(self.centralwidget) + self.turn_on_led_button.setGeometry(QtCore.QRect(1140, 60, 100, 61)) + self.turn_on_led_button.setStyleSheet("") + self.turn_on_led_button.setObjectName("turn_on_led_button") + self.turn_off_led_button = QtWidgets.QPushButton(self.centralwidget) + self.turn_off_led_button.setGeometry(QtCore.QRect(1140, 140, 100, 61)) + self.turn_off_led_button.setObjectName("turn_off_led_button") + self.stop_swarm_but = QtWidgets.QPushButton(self.centralwidget) + self.stop_swarm_but.setGeometry(QtCore.QRect(220, 510, 141, 51)) + self.stop_swarm_but.setStyleSheet("") + self.stop_swarm_but.setObjectName("stop_swarm_but") + self.connect_button = QtWidgets.QPushButton(self.centralwidget) + self.connect_button.setGeometry(QtCore.QRect(620, 60, 111, 40)) + self.connect_button.setStyleSheet("") + self.connect_button.setObjectName("connect_button") + self.swarm_size_spinBox = QtWidgets.QSpinBox(self.centralwidget) + self.swarm_size_spinBox.setGeometry(QtCore.QRect(260, 80, 50, 20)) + self.swarm_size_spinBox.setObjectName("swarm_size_spinBox") + self.swarm_size_label = QtWidgets.QLabel(self.centralwidget) + self.swarm_size_label.setGeometry(QtCore.QRect(240, 50, 100, 20)) + self.swarm_size_label.setAlignment(QtCore.Qt.AlignCenter) + self.swarm_size_label.setObjectName("swarm_size_label") + self.send_command_label = QtWidgets.QLabel(self.centralwidget) + self.send_command_label.setGeometry(QtCore.QRect(840, 260, 200, 20)) + self.send_command_label.setAlignment(QtCore.Qt.AlignCenter) + self.send_command_label.setObjectName("send_command_label") + self.console_textEdit = QtWidgets.QTextEdit(self.centralwidget) + self.console_textEdit.setGeometry(QtCore.QRect(640, 290, 591, 271)) + self.console_textEdit.setStyleSheet("background-color: rgb(1, 36, 86)") + self.console_textEdit.setObjectName("console_textEdit") + self.show_3d_scene_button = QtWidgets.QPushButton(self.centralwidget) + self.show_3d_scene_button.setGeometry(QtCore.QRect(220, 300, 141, 51)) + self.show_3d_scene_button.setStyleSheet("") + self.show_3d_scene_button.setObjectName("show_3d_scene_button") + self.upload_animation_button = QtWidgets.QPushButton(self.centralwidget) + self.upload_animation_button.setGeometry(QtCore.QRect(220, 370, 141, 51)) + self.upload_animation_button.setStyleSheet("") + self.upload_animation_button.setObjectName("upload_animation_button") + self.state_label = QtWidgets.QLabel(self.centralwidget) + self.state_label.setGeometry(QtCore.QRect(220, 160, 131, 41)) + self.state_label.setStyleSheet("color: red\n" +"\n" +"") + self.state_label.setAlignment(QtCore.Qt.AlignCenter) + self.state_label.setObjectName("state_label") + self.statement_swarm_label = QtWidgets.QLabel(self.centralwidget) + self.statement_swarm_label.setGeometry(QtCore.QRect(230, 140, 111, 20)) + self.statement_swarm_label.setAlignment(QtCore.Qt.AlignCenter) + self.statement_swarm_label.setObjectName("statement_swarm_label") + self.start_animation_button = QtWidgets.QPushButton(self.centralwidget) + self.start_animation_button.setGeometry(QtCore.QRect(220, 440, 141, 51)) + self.start_animation_button.setStyleSheet("") + self.start_animation_button.setObjectName("start_animation_button") + self.back_label = QtWidgets.QLabel(self.centralwidget) + self.back_label.setGeometry(QtCore.QRect(0, -1, 1280, 701)) + self.back_label.setObjectName("back_label") + self.safty_button = QtWidgets.QPushButton(self.centralwidget) + self.safty_button.setGeometry(QtCore.QRect(620, 110, 111, 40)) + self.safty_button.setStyleSheet("") + self.safty_button.setObjectName("safty_button") + self.synch_button = QtWidgets.QPushButton(self.centralwidget) + self.synch_button.setGeometry(QtCore.QRect(620, 160, 111, 40)) + self.synch_button.setStyleSheet("") + self.synch_button.setObjectName("synch_button") + self.back_label.raise_() + self.take_off_button.raise_() + self.land_all_button.raise_() + self.disarm_all_button.raise_() + self.take_off_n_button.raise_() + self.land_n_button.raise_() + self.disarm_n_button.raise_() + self.take_off_spinBox.raise_() + self.land_spinBox.raise_() + self.disarm_spinBox.raise_() + self.control_console_label.raise_() + self.turn_on_led_button.raise_() + self.turn_off_led_button.raise_() + self.stop_swarm_but.raise_() + self.connect_button.raise_() + self.swarm_size_spinBox.raise_() + self.swarm_size_label.raise_() + self.send_command_label.raise_() + self.console_textEdit.raise_() + self.show_3d_scene_button.raise_() + self.upload_animation_button.raise_() + self.state_label.raise_() + self.statement_swarm_label.raise_() + self.start_animation_button.raise_() + self.safty_button.raise_() + self.synch_button.raise_() + MainWindow.setCentralWidget(self.centralwidget) + self.menubar = QtWidgets.QMenuBar(MainWindow) + self.menubar.setGeometry(QtCore.QRect(0, 0, 1280, 23)) + 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 retranslateUi(self, MainWindow): + _translate = QtCore.QCoreApplication.translate + MainWindow.setWindowTitle(_translate("MainWindow", "Drone Swarm")) + self.take_off_button.setText(_translate("MainWindow", "Take off all")) + self.land_all_button.setText(_translate("MainWindow", "Land all")) + self.disarm_all_button.setText(_translate("MainWindow", "Disarm all")) + self.take_off_n_button.setText(_translate("MainWindow", "Take off n")) + self.land_n_button.setText(_translate("MainWindow", "Land n")) + self.disarm_n_button.setText(_translate("MainWindow", "Disarm n")) + self.control_console_label.setText(_translate("MainWindow", "

Control console

")) + self.turn_on_led_button.setText(_translate("MainWindow", "Turn on Leds")) + self.turn_off_led_button.setText(_translate("MainWindow", "Turn off Leds")) + self.stop_swarm_but.setText(_translate("MainWindow", "Stop swarm")) + self.connect_button.setText(_translate("MainWindow", "Connect")) + self.swarm_size_label.setText(_translate("MainWindow", "

Swarm Size

")) + self.send_command_label.setText(_translate("MainWindow", "

Send command

")) + self.console_textEdit.setHtml(_translate("MainWindow", "\n" +"\n" +"

...

")) + self.show_3d_scene_button.setText(_translate("MainWindow", "Show 3d scene")) + self.upload_animation_button.setText(_translate("MainWindow", "Upload animation")) + self.state_label.setText(_translate("MainWindow", "

Disconnect

")) + self.statement_swarm_label.setText(_translate("MainWindow", "Statement swarm")) + self.start_animation_button.setText(_translate("MainWindow", "Start animation")) + self.back_label.setText(_translate("MainWindow", "

")) + self.safty_button.setText(_translate("MainWindow", "Safty check")) + self.synch_button.setText(_translate("MainWindow", "Synchronize")) + +import back_1_rc + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + MainWindow = QtWidgets.QMainWindow() + ui = Ui_MainWindow() + ui.setupUi(MainWindow) + MainWindow.show() + sys.exit(app.exec_()) +