IXXAT Virtual CAN Interface¶
Interface to IXXAT Virtual CAN Interface V3 SDK. Works on Windows.
Note
The Linux ECI SDK is currently unsupported, however on Linux some devices are supported with Socketcan.
Bus¶
-
can.interfaces.ixxat.
Bus
¶ alias of
IXXATBus
-
class
can.interfaces.ixxat.canlib.
IXXATBus
(channel, can_filters=None, **config)[source]¶ Bases:
can.bus.BusABC
The CAN Bus implemented for the IXXAT interface.
Parameters: - channel (int) – The Channel id to create this bus with.
- can_filters (list) –
A list of dictionaries each containing a “can_id” and a “can_mask”.
>>> [{"can_id": 0x11, "can_mask": 0x21}]
- UniqueHardwareId (int) – UniqueHardwareId to connect (optional, will use the first found if not supplied)
- bitrate (int) – Channel bitrate in bit/s
Internals¶
The IXXAT Bus
object is a farly straightforward interface
to the IXXAT VCI library. It can open a specific device ID or use the
first one found.
The frame exchange do not involve threads in the background but is explicitly instantiated by the caller.
recv()
is a blocking call with optional timeout.send()
is not blocking but may raise a VCIError if the TX FIFO is full
RX and TX FIFO sizes are configurable with rxFifoSize
and txFifoSize
options, defaulting at 16 for both.
The CAN filters act as a “whitelist” in IXXAT implementation, that is if you supply a non-empty filter list you must explicitly state EVERY frame you want to receive (including RTR field). The can_id/mask must be specified according to IXXAT behaviour, that is bit 0 of can_id/mask parameters represents the RTR field in CAN frame. See IXXAT VCI documentation, section “Message filters” for more info.
Hint
Module uses can.ixxat
logger and at DEBUG level logs every frame
sent or received. It may be too verbose for your purposes.