def process_code(self, source_code): # Redirect the information to console start_console() # Reference Environment for the exec() function iterative_code, sequential_code = self.parse_code(source_code) # print("The debug level is " + str(debug_level) # print(sequential_code) # print(iterative_code) # Whatever the code is, first step is to just stop! self.hal.motors.sendV(0) self.hal.motors.sendW(0) # The Python exec function # Run the sequential part gui_module, hal_module, map_module = self.generate_modules() exec(sequential_code, { "GUI": gui_module, "HAL": hal_module, "MAP": map_module }) # Run the iterative part inside template # and keep the check for flag while self.reload == False: start_time = datetime.now() # Execute the iterative portion exec(iterative_code, { "GUI": gui_module, "HAL": hal_module, "MAP": map_module }) # Template specifics to run! finish_time = datetime.now() dt = finish_time - start_time ms = (dt.days * 24 * 60 * 60 + dt.seconds) * 1000 + dt.microseconds / 1000.0 # Keep updating the iteration counter if (iterative_code == ""): self.iteration_counter = 0 else: self.iteration_counter = self.iteration_counter + 1 # The code should be run for atleast the target time step # If it's less put to sleep # If it's more no problem as such, but we can change it! if (ms < self.time_cycle): time.sleep((self.time_cycle - ms) / 1000.0) close_console() print("Current Thread Joined!")
def process_code(self): # Redirect information to console start_console() # Reference Environment for the exec() function iterative_code, sequential_code = self.iterative_code, self.sequential_code # print(sequential_code) # print(iterative_code) # Whatever the code is, first step is to just stop! self.hal.sendV(0) self.hal.sendW(0) # The Python exec function # Run the sequential part gui_module, hal_module = self.generate_modules() if sequential_code != "": reference_environment = {"GUI": gui_module, "HAL": hal_module} exec(sequential_code, reference_environment) # Run the iterative part inside template # and keep the check for flag while not self.exit_signal.is_set(): start_time = datetime.now() # Execute the iterative portion if iterative_code != "": exec(iterative_code, reference_environment) # Template specifics to run! finish_time = datetime.now() dt = finish_time - start_time ms = (dt.days * 24 * 60 * 60 + dt.seconds) * 1000 + dt.microseconds / 1000.0 # Keep updating the iteration counter if (iterative_code == ""): self.iteration_counter = 0 else: self.iteration_counter = self.iteration_counter + 1 # The code should be run for atleast the target time step # If it's less put to sleep # If it's more no problem as such, but we can change it! time_cycle = self.time_cycle.get() if (ms < time_cycle): time.sleep((time_cycle - ms) / 1000.0) close_console() print("Current Thread Joined!")
def process_code(self, source_code): # Redirect the information to console start_console() iterative_code, sequential_code, debug_code_level = self.parse_code(source_code) # print("The debug level is " + str(debug_level) # print(sequential_code) # print(iterative_code) # The Python exec function # Run the sequential part gui_module, hal_module = self.generate_modules() reference_environment = {"GUI": gui_module, "HAL": hal_module} exec(sequential_code, reference_environment) # Run the iterative part inside template # and keep the check for flag while self.reload == False: start_time = datetime.now() # Execute the iterative portion exec(iterative_code, reference_environment) # Template specifics to run! finish_time = datetime.now() dt = finish_time - start_time ms = (dt.days * 24 * 60 * 60 + dt.seconds) * 1000 + dt.microseconds / 1000.0 # Keep updating the iteration counter if (iterative_code == ""): self.iteration_counter = 0 else: self.iteration_counter = self.iteration_counter + 1 # The code should be run for atleast the target time step # If it's less put to sleep if (ms < self.time_cycle): time.sleep((self.time_cycle - ms) / 1000.0) close_console() print("Current Thread Joined!")