from flask import Flask, render_template, request import serial import time from serial.tools.list_ports import comports app = Flask(__name__) TIMEOUT = 0.1 board_port = "/dev/cu.usbserial-FTC1WHAM" print(f"Using port {board_port}") baudrate = 115200 try: ser = serial.Serial(port=board_port, baudrate=baudrate, timeout=TIMEOUT) time.sleep(3) # sleep 3 seconds to allow time for connection to be established print(ser.readline()) except serial.SerialException: ser = None @app.route("/", methods=['GET', 'POST']) def index(): if request.method == 'POST': if not ser: return render_template("index.html") # loops are for luzers servo1_left = request.form.get("servo1_left") servo1_right = request.form.get("servo1_right") servo2_up = request.form.get("servo2_up") servo2_down = request.form.get("servo2_down") servo3_up = request.form.get("servo3_up") servo3_down = request.form.get("servo3_down") servo4_up = request.form.get("servo4_up") servo4_down = request.form.get("servo4_down") if servo1_left == 'left': ser.write('11'.encode()) elif servo1_right == 'right': ser.write('10'.encode()) if servo2_up == 'up': ser.write('20'.encode()) elif servo2_down == 'down': ser.write('21'.encode()) if servo3_up == 'up': ser.write('30'.encode()) elif servo3_down == 'down': ser.write('31'.encode()) if servo4_up == 'up': ser.write('41'.encode()) elif servo4_down == 'down': ser.write('40'.encode()) # ESC controls esc_signal = request.form.get("esc_signal") try: pwm_value = int(esc_signal) except: return render_template("index.html") ser.write(f'0{pwm_value}'.encode()) # Close the port when needed if request.form.get('close') == 'close serial port': ser.close() return render_template("index.html") # GET else: return render_template("index.html")