2020-04-26 19:08:59 +01:00
|
|
|
#!/usr/bin/python3
|
|
|
|
|
2020-04-28 13:39:58 +01:00
|
|
|
from flask import Flask, request
|
|
|
|
import threading
|
2020-04-26 19:08:59 +01:00
|
|
|
import serial
|
2020-04-28 14:02:30 +01:00
|
|
|
import time
|
2020-04-26 19:08:59 +01:00
|
|
|
|
2020-04-28 13:39:58 +01:00
|
|
|
app = Flask(__name__)
|
|
|
|
|
2020-04-28 13:58:16 +01:00
|
|
|
globals()['data'] = ""
|
|
|
|
globals()['lock'] = threading.Lock()
|
2020-04-28 13:39:58 +01:00
|
|
|
|
|
|
|
@app.route('/update', methods=['PUT'])
|
|
|
|
def update():
|
|
|
|
grid = request.json['data']
|
|
|
|
grid_string = prepare_grid(grid)
|
|
|
|
|
2020-04-28 13:58:16 +01:00
|
|
|
with globals()['lock']:
|
|
|
|
globals()['data'] = grid_string
|
2020-04-28 13:39:58 +01:00
|
|
|
|
|
|
|
return grid_string
|
|
|
|
|
|
|
|
def prepare_grid(grid):
|
|
|
|
# follow down up down down up down
|
|
|
|
HEIGHT = 5
|
|
|
|
WIDTH = 6
|
|
|
|
|
|
|
|
out = ""
|
|
|
|
for x in range(WIDTH):
|
|
|
|
for y in (range(0,HEIGHT,1) if x%3 == 1 else range(HEIGHT-1,-1,-1)):
|
|
|
|
for r in range(3):
|
|
|
|
out += hex(grid[x][y][r])[2:] + 'n'
|
|
|
|
out += 'l'
|
|
|
|
out += 'q'
|
|
|
|
return out
|
|
|
|
|
2020-04-28 13:55:26 +01:00
|
|
|
def serial_func():
|
2020-04-28 13:39:58 +01:00
|
|
|
with serial.Serial('/dev/ttyACM0', 9600, timeout=1) as ser:
|
2020-04-28 14:02:30 +01:00
|
|
|
while True:
|
|
|
|
with globals()['lock']:
|
|
|
|
if globals()['data'] != '':
|
2020-04-28 15:04:26 +01:00
|
|
|
t1 = time.time()
|
2020-04-28 14:03:17 +01:00
|
|
|
ser.write(bytes(globals()['data'], 'ascii'))
|
2020-04-28 15:04:26 +01:00
|
|
|
t2 = time.time()
|
|
|
|
print("time taken: " + str(t2-t1) + "s")
|
2020-04-28 14:02:30 +01:00
|
|
|
globals()['data'] = ''
|
|
|
|
time.sleep(0.1)
|
2020-04-28 13:39:58 +01:00
|
|
|
|
2020-04-28 13:55:26 +01:00
|
|
|
serial_thread = threading.Thread(target=serial_func)
|
2020-04-28 13:39:58 +01:00
|
|
|
serial_thread.start()
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
app.run(host='0.0.0.0')
|
2020-04-26 19:08:59 +01:00
|
|
|
|