You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.7 KiB
Python
60 lines
2.7 KiB
Python
# 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 print_output import print_output
|
|
|
|
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)
|
|
print_output(final_module) #call print_output function with last_module as variable
|
|
|
|
except OSError as e:
|
|
print("Error: could not decode bytes")
|
|
print(e)
|