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 ` 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: Rotating Loggers ---------------- .. autoclass:: can.io.BaseRotatingLogger :show-inheritance: :members: .. autoclass:: can.SizedRotatingLogger :show-inheritance: :members: Replaying Files --------------- .. autoclass:: can.MessageSync :members: