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 13:39:58 +01:00
|
|
|
app = Flask(__name__)
|
|
|
|
|
|
|
|
data = ""
|
|
|
|
lock = threading.Lock()
|
|
|
|
|
|
|
|
@app.route('/update', methods=['PUT'])
|
|
|
|
def update():
|
|
|
|
grid = request.json['data']
|
|
|
|
grid_string = prepare_grid(grid)
|
|
|
|
|
|
|
|
with lock:
|
|
|
|
data = grid_string
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
def serial():
|
|
|
|
with serial.Serial('/dev/ttyACM0', 9600, timeout=1) as ser:
|
|
|
|
with lock:
|
|
|
|
if data != '':
|
|
|
|
serial.write(bytes(data, 'ascii'))
|
|
|
|
data = ''
|
|
|
|
|
|
|
|
serial_thread = threading.Thread(target=serial)
|
|
|
|
serial_thread.start()
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
app.run(host='0.0.0.0')
|
2020-04-26 19:08:59 +01:00
|
|
|
|