-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
135 lines (105 loc) · 3.4 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
from flask import Flask, render_template, Response, request, send_file
import threading
import StepperLib
import RadarLib
import OpenCv
import RoboAssistant
from time import sleep
import pickle
import os
app = Flask(__name__)
motors = StepperLib.StepperMotor()
radar = RadarLib.Radar(motors)
threadAssistant = threading.Thread(target=RoboAssistant.main)
threadAssistant.start()
programStorage = []
speed = 0.002
programs = []
frame=None
def thread_move(direction):
global programStorage, speed
t = threading.currentThread()
while getattr(t, "do_run", True):
print("Moving " + direction)
if direction == "forward":
motors.step(1, 1)
programStorage.extend([1, 1])
sleep(speed)
elif direction == "backward":
motors.step(-1, -1)
programStorage.extend([-1, -1])
sleep(speed)
elif direction == "turnLeft":
motors.step(1, -1)
programStorage.extend([1, -1])
sleep(speed+0.01)
elif direction == "turnRight":
motors.step(-1, 1)
programStorage.extend([-1, 1])
sleep(speed+0.01)
print("Stop")
motors.off()
@app.route("/")
def getPage():
load_dropdown()
return render_template('index.html', programs=programs)
threadMove = threading.Thread(target=thread_move, args=("forward",))
@app.route("/move/<direction>", methods=['GET', 'POST'])
def move(direction):
global threadMove
if not threadMove.isAlive():
threadMove = threading.Thread(target=thread_move, args=(direction,))
threadMove.start()
else:
threadMove.do_run = False
threadMove.join()
return ('', 204)
@app.route("/delete", methods=['GET', 'POST'])
def not_Aus():
global programStorage
programStorage = []
print("ProgramStorage geleert")
return ('', 204)
@app.route('/video_feed')
def video_feed():
return Response(OpenCv.gen(),
mimetype='multipart/x-mixed-replace; boundary=frame')
@app.route("/speed_slider/<speed_value>", methods=['GET', 'POST'])
def set_speed(speed_value):
global speed
speed = float(speed_value)
print("Speed set to " + str(speed))
return ('', 204)
@app.route("/save_program/<programName>", methods=['GET', 'POST'])
def save_program(programName):
global programStorage
print(programStorage)
with open("programs/+" + programName, "wb") as f:
pickle.dump(programStorage, f)
print("Saved as: " + programName)
programStorage = []
getPage()
return ('', 204)
def load_dropdown():
global programs
programs = os.listdir("programs")
programs = [program[1:] for program in programs]
print(programs)
print("Dropdown loaded")
@app.route("/run_program/<programName>", methods=['GET', 'POST'])
def run_program(programName):
with open("programs/+" + programName, "rb") as f:
programStorage = pickle.load(f)
print(programStorage)
for i in range(0, len(programStorage), 2):
motors.step(programStorage[i], programStorage[i + 1])
sleep(speed)
motors.off()
return ('', 204)
@app.route('/radar_img/', methods=['GET', 'POST'])
def radar_img():
pic, data = radar.scan()
# return send_file(pic, as_attachment=True, attachment_filename='radar_img', mimetype='image/png')
return send_file(pic, mimetype='image/png')
if __name__ == "__main__":
app.run(host='0.0.0.0', threaded=True)