def _recieve_data_loop(self, log_path, input_list, logging_level): """ Reads serial input, creates data dicts and adds them to input queue. """ name = "recieve_data_loop" log_path = log_path + "/processes/serial/%s_%d.log" % (name, os.getpid()) logger = pdc_utils.config_logger(name, log_path, logging_level=logging_level) logger.info("Initiated send data loop") data_array = [] string = "" receiving_data = False while True: logger.debug("Waiting for new bytes...") # Reads 1 byte from serial readed_data = self.device.read(1) readed_data = readed_data.decode() # If byte is Initial Order Chart or it is after Initial Order Chart... if(readed_data == cfg.INITIALCHAR or receiving_data == True): logger.debug("readed_data: %s" % readed_data) # Receiving order string for serial. receiving_data = True # Adds byte to array. data_array.append(readed_data) # If byte is Final Order Chart... if(readed_data == cfg.STOPCHAR): # No more bytes for current order string. receiving_data = False # Creates a string from byte array string = ''.join(data_array) # Resets byte array for new incoming orders. data_array = [] logger.info("From device string: %s" % string) input_list.append(self._order_string_to_dict(string))
def _send_data_loop(self, log_path, output_queue, logging_level): """ Reads orders from output queue and send them to serial. """ name = "send_data_loop" log_path = log_path + "/processes/serial/%s_%d.log" % (name, os.getpid()) logger = pdc_utils.config_logger(name, log_path, logging_level=logging_level) logger.info("Initiated send data loop"); while True: logger.debug("Waiting for new output order...") order = output_queue.get() to_device_string = "%s%d%s%d%s%d%s%s%s" % (cfg.INITIALCHAR, order["id"], cfg.IDENTIFIERCHART, order["device"], cfg.DEFUSEPARATOR, order["function"], cfg.DEFUSEPARATOR, order["data"], cfg.STOPCHAR) logger.info("To device string: %s" % to_device_string); self.device.write(to_device_string.encode())
def __init__(self, route_str='/dev/ttyACM0', baud_rate=9600, timeout=10, max_connection_attempts=5, time_between_attempts=5, log_path="./logs", logging_level='debug'): """ Object instantiation method. """ self._log_path = log_path self._log_file = "%s/%s.log" % (self._log_path, __name__) self._logging_level = logging_level self._logger = pdc_utils.config_logger(__name__, self._log_file, logging_level=self._logging_level) self._route_str = route_str self._baud_rate = baud_rate self._timeout = timeout self._max_connection_attempts = max_connection_attempts self._time_between_attempts = time_between_attempts self._master_id = 0; self._ping_function_number = 0; self._state = 'INSTANTIATED' self._logger.debug("%s object instantiation" % __name__)