示例#1
0
文件: serial.py 项目: sergiorb/PDC
	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))
示例#2
0
文件: serial.py 项目: sergiorb/PDC
	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())
示例#3
0
文件: serial.py 项目: sergiorb/PDC
	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__)