|
11 | 11 | import logging
|
12 | 12 | import time
|
13 | 13 | from typing import Dict
|
14 |
| -from serial import Serial, PARITY_NONE |
| 14 | +from serial import Serial, PARITY_NONE, SerialException |
15 | 15 | from serial.tools import list_ports
|
16 | 16 |
|
17 | 17 |
|
@@ -133,15 +133,20 @@ def _connect(self, *args, **kwargs):
|
133 | 133 |
|
134 | 134 | if _serialports.get(port):
|
135 | 135 | 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 |
145 | 150 | else:
|
146 | 151 | self.dev = Serial(*args, **kwargs)
|
147 | 152 | _serialports[port] = self.dev
|
|
0 commit comments