From e1c628711bbe3340d0efc352e2d7188973240670 Mon Sep 17 00:00:00 2001 From: Jian Haake Date: Wed, 5 Apr 2023 09:51:59 +0200 Subject: [PATCH] same as read_values.py but for preview, not print --- read_values_preview.py | 59 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 read_values_preview.py diff --git a/read_values_preview.py b/read_values_preview.py new file mode 100644 index 0000000..4311360 --- /dev/null +++ b/read_values_preview.py @@ -0,0 +1,59 @@ +# read the values from Arduino: +import serial # import serial library to read the values from Arduino Uno via serial (usb) connection +import os # library to use bash commands + +from friction_label import friction_label +from future_relics import future_relics +from preview import preview + +function_index = { +"FL": friction_label, +"FR": future_relics +} + +module_index = { +"FL": "friction_label", +"FR": "future_relics" +} + + +if __name__ == '__main__': + ser = serial.Serial('/dev/ttyS0', 9600, timeout=1) # establish a serial connection using Serial Pi Zero (S0), using the RX $ + ser.reset_input_buffer() + + while True: + if ser.in_waiting > 0: + + line = ser.readline() # reads bytes + try: + line = line.decode("utf-8", 'ignore').rstrip() # converts bytes to string + line = line.replace("\r\n", "") # replaces "\r\n" (end of line) with nothing + line = line.replace("\r", "") # replaces "\r" (between two modules) with nothing + line = line.split("#") # splits the line into a list of lists + # after this split the list begins with an empty list, so delete it: + if line[0] == "": #if first list in lists is empty: + del line[0] #delete the first element + # print(line) + modules = [] + for module in line: + values = module.split(",") # splits each module into values + modules.append(values) + print("These are the values of each module inside a list of modules ") + print(modules) + + previous_module = "" + for module in modules: #for each module inside the list of modules + if module[0] not in module_index: #this if break is added to avoid the script from breaking at the start (which happens when serial is not yet receiving all values, but only fragments) + # print("break") + break # break and start the for loop again + function_index[module[0]](previous_module, module) #use function_index to run functions for each module + + previous_module = module_index[module[0]] #use module_index to replace abbr. with full name + if module == modules[-1]: #if module is the last module in list of modules + final_module = module_index[module[0]] #use name of the last module to define final_module +# print(final_module) + preview(final_module) #call preview function with last_module as variable + + except OSError as e: + print("Error: could not decode bytes") + print(e)