GithubHelp home page GithubHelp logo

Comments (2)

bomm avatar bomm commented on July 1, 2024

In src/canmatrix/formats/dbc.py, function def dump(in_db, f, **options):, there is the following code to write value tables:

    # signal-values:
    for frame in db.frames:
        multiplex_written = False
        for signal in frame.signals:
            if signal.multiplex == 'Multiplexor' and multiplex_written:
                continue

            multiplex_written = True

            if signal.values:
                f.write(
                    ('VAL_ %d ' %
                     frame.arbitration_id.to_compound_integer() +
                     output_names[frame][signal]).encode(dbc_export_encoding, ignore_encoding_errors))
                for attr_name, val in sorted(signal.values.items(), key=lambda x: int(x[0])):
                    if '"' in val:
                        val = val.replace('"', '\\"')
                    f.write(
                        (' ' + str(attr_name) + ' "' + val + '"').encode(dbc_export_encoding, ignore_encoding_errors))

                f.write(";\n".encode(dbc_export_encoding, ignore_encoding_errors))

When I comment the lines

            if signal.multiplex == 'Multiplexor' and multiplex_written:
                continue

it seems to work with my DBC files.

I don't understand the purpose of the condition. As I understand the code, it will skip writing the value table for Multiplexor signals except if it is processed in the first loop iteration.
I don't know if there are any use cases where this change would have any bad effect.

from canmatrix.

ebroecker avatar ebroecker commented on July 1, 2024

Hi @bomm

thanks for this report.

I think this was a copy-paste error, but no idea...

could you try branch issue_704
which more or less does the same you did with commenting out...

pip install git+https://github.com/ebroecker/canmatrix.git@issue_704

Thanks

from canmatrix.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.