Configuration#
Usually this library is used with a particular CAN interface, this can be specified in code, read from configuration files or environment variables.
See can.util.load_config()
for implementation.
In Code#
The can
object exposes an rc
dictionary which can be used to set
the interface and channel.
import can
can.rc['interface'] = 'socketcan'
can.rc['channel'] = 'vcan0'
can.rc['bitrate'] = 500000
from can.interface import Bus
bus = Bus()
You can also specify the interface and channel for each Bus instance:
import can
bus = can.interface.Bus(bustype='socketcan', channel='vcan0', bitrate=500000)
Configuration File#
On Linux systems the config file is searched in the following paths:
~/can.conf
/etc/can.conf
$HOME/.can
$HOME/.canrc
On Windows systems the config file is searched in the following paths:
%USERPROFILE%/can.conf
can.ini
(current working directory)%APPDATA%/can.ini
The configuration file sets the default interface and channel:
[default]
interface = <the name of the interface to use>
channel = <the channel to use by default>
bitrate = <the bitrate in bits/s to use by default>
The configuration can also contain additional sections (or context):
[default]
interface = <the name of the interface to use>
channel = <the channel to use by default>
bitrate = <the bitrate in bits/s to use by default>
[HS]
# All the values from the 'default' section are inherited
channel = <the channel to use>
bitrate = <the bitrate in bits/s to use. i.e. 500000>
[MS]
# All the values from the 'default' section are inherited
channel = <the channel to use>
bitrate = <the bitrate in bits/s to use. i.e. 125000>
from can.interface import Bus
hs_bus = Bus(context='HS')
ms_bus = Bus(context='MS')
Environment Variables#
Configuration can be pulled from these environmental variables:
CAN_INTERFACE
CAN_CHANNEL
CAN_BITRATE
CAN_CONFIG
The CAN_CONFIG
environment variable allows to set any bus configuration using JSON.
For example:
CAN_INTERFACE=socketcan CAN_CONFIG={"receive_own_messages": true, "fd": true}
Interface Names#
Lookup table of interface names:
Name |
Documentation |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Additional interface types can be added via the Plugin Interface.