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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
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 :func:`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** before importing from ``can.interfaces``.
::
import can
can.rc['interface'] = 'socketcan'
can.rc['channel'] = 'vcan0'
can.rc['bitrate'] = 500000
from can.interfaces.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:
#. ``~/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:
::
[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.interfaces.interface import Bus
hs_bus = Bus(config_section='HS')
ms_bus = Bus(config_section='MS')
Environment Variables
---------------------
Configuration can be pulled from these environmental variables:
* CAN_INTERFACE
* CAN_CHANNEL
* CAN_BITRATE
Interface Names
---------------
Lookup table of interface names:
+---------------------+-------------------------------------+
| Name | Documentation |
+=====================+=====================================+
| ``"socketcan"`` | :doc:`interfaces/socketcan` |
+---------------------+-------------------------------------+
| ``"kvaser"`` | :doc:`interfaces/kvaser` |
+---------------------+-------------------------------------+
| ``"serial"`` | :doc:`interfaces/serial` |
+---------------------+-------------------------------------+
| ``"slcan"`` | :doc:`interfaces/slcan` |
+---------------------+-------------------------------------+
| ``"ixxat"`` | :doc:`interfaces/ixxat` |
+---------------------+-------------------------------------+
| ``"pcan"`` | :doc:`interfaces/pcan` |
+---------------------+-------------------------------------+
| ``"usb2can"`` | :doc:`interfaces/usb2can` |
+---------------------+-------------------------------------+
| ``"nican"`` | :doc:`interfaces/nican` |
+---------------------+-------------------------------------+
| ``"iscan"`` | :doc:`interfaces/iscan` |
+---------------------+-------------------------------------+
| ``"neovi"`` | :doc:`interfaces/neovi` |
+---------------------+-------------------------------------+
| ``"vector"`` | :doc:`interfaces/vector` |
+---------------------+-------------------------------------+
| ``"virtual"`` | :doc:`interfaces/virtual` |
+---------------------+-------------------------------------+
|