Add error handling to async serial.
This commit is contained in:
		
							parent
							
								
									927a4bc8e7
								
							
						
					
					
						commit
						616db8b1cc
					
				| @ -1,8 +1,15 @@ | |||||||
| import serial |  | ||||||
| import asyncio | import asyncio | ||||||
|  | import logging | ||||||
|  | 
 | ||||||
|  | import serial | ||||||
|  | 
 | ||||||
| import serial_asyncio | import serial_asyncio | ||||||
|  | from dsmr_parser.exceptions import ParseError | ||||||
| from dsmr_parser.parsers import TelegramParser, TelegramParserV2_2 | from dsmr_parser.parsers import TelegramParser, TelegramParserV2_2 | ||||||
| 
 | 
 | ||||||
|  | logger = logging.getLogger(__name__) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| SERIAL_SETTINGS_V2_2 = { | SERIAL_SETTINGS_V2_2 = { | ||||||
|     'baudrate': 9600, |     'baudrate': 9600, | ||||||
|     'bytesize': serial.SEVENBITS, |     'bytesize': serial.SEVENBITS, | ||||||
| @ -44,7 +51,6 @@ SERIAL_SETTINGS_V4_EVEN = { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| def is_start_of_telegram(line): | def is_start_of_telegram(line): | ||||||
|     return line.startswith('/') |     return line.startswith('/') | ||||||
| 
 | 
 | ||||||
| @ -129,6 +135,11 @@ class AsyncSerialReader(SerialReader): | |||||||
|             telegram.append(line) |             telegram.append(line) | ||||||
| 
 | 
 | ||||||
|             if is_end_of_telegram(line): |             if is_end_of_telegram(line): | ||||||
|  |                 try: | ||||||
|  |                     parsed_telegram = self.telegram_parser.parse(telegram) | ||||||
|                     # push new parsed telegram onto queue |                     # push new parsed telegram onto queue | ||||||
|                 queue.put_nowait(self.telegram_parser.parse(telegram)) |                     queue.put_nowait(parsed_telegram) | ||||||
|  |                 except ParseError: | ||||||
|  |                     logger.exception("failed to parse telegram") | ||||||
|  | 
 | ||||||
|                 telegram = [] |                 telegram = [] | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user