From 461d01e5709a49661dd3b03ec3a142f24f550ef4 Mon Sep 17 00:00:00 2001 From: zariiii9003 <52598363+zariiii9003@users.noreply.github.com> Date: Sun, 16 Jun 2024 13:58:44 +0200 Subject: [PATCH] activate channel after CAN filters were applied --- can/interfaces/kvaser/canlib.py | 11 +++++++---- can/interfaces/vector/canlib.py | 17 +++++++++-------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/can/interfaces/kvaser/canlib.py b/can/interfaces/kvaser/canlib.py index ccc03a696..58baa1040 100644 --- a/can/interfaces/kvaser/canlib.py +++ b/can/interfaces/kvaser/canlib.py @@ -552,7 +552,6 @@ def __init__( else: flags_ = flags self._write_handle = canOpenChannel(channel, flags_) - canBusOn(self._read_handle) can_driver_mode = ( canstat.canDRIVER_SILENT @@ -560,8 +559,6 @@ def __init__( else canstat.canDRIVER_NORMAL ) canSetBusOutputControl(self._write_handle, can_driver_mode) - log.debug("Going bus on TX handle") - canBusOn(self._write_handle) timer = ctypes.c_uint(0) try: @@ -587,6 +584,12 @@ def __init__( **kwargs, ) + # activate channel after CAN filters were applied + log.debug("Go on bus") + if not self.single_handle: + canBusOn(self._read_handle) + canBusOn(self._write_handle) + def _apply_filters(self, filters): if filters and len(filters) == 1: can_id = filters[0]["can_id"] @@ -610,7 +613,7 @@ def _apply_filters(self, filters): for extended in (0, 1): canSetAcceptanceFilter(handle, 0, 0, extended) except (NotImplementedError, CANLIBError) as e: - log.error("An error occured while disabling filtering: %s", e) + log.error("An error occurred while disabling filtering: %s", e) def flush_tx_buffer(self): """Wipeout the transmit buffer on the Kvaser.""" diff --git a/can/interfaces/vector/canlib.py b/can/interfaces/vector/canlib.py index adf7b6c5d..d307d076f 100644 --- a/can/interfaces/vector/canlib.py +++ b/can/interfaces/vector/canlib.py @@ -329,14 +329,6 @@ def __init__( else: LOG.info("Install pywin32 to avoid polling") - try: - self.xldriver.xlActivateChannel( - self.port_handle, self.mask, xldefine.XL_BusTypes.XL_BUS_TYPE_CAN, 0 - ) - except VectorOperationError as error: - self.shutdown() - raise VectorInitializationError.from_generic(error) from None - # Calculate time offset for absolute timestamps offset = xlclass.XLuint64() try: @@ -366,6 +358,15 @@ def __init__( **kwargs, ) + # activate channels after CAN filters were applied + try: + self.xldriver.xlActivateChannel( + self.port_handle, self.mask, xldefine.XL_BusTypes.XL_BUS_TYPE_CAN, 0 + ) + except VectorOperationError as error: + self.shutdown() + raise VectorInitializationError.from_generic(error) from None + @property def fd(self) -> bool: class_name = self.__class__.__name__