def __init__(self): self.window = tk.Tk() self.window.title("ReachMaster") self.window.configure(bg="white") self.window.protocol("WM_DELETE_WINDOW", self.on_quit) self.config = config.default_config() config.save_tmp(self.config) self.data_dir = tk.StringVar() self.data_dir.set(self.config['ReachMaster']['data_dir']) self.config_file = tk.StringVar() self.config_file.set(self.config['ReachMaster']['config_file']) self.port_list = expint.get_ports() self.exp_control_port = tk.StringVar() self.rob_control_port = tk.StringVar() if self.config['ReachMaster']['exp_control_port'] in self.port_list: self.exp_control_port.set(self.config['ReachMaster']['exp_control_port']) else: self.exp_control_port.set(self.port_list[0]) if self.config['ReachMaster']['rob_control_port'] in self.port_list: self.rob_control_port.set(self.config['ReachMaster']['rob_control_port']) else: self.rob_control_port.set(self.port_list[0]) self.protocol_list = protocols.list_protocols() self.protocol = tk.StringVar() self.protocol.set(self.protocol_list[0]) self.running = False self.exp_connected = False self.rob_connected = False self.protocol_running = False self.child = None self._configure_window()
def config_file_browse_callback(self): """Allows user to load a previously saved configuration file.""" self.config_file.set(tkFileDialog.askopenfilename()) self.config = config.load_config(open(self.config_file.get())) self.config['ReachMaster']['config_file'] = self.config_file.get() self.config['ReachMaster']['data_dir'] = self.data_dir.get() config.save_tmp(self.config)
def rob_connect_callback(self): """Connects to the robot microcontroller located at the user selected port.""" if not self.rob_connected: try: self.config = config.load_config(open('./temp/tmp_config.txt')) self.config['ReachMaster']['rob_control_port'] = self.rob_control_port.get() self.rob_controller = robint.start_interface(self.config) self.rob_connected = True config.save_tmp(self.config) except Exception as err: tkMessageBox.showinfo("Warning", err)
def run_protocol_callback(self): """Initiates the user-selected experimental protocol.""" if self.exp_connected and self.rob_connected: self.config = config.load_config(open('./temp/tmp_config.txt')) self.config['Protocol']['type'] = self.protocol.get() config.save_tmp(self.config) expint.stop_interface(self.exp_controller) self.exp_connected = False robint.stop_interface(self.rob_controller) self.rob_connected = False time.sleep(2) self.child = protocols.Protocols(self.window) self.protocol_running = True elif not self.exp_connected: tkMessageBox.showinfo("Warning", "Experiment controller not connected.") else: tkMessageBox.showinfo("Warning", "Robot controller not connected.")
def test_loaded_saved_configs_equal(self): with self.subTest(test_fun = 'save_config'): fn = config.save_config(self.test_config) loaded_config = config.load_config(fn) os.remove(fn) self.assertEqual(loaded_config, self.test_config) with self.subTest(test_fun = 'save_tmp'): fn = config.save_tmp(self.test_config) loaded_config = config.load_config(fn) os.remove(fn) self.assertEqual(loaded_config, self.test_config)
def data_dir_browse_callback(self): """Allows user to set the data output directory.""" self.data_dir.set(tkFileDialog.askdirectory()) self.config['ReachMaster']['data_dir'] = self.data_dir.get() config.save_tmp(self.config)