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)[source]

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()[source]

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)[source]

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)[source]

Unsupported. See note on NicanBus.

shutdown()[source]

Close object.

exception can.interfaces.nican.NicanError(function, error_code, arguments)[source]

Bases: can.CanError

Error from NI-CAN driver.

arguments = None

Arguments passed to function

error_code = None

Status code

function = None

Function that failed