From f2ca1e9ebe6294859186c44efe711ed755352aeb Mon Sep 17 00:00:00 2001
From: Neptune-1
Date: Wed, 5 Dec 2018 17:02:45 +0300
Subject: [PATCH] gui edit
---
Server/Server+GUI_non_xml_dowload (копия).py | 378 +++++++++++++++
Server/back.png | Bin 0 -> 4391 bytes
Server/back_1.qrc | 5 +
Server/back_1_rc.py | 73 +++
Server/gui.ui | 460 +++++++++++++++++++
Server/gui1.py | 197 ++++++++
6 files changed, 1113 insertions(+)
create mode 100644 Server/Server+GUI_non_xml_dowload (копия).py
create mode 100755 Server/back.png
create mode 100755 Server/back_1.qrc
create mode 100644 Server/back_1_rc.py
create mode 100755 Server/gui.ui
create mode 100644 Server/gui1.py
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 0000000000000000000000000000000000000000..0a306ec6a32325a582d39a595eb8206b64f2ce43
GIT binary patch
literal 4391
zcmeAS@N?(olHy`uVBq!ia0y~yUC!*C^P__;~{VWs78e&0Z0n57ywDmQRSl{GnxoSv&U#jFj_{ARtKXM
z<(@#6$6Js%lfO7pC6Xns-+Y(+45y85}Sb4q9e
E0O`y39RL6T
literal 0
HcmV?d00001
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
+
+
+
+
+
+
+
+
+
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_())
+