# NI-CAN

This interface adds support for CAN controllers by National Instruments.

Warning

NI-CAN only seems to support 32-bit architectures so if the driver can’t be loaded on a 64-bit Python, try using a 32-bit version instead.

Warning

CAN filtering has not been tested thoroughly and may not work as expected.

## Bus

class `can.interfaces.nican.``NicanBus`(channel, can_filters=None, bitrate=None, log_errors=True, **kwargs)

  Bases: `can.bus.BusABC`

  The CAN Bus implemented for the NI-CAN interface.

  Warning

  This interface does implement efficient filtering of messages, but the filters have to be set in `__init__()` using the `can_filters` parameter. Using `set_filters()` does not work.

  Parameters:

  - channel (str) – Name of the object to open (e.g. ‘CAN0’)
  - bitrate (int) – Bitrate in bits/s
  - can_filters (list) – See `can.BusABC.set_filters()`.
  - log_errors (bool) – If True, communication errors will appear as CAN messages with `is_error_frame` set to True and `arbitration_id` will identify the error (default True)

  Raises: | can.interfaces.nican.NicanError – If starting communication fails

  `reset`()

    Resets network interface. Stops network interface, then resets the CAN chip to clear the CAN error counters (clear error passive state). Resetting includes clearing all entries from read and write queues.

  `send`(msg, timeout=None)

    Send a message to NI-CAN.

    Parameters: | msg (can.Message) – Message to send
    Raises: | can.interfaces.nican.NicanError – If writing to transmit buffer fails. It does not wait for message to be ACKed currently.

  `set_filters`(can_filers=None)

    Unsupported. See note on `NicanBus`.

  `shutdown`()

    Close object.

exception `can.interfaces.nican.``NicanError`(function, error_code, arguments)

  Bases: `can.CanError`

  Error from NI-CAN driver.

  `arguments` = None

    Arguments passed to function

  `error_code` = None

    Status code

  `function` = None

    Function that failed