diff --git a/canopen/network.py b/canopen/network.py index 6a8d95f6..0e1a7aaa 100644 --- a/canopen/network.py +++ b/canopen/network.py @@ -107,7 +107,8 @@ def connect(self, *args, **kwargs) -> Network: if self.bus is None: self.bus = can.Bus(*args, **kwargs) logger.info("Connected to '%s'", self.bus.channel_info) - self.notifier = can.Notifier(self.bus, self.listeners, self.NOTIFIER_CYCLE) + if self.notifier is None: + self.notifier = can.Notifier(self.bus, self.listeners, self.NOTIFIER_CYCLE) return self def disconnect(self) -> None: @@ -123,7 +124,13 @@ def disconnect(self) -> None: if self.bus is not None: self.bus.shutdown() self.bus = None - self.check() + try: + self.check() + except Exception as e: + raise e + finally: + # Release notifier after check + self.notifier = None def __enter__(self): return self