Library API

The main objects are the BusABC and the Message. A form of CAN interface is also required.

Hint

Check the backend specific documentation for any implementation specific details.

Utilities

Configuration file parsing.

can.util.choose_socketcan_implementation()[source]

Set the best version of SocketCAN for this system.

Parameters:config – The can.rc configuration dictionary
Raises:Exception – If the system doesn’t support SocketCAN
can.util.load_config(path=None)[source]

Returns a dict with configuration details which is loaded from (in this order):

  • Environment variables CAN_INTERFACE, CAN_CHANNEL
  • Config files /etc/can.conf or ~/.can or ~/.canrc where the latter may add or replace values of the former.

Interface can be kvaser, socketcan, socketcan_ctypes, socketcan_native, serial

The returned dictionary may look like this:

{
    'interface': 'python-can backend interface to use',
    'channel': 'default channel to use',
}
Parameters:path – Optional path to config file.
can.util.load_environment_config()[source]

Loads config dict from environmental variables (if set):

  • CAN_INTERFACE
  • CAN_CHANNEL
can.util.load_file_config(path=None)[source]

Loads configuration from file with following content:

[default]
interface = socketcan
channel = can0
Parameters:path – path to config file. If not specified, several sensible

default locations are tried depending on platform.

Notifier

The Notifier object is used as a message distributor for a bus.

class can.Notifier(bus, listeners, timeout=None)[source]

Bases: object

Manages the distribution of Messages from a given bus to a list of listeners.

Parameters:
  • bus – The Bus to listen too.
  • listeners – An iterable of Listeners
  • timeout – An optional maximum number of seconds to wait for any message.
stop()[source]

Stop notifying Listeners when new Message objects arrive and call stop() on each Listener.