diff --git a/pyren3/data_logger.py b/pyren3/data_logger.py index de647ae..009cc6f 100644 --- a/pyren3/data_logger.py +++ b/pyren3/data_logger.py @@ -3,7 +3,8 @@ from flask_socketio import SocketIO from rendash_main import RenDash from csv import writer, QUOTE_MINIMAL from datetime import datetime -from time import time_ns, sleep +from time import time_ns +from os import _exit import mod_globals @@ -28,22 +29,21 @@ def mainloop(): log_filename = f'../logs/{datetime.now().strftime("%m-%d-%Y %H:%M:%S")}.csv' print("Creating log on file: " + log_filename) file = open(log_filename, "w") - csv_writer = writer( - file, delimiter=" ", quotechar="|", quoting=QUOTE_MINIMAL - ) + csv_writer = writer(file, delimiter=" ", quotechar="|", quoting=QUOTE_MINIMAL) csv_writer.writerow(["time", "freeze"] + watched_datarefs) print("Starting data loop") while running: frame = [ - dash.get_ecu_dataref(watched_ecu, dataref)[0] for dataref in watched_datarefs + dash.get_ecu_dataref(watched_ecu, dataref)[0] + for dataref in watched_datarefs ] socket.emit("frame", {"frame": frame}) if should_log: csv_writer.writerow([(time_ns() // 1_000_000), freeze] + frame) freeze = 0 - sleep(0.05) - + socket.sleep(0.05) + if should_log: file.flush() file.close() @@ -55,6 +55,7 @@ def freeze_event(): freeze = 1 + @web.get("/ecus") def get_ecus(): ecus = dash.get_ecu_names() @@ -93,7 +94,7 @@ def ecu_watch(ecu_doc): @web.get("/start") def start(): global should_log, bg_thread, running - + if running: return jsonify({"success": False}) log = request.args.get("log") @@ -120,6 +121,13 @@ def stop(): def index(): return send_file("index.html") +@socket.on("exit") +def exit_logger(): + try: + socket.stop() + except Exception as e: + print(e) + _exit(0) if __name__ == "__main__": socket.run(web, "0.0.0.0", 5000) diff --git a/pyren3/index.html b/pyren3/index.html index 34c7558..7622c0f 100644 --- a/pyren3/index.html +++ b/pyren3/index.html @@ -10,6 +10,7 @@