This commit is contained in:
Neptune-1
2018-12-05 17:02:45 +03:00
parent ac68a5e862
commit f2ca1e9ebe
6 changed files with 1113 additions and 0 deletions

View File

@@ -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("<html><head/><body><p><span style=\" font-size:12pt; color:rgb(255,255,"
"0);\">Wait</span></p></body></html>")
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("<html><head/><body><p><span style=\" font-size:12pt; "
"color:Green;\">Connect</span></p></body></html>")
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("<html><head/><body><p><span style=\" color:#c8c8c8;\">" + coord_drone[
0] + "</span></p></body></html>")
updateDialog.x_2.setText("<html><head/><body><p><span style=\" color:#c8c8c8;\">" + coord_drone[
1] + "</span></p></body></html>")
updateDialog.y_2.setText("<html><head/><body><p><span style=\" color:#c8c8c8;\">" + coord_drone[
2] + "</span></p></body></html>")
updateDialog.mode_2.setText("<html><head/><body><p><span style=\" color:#c8c8c8;\">" + coord_drone[
3] + "</span></p></body></html>")
updateDialog.armed_2.setText("<html><head/><body><p><span style=\" color:#c8c8c8;\">" + coord_drone[
4] + "</span></p></body></html>")
updateDialog.frame_id_2.setText("<html><head/><body><p><span style=\" color:#c8c8c8;\">" + coord_drone[
5] + "</span></p></body></html>")
updateDialog.voltage_2.setText("<html><head/><body><p><span style=\" color:#c8c8c8;\">" + coord_drone[
6] + "</span></p></body></html>")
updateDialog.yaw2.setText("<html><head/><body><p><span style=\" color:#c8c8c8;\">" + coord_drone[
7] + "</span></p></body></html>")
updateDialog.pitch_2.setText("<html><head/><body><p><span style=\" color:#c8c8c8;\">" + coord_drone[
8] + "</span></p></body></html>")
updateDialog.roll_2.setText("<html><head/><body><p><span style=\" color:#c8c8c8;\">" + coord_drone[
9] + "</span></p></body></html>")
updateDialog.vx_2.setText("<html><head/><body><p><span style=\" color:#c8c8c8;\">" + coord_drone[
10] + "</span></p></body></html>")
updateDialog.vy_2.setText("<html><head/><body><p><span style=\" color:#c8c8c8;\">" + coord_drone[
11] + "</span></p></body></html>")
updateDialog.vz_2.setText("<html><head/><body><p><span style=\" color:#c8c8c8;\">" + coord_drone[
12] + "</span></p></body></html>")
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"""

BIN
Server/back.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

5
Server/back_1.qrc Executable file
View File

@@ -0,0 +1,5 @@
<RCC>
<qresource prefix="back">
<file>back.png</file>
</qresource>
</RCC>

73
Server/back_1_rc.py Normal file
View File

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

460
Server/gui.ui Executable file
View File

@@ -0,0 +1,460 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1280</width>
<height>720</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>1280</width>
<height>720</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>1280</width>
<height>720</height>
</size>
</property>
<property name="windowTitle">
<string>Drone Swarm</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QPushButton" name="take_off_button">
<property name="geometry">
<rect>
<x>760</x>
<y>70</y>
<width>100</width>
<height>40</height>
</rect>
</property>
<property name="text">
<string>Take off all</string>
</property>
</widget>
<widget class="QPushButton" name="land_all_button">
<property name="geometry">
<rect>
<x>890</x>
<y>70</y>
<width>91</width>
<height>40</height>
</rect>
</property>
<property name="text">
<string>Land all</string>
</property>
</widget>
<widget class="QPushButton" name="disarm_all_button">
<property name="geometry">
<rect>
<x>1010</x>
<y>70</y>
<width>101</width>
<height>40</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">background-color: red
</string>
</property>
<property name="text">
<string>Disarm all</string>
</property>
</widget>
<widget class="QPushButton" name="take_off_n_button">
<property name="geometry">
<rect>
<x>760</x>
<y>150</y>
<width>100</width>
<height>40</height>
</rect>
</property>
<property name="text">
<string>Take off n</string>
</property>
</widget>
<widget class="QPushButton" name="land_n_button">
<property name="geometry">
<rect>
<x>890</x>
<y>150</y>
<width>91</width>
<height>40</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Land n</string>
</property>
</widget>
<widget class="QPushButton" name="disarm_n_button">
<property name="geometry">
<rect>
<x>1010</x>
<y>150</y>
<width>101</width>
<height>40</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">background-color: red
</string>
</property>
<property name="text">
<string>Disarm n</string>
</property>
</widget>
<widget class="QSpinBox" name="take_off_spinBox">
<property name="geometry">
<rect>
<x>790</x>
<y>120</y>
<width>50</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QSpinBox" name="land_spinBox">
<property name="geometry">
<rect>
<x>910</x>
<y>120</y>
<width>50</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QSpinBox" name="disarm_spinBox">
<property name="geometry">
<rect>
<x>1040</x>
<y>120</y>
<width>50</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="control_console_label">
<property name="geometry">
<rect>
<x>840</x>
<y>20</y>
<width>200</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:12pt; color:#c8c8c8;&quot;&gt;Control console&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QPushButton" name="turn_on_led_button">
<property name="geometry">
<rect>
<x>1140</x>
<y>60</y>
<width>100</width>
<height>61</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Turn on Leds</string>
</property>
</widget>
<widget class="QPushButton" name="turn_off_led_button">
<property name="geometry">
<rect>
<x>1140</x>
<y>140</y>
<width>100</width>
<height>61</height>
</rect>
</property>
<property name="text">
<string>Turn off Leds</string>
</property>
</widget>
<widget class="QPushButton" name="stop_swarm_but">
<property name="geometry">
<rect>
<x>220</x>
<y>510</y>
<width>141</width>
<height>51</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Stop swarm</string>
</property>
</widget>
<widget class="QPushButton" name="connect_button">
<property name="geometry">
<rect>
<x>620</x>
<y>60</y>
<width>111</width>
<height>40</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Connect</string>
</property>
</widget>
<widget class="QSpinBox" name="swarm_size_spinBox">
<property name="geometry">
<rect>
<x>260</x>
<y>80</y>
<width>50</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="swarm_size_label">
<property name="geometry">
<rect>
<x>240</x>
<y>50</y>
<width>100</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;Swarm Size&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="send_command_label">
<property name="geometry">
<rect>
<x>840</x>
<y>260</y>
<width>200</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:12pt; color:#c8c8c8;&quot;&gt;Send command&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QTextEdit" name="console_textEdit">
<property name="geometry">
<rect>
<x>640</x>
<y>290</y>
<width>591</width>
<height>271</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(1, 36, 86)</string>
</property>
<property name="html">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:7.8pt; color:#ffffff;&quot;&gt;...&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
<widget class="QPushButton" name="show_3d_scene_button">
<property name="geometry">
<rect>
<x>220</x>
<y>300</y>
<width>141</width>
<height>51</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Show 3d scene</string>
</property>
</widget>
<widget class="QPushButton" name="upload_animation_button">
<property name="geometry">
<rect>
<x>220</x>
<y>370</y>
<width>141</width>
<height>51</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Upload animation</string>
</property>
</widget>
<widget class="QLabel" name="state_label">
<property name="geometry">
<rect>
<x>220</x>
<y>160</y>
<width>131</width>
<height>41</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">color: red
</string>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;Disconnect&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="statement_swarm_label">
<property name="geometry">
<rect>
<x>230</x>
<y>140</y>
<width>111</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Statement swarm</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QPushButton" name="start_animation_button">
<property name="geometry">
<rect>
<x>220</x>
<y>440</y>
<width>141</width>
<height>51</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Start animation</string>
</property>
</widget>
<widget class="QLabel" name="back_label">
<property name="geometry">
<rect>
<x>0</x>
<y>-1</y>
<width>1280</width>
<height>701</height>
</rect>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/back/back.png&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
<widget class="QPushButton" name="safty_button">
<property name="geometry">
<rect>
<x>620</x>
<y>110</y>
<width>111</width>
<height>40</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Safty check</string>
</property>
</widget>
<widget class="QPushButton" name="synch_button">
<property name="geometry">
<rect>
<x>620</x>
<y>160</y>
<width>111</width>
<height>40</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Synchronize</string>
</property>
</widget>
<zorder>back_label</zorder>
<zorder>take_off_button</zorder>
<zorder>land_all_button</zorder>
<zorder>disarm_all_button</zorder>
<zorder>take_off_n_button</zorder>
<zorder>land_n_button</zorder>
<zorder>disarm_n_button</zorder>
<zorder>take_off_spinBox</zorder>
<zorder>land_spinBox</zorder>
<zorder>disarm_spinBox</zorder>
<zorder>control_console_label</zorder>
<zorder>turn_on_led_button</zorder>
<zorder>turn_off_led_button</zorder>
<zorder>stop_swarm_but</zorder>
<zorder>connect_button</zorder>
<zorder>swarm_size_spinBox</zorder>
<zorder>swarm_size_label</zorder>
<zorder>send_command_label</zorder>
<zorder>console_textEdit</zorder>
<zorder>show_3d_scene_button</zorder>
<zorder>upload_animation_button</zorder>
<zorder>state_label</zorder>
<zorder>statement_swarm_label</zorder>
<zorder>start_animation_button</zorder>
<zorder>safty_button</zorder>
<zorder>synch_button</zorder>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1280</width>
<height>23</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources>
<include location="back_1.qrc"/>
</resources>
<connections/>
</ui>

197
Server/gui1.py Normal file
View File

@@ -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", "<html><head/><body><p><span style=\" font-size:12pt; color:#c8c8c8;\">Control console</span></p></body></html>"))
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", "<html><head/><body><p><span style=\" font-size:9pt;\">Swarm Size</span></p></body></html>"))
self.send_command_label.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:12pt; color:#c8c8c8;\">Send command</span></p></body></html>"))
self.console_textEdit.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'Noto Sans\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
"<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>"))
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", "<html><head/><body><p><span style=\" font-size:12pt;\">Disconnect</span></p></body></html>"))
self.statement_swarm_label.setText(_translate("MainWindow", "Statement swarm"))
self.start_animation_button.setText(_translate("MainWindow", "Start animation"))
self.back_label.setText(_translate("MainWindow", "<html><head/><body><p><img src=\":/back/back.png\"/></p></body></html>"))
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_())