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 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
|
Listeners
=========
Listener
--------
The Listener class is an "abstract" base class for any objects which wish to
register to receive notifications of new messages on the bus. A Listener can
be used in two ways; the default is to **call** the Listener with a new
message, or by calling the method **on_message_received**.
Listeners are registered with :ref:`notifier` object(s) which ensure they are
notified whenever a new message is received.
Subclasses of Listener that do not override **on_message_received** will cause
:class:`NotImplementedError` to be thrown when a message is received on
the CAN bus.
.. autoclass:: can.Listener
:members:
There are some listeners that already ship together with `python-can`
and are listed below.
Some of them allow messages to be written to files, and the corresponding file
readers are also documented here.
.. warning ::
Please note that writing and the reading a message might not always yield a
completely unchanged message again, since some properties are not (yet)
supported by some file formats.
BufferedReader
--------------
.. autoclass:: can.BufferedReader
:members:
.. autoclass:: can.AsyncBufferedReader
:members:
Logger
------
The :class:`can.Logger` uses the following :class:`can.Listener` types to
create log files with different file types of the messages received.
.. autoclass:: can.Logger
:members:
Printer
-------
.. autoclass:: can.Printer
:members:
CSVWriter
---------
.. autoclass:: can.CSVWriter
:members:
.. autoclass:: can.CSVReader
:members:
SqliteWriter
------------
.. autoclass:: can.SqliteWriter
:members:
.. autoclass:: can.SqliteReader
:members:
Database table format
~~~~~~~~~~~~~~~~~~~~~
The messages are written to the table ``messages`` in the sqlite database
by default. The table is created if it does not already exist.
The entries are as follows:
============== ============== ==============
Name Data type Note
-------------- -------------- --------------
ts REAL The timestamp of the message
arbitration_id INTEGER The arbitration id, might use the extended format
extended INTEGER ``1`` if the arbitration id uses the extended format, else ``0``
remote INTEGER ``1`` if the message is a remote frame, else ``0``
error INTEGER ``1`` if the message is an error frame, else ``0``
dlc INTEGER The data length code (DLC)
data BLOB The content of the message
============== ============== ==============
ASC (.asc Logging format)
-------------------------
ASCWriter logs CAN data to an ASCII log file compatible with other CAN tools such as
Vector CANalyzer/CANoe and other.
Since no official specification exists for the format, it has been reverse-
engineered from existing log files. One description of the format can be found `here
<http://zone.ni.com/reference/en-XX/help/370859J-01/dlgcanconverter/dlgcanconverter/canconverter_ascii_logfiles/>`_.
.. note::
Channels will be converted to integers.
.. autoclass:: can.ASCWriter
:members:
ASCReader reads CAN data from ASCII log files .asc,
as further references can-utils can be used:
`asc2log <https://github.com/linux-can/can-utils/blob/master/asc2log.c>`_,
`log2asc <https://github.com/linux-can/can-utils/blob/master/log2asc.c>`_.
.. autoclass:: can.ASCReader
:members:
Log (.log can-utils Logging format)
-----------------------------------
CanutilsLogWriter logs CAN data to an ASCII log file compatible with `can-utils <https://github.com/linux-can/can-utils>`
As specification following references can-utils can be used:
`asc2log <https://github.com/linux-can/can-utils/blob/master/asc2log.c>`_,
`log2asc <https://github.com/linux-can/can-utils/blob/master/log2asc.c>`_.
.. autoclass:: can.CanutilsLogWriter
:members:
**CanutilsLogReader** reads CAN data from ASCII log files .log
.. autoclass:: can.CanutilsLogReader
:members:
BLF (Binary Logging Format)
---------------------------
Implements support for BLF (Binary Logging Format) which is a proprietary
CAN log format from Vector Informatik GmbH.
The data is stored in a compressed format which makes it very compact.
.. note:: Channels will be converted to integers.
.. autoclass:: can.BLFWriter
:members:
The following class can be used to read messages from BLF file:
.. autoclass:: can.BLFReader
:members:
|