1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
.. _ixxatdoc:
IXXAT Virtual CAN Interface
===========================
Interface to `IXXAT <http://www.ixxat.com/>`__ Virtual CAN Interface V3 SDK. Works on Windows.
The Linux ECI SDK is currently unsupported, however on Linux some devices are
supported with :doc:`socketcan`.
The :meth:`~can.interfaces.ixxat.canlib.IXXATBus.send_periodic` method is supported
natively through the on-board cyclic transmit list.
Modifying cyclic messages is not possible. You will need to stop it, and then
start a new periodic message.
Bus
---
.. autoclass:: can.interfaces.ixxat.IXXATBus
:members:
.. autoclass:: can.interfaces.ixxat.canlib.CyclicSendTask
:members:
Configuration file
------------------
The simplest configuration file would be::
[default]
interface = ixxat
channel = 0
Python-can will search for the first IXXAT device available and open the first channel.
``interface`` and ``channel`` parameters are interpreted by frontend ``can.interfaces.interface``
module, while the following parameters are optional and are interpreted by IXXAT implementation.
* ``bitrate`` (default 500000) Channel bitrate
* ``UniqueHardwareId`` (default first device) Unique hardware ID of the IXXAT device
* ``rxFifoSize`` (default 16) Number of RX mailboxes
* ``txFifoSize`` (default 16) Number of TX mailboxes
* ``extended`` (default False) Allow usage of extended IDs
Internals
---------
The IXXAT :class:`~can.BusABC` 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.
|