Skip to content

Commit f944df6

Browse files
committed
fix(serial): reload corrupt serial drivers
1 parent fd657a0 commit f944df6

File tree

2 files changed

+16
-11
lines changed

2 files changed

+16
-11
lines changed

mm_pal/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
__author__ = "Kevin Weiss"
1515
__email__ = "[email protected]"
16-
__version__ = "1.2.0"
16+
__version__ = "1.2.1"
1717

1818
__all__ = ['MmIf',
1919
'MmCmd',

mm_pal/serial_driver.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import logging
1212
import time
1313
from typing import Dict
14-
from serial import Serial, PARITY_NONE
14+
from serial import Serial, PARITY_NONE, SerialException
1515
from serial.tools import list_ports
1616

1717

@@ -133,15 +133,20 @@ def _connect(self, *args, **kwargs):
133133

134134
if _serialports.get(port):
135135
self.logger.debug("Serial port %r already exists", port)
136-
self.dev = _serialports[port]
137-
if 'parity' in kwargs:
138-
self.dev.parity = kwargs['parity']
139-
else:
140-
self.dev.parity = PARITY_NONE
141-
if 'timeout' in kwargs:
142-
self.dev.timeout = kwargs['timeout']
143-
if 'baudrate' in kwargs:
144-
self.dev.baudrate = kwargs['baudrate']
136+
try:
137+
self.dev = _serialports[port]
138+
if 'parity' in kwargs:
139+
self.dev.parity = kwargs['parity']
140+
else:
141+
self.dev.parity = PARITY_NONE
142+
if 'timeout' in kwargs:
143+
self.dev.timeout = kwargs['timeout']
144+
if 'baudrate' in kwargs:
145+
self.dev.baudrate = kwargs['baudrate']
146+
except SerialException:
147+
del _serialports[port]
148+
self.dev = Serial(*args, **kwargs)
149+
_serialports[port] = self.dev
145150
else:
146151
self.dev = Serial(*args, **kwargs)
147152
_serialports[port] = self.dev

0 commit comments

Comments
 (0)