Skip to content

Latest commit

 

History

History
212 lines (139 loc) · 5.53 KB

file_io.rst

File metadata and controls

212 lines (139 loc) · 5.53 KB

File IO

Reading and Writing Files

.. autofunction:: can.LogReader
.. autofunction:: can.Logger
.. autodata:: can.io.logger.MESSAGE_WRITERS
.. autodata:: can.io.player.MESSAGE_READERS

Printer

.. autoclass:: can.Printer
    :show-inheritance:
    :members:


CSVWriter

.. autoclass:: can.CSVWriter
    :show-inheritance:
    :members:

.. autoclass:: can.CSVReader
    :show-inheritance:
    :members:


SqliteWriter

.. autoclass:: can.SqliteWriter
    :show-inheritance:
    :members:

.. autoclass:: can.SqliteReader
    :show-inheritance:
    :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.

Note

Channels will be converted to integers.

.. autoclass:: can.ASCWriter
    :show-inheritance:
    :members:

ASCReader reads CAN data from ASCII log files .asc, as further references can-utils can be used: asc2log, log2asc.

.. autoclass:: can.ASCReader
    :show-inheritance:
    :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, log2asc.

.. autoclass:: can.CanutilsLogWriter
    :show-inheritance:
    :members:

CanutilsLogReader reads CAN data from ASCII log files .log

.. autoclass:: can.CanutilsLogReader
    :show-inheritance:
    :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
    :show-inheritance:
    :members:

The following class can be used to read messages from BLF file:

.. autoclass:: can.BLFReader
    :show-inheritance:
    :members:


MF4 (Measurement Data Format v4)

Implements support for MF4 (Measurement Data Format v4) which is a proprietary format from ASAM (Association for Standardization of Automation and Measuring Systems), widely used in many automotive software (Vector CANape, ETAS INCA, dSPACE ControlDesk, etc.).

The data is stored in a compressed format which makes it compact.

Note

MF4 support has to be installed as an extra with for example pip install python-can[mf4].

Note

Channels will be converted to integers.

Note

MF4Writer does not suppport the append mode.

.. autoclass:: can.MF4Writer
    :show-inheritance:
    :members:

The MDF format is very flexible regarding the internal structure and it is used to handle data from multiple sources, not just CAN bus logging. MDF4Writer will always create a fixed internal file structure where there will be three channel groups (for standard, error and remote frames). Using this fixed file structure allows for a simple implementation of MDF4Writer and MF4Reader classes. Therefor MF4Reader can only replay files created with MF4Writer.

The following class can be used to read messages from MF4 file:

.. autoclass:: can.MF4Reader
    :show-inheritance:
    :members:


TRC

Implements basic support for the TRC file format.

Note

Comments and contributions are welcome on what file versions might be relevant.

.. autoclass:: can.TRCWriter
    :show-inheritance:
    :members:

The following class can be used to read messages from TRC file:

.. autoclass:: can.TRCReader
    :show-inheritance:
    :members:


The following enum can be used during creation of a TRC file with TRCWriter to select a specific file version:

.. autoclass:: can.TRCFileVersion
    :show-inheritance:
    :members:
    :undoc-members:


Rotating Loggers

.. autoclass:: can.io.BaseRotatingLogger
    :show-inheritance:
    :members:

.. autoclass:: can.SizedRotatingLogger
    :show-inheritance:
    :members:


Replaying Files

.. autoclass:: can.MessageSync
    :members: