Skip to content

About

Library to read DBC files of CAN bus networks

Resources

Stars

79 stars

Watchers

46 watching

Forks

Latest commit

 

History

78 Commits

Folders and files

Repository files navigation

libcanardbc

Overview

libcanardbc is a partial fork of cantools.sourceforge.net from rev47 (SVN). This fork has been made to remove dependencies on hdf5 and matio, and to fix compilation issues on Mac OS X in libdbc.

Only the DBC parser/lexer and associated library has been kept from the original project.

The original cantools project is licensed under GPLv3, this means you can't link the libraries of this project with a proprietary tool. This choice has been made on purpose by Andreas Heitmann and so this fork inherits of the license.

Installation

You will only need to install:

  • automake
  • autoconf
  • libtool
  • flex
  • bison
  • json-glib-1.0 (on Debian/Ubuntu: libjson-glib-dev; on other OSes probably a similar name)

and a C compiler (gcc or clang) to compile the library.

To install, just run the usual dance, ./configure && make install. Run ./autogen.sh first to generate the configure script if required.

Tools

The directory tools contains several tools related to libcanardbc:

  • dbc2json converts a DBC file to a JSON file. It's up to you to adapt it to your needs. This program is linked to libcanardbc so it is licensed under GPLv3.

  • json2dbc.py converts a JSON file to a DBC file. It is usually easier to write a JSON file by hand than a DBC one.

  • json2html renders a JSON file (DBC) to an HTML page. This program is distributed under BSD 3-Clause license.

Another project named caneton uses the generated JSON file of DBC to decode CAN messages.

DBC format

The syntax of signals in DBC file is:

<object> <name> : <start bit>|<length>@<endiannes ex. 0 for Motorola, 1 for Intel><signedness ex. + (unsigned) or - (signed)> (<factor>,<offset>) <range, ex. 0|360> "<unit>" <nodes>

JSON format

You can see an example of a valid JSON file here. Below is the description of the schema it uses:

{
    "filename": "<filename>.dbc (optional)",
    "version": "<dbc_version> (optional)",
    "attribute_definitions": {
        "<attribute_name>": {
            "0": "<enum_value_0>",
            "<n>": "<enum_value_<n>>"
        }
    }
    "messages": {
        "<can_id>": {
            "name": "<message_name>",
            "sender": "<sending_node>",
            "length": <message_length_in_bytes>,
            "has_multiplexor (optional) ": <true|false>,
            "attributes": {
                "<attribute_name_1>": "<attribute_value_1>",
                "<attribute_name_<n>>": "<attribute_value_<n>>"
            }
            "signals": {
                "signal_1": {
                    "bit_start": <signal_data_offset_in_message>,
                    "length": <signal_data_length_in_bits>,
                    "little_endian": <0|1>,
                    "signed": <0|1>,
                    "value_type": "<integer|float|double>",
                    "factor": <factor_applied_to_signal_numerical_value>,
                    "offset": <offset_applied_to_signal_numerical_value>,
                    "min": <min_applied_to_signal_numerical_value>,
                    "max": <max_applied_to_signal_numerical_value>,
                    "unit": "<signal_data_unit (optional)>",
                    "multiplexor (optional)": <does_the_signal_define_multiplex_ids>,
                    "multiplexing (optional)": <multiplex_id_in_which_the_signal_exists>,
                    "enums (optional)" : {
                        "<enum_0_value>": "<enum_0_name>",
                        "<enum_<n>_value>": "<enum_<n>_name>"
                    }
                },
                "
            }
        }
    }
}

About

Library to read DBC files of CAN bus networks

Resources

Stars

79 stars

Watchers

46 watching

Forks

Releases

Packages

Used by

Contributors

Languages