diff --git a/app.py b/app.py index 34ebc0c..f8946a1 100644 --- a/app.py +++ b/app.py @@ -56,6 +56,7 @@ def xml_transfer(): str(dir + '/XML/config.xml')) xml_reader.set_root(str(dir + '/XML/config.xml')) interface_handler.init_gpio() + interface_handler.init_buffer() else: SyntaxError('the config.xml has invalid content') return {'error': ''} diff --git a/interface_handler.py b/interface_handler.py index e51c1e5..132deb5 100644 --- a/interface_handler.py +++ b/interface_handler.py @@ -60,6 +60,7 @@ class Interface_handler: self.buffers = [None] * 41 self.buffer_device_names = [] self.buffer_thread = None + self.run_buffer = False self.init_gpio() self.init_buffer() @@ -97,8 +98,10 @@ class Interface_handler: """initializes the buffer thread """ #stop the buffer thread - if self.buffer_thread != None: - self.buffer_thread.stop() + self.run_buffer = False + while self.buffer_thread!=None and self.buffer_thread.is_alive(): + time.sleep(BUFFER_SPEED) + self.run_buffer = True #create the buffers for device_name in self.xml_reader.get_device_names(): port_info = self.xml_reader.get_port(device_name) @@ -241,7 +244,7 @@ class Interface_handler: def buffering(self): """method that buffers the device outputs """ - while True: #loop forever + while self.run_buffer: #loop for device_name in self.buffer_device_names: output = self.read(device_name) port_info = self.xml_reader.get_port(device_name)