Skip to content

Transcoding freezing #1

Description

@MaximBozek-M-ECS

Hi,

I am testing this library out in my QT Creator Project. Everything I tried came to a freeze of the transcoding:

DBC file loaded successfully!
Parsed ID: "18FEF100"
Parsed Payload: "FF0000000000E9C0"
Frame ID: 419361024
Frame ID Hex: "18FEF100"
Frame DLC: 8
Frame Data: 0x7ffc833de728
Frame Data Hex: "FF0000000000E9C0"
Transcoding frame2...

Here is the most important part of the code:

void CANDecoder::loadDBC(const QString &dbcFilePath)
{
    // Read the DBC file content
    std::ifstream dbcFile(dbcFilePath.toStdString());
    if (!dbcFile.is_open()) {
        qCritical() << "Failed to open DBC file:" << dbcFilePath;
        return;
    }

    std::string dbcContent((std::istreambuf_iterator<char>(dbcFile)),
                           std::istreambuf_iterator<char>());

    // Parse the DBC file and load the transcoder
    bool parsed = can::parse_dbc(dbcContent, std::ref(m_transcoder));
    if (parsed) {
        qDebug() << "DBC file loaded successfully!";

        QString CANID = "00011000111111101111000100000000";
        QString CANPayload = "1111111100000000000000000000000000000000000000001110100111000000";
        QString CANFrame = CANID + CANPayload;

        QString idString = CANFrame.mid(0, 32);
        QString payloadString = CANFrame.mid(32);
        quint32 id = bitArrayToInt(stringToBits(idString));
        QByteArray payload = bitArrayToByteArray(stringToBits(payloadString));

        qDebug() << "Parsed ID:" << QString::number(id, 16).toUpper();
        qDebug() << "Parsed Payload:" << payload.toHex().toUpper();

        processFrame(QString::number(id, 16).toUpper(), payload);
    } else {
        qCritical() << "Failed to parse DBC file!";
    }
}

void CANDecoder::processFrame(const QString &frameId, const QByteArray &frameData)
{
    quint32 frameIdInt = frameId.toUInt(nullptr, 16);
    qDebug() << "awdawdawdawdawdawdawd ID:" << frameIdInt;

    can_frame frame;
    frame.can_id = frameIdInt;
    frame.can_dlc = frameData.size();
    std::memcpy(frame.data, frameData.constData(), std::min(static_cast<int>(frameData.size()), static_cast<int>(sizeof(frame.data))));

    qDebug() << "Frame ID:" << frame.can_id;
    qDebug() << "Frame ID Hex:" << QString::number(frame.can_id, 16).toUpper();
    qDebug() << "Frame DLC:" << frame.can_dlc;
    qDebug() << "Frame Data:" << frame.data;
    qDebug() << "Frame Data Hex:" << QByteArray(reinterpret_cast<char*>(frame.data), frame.can_dlc).toHex().toUpper();

    try {
        auto now = std::chrono::system_clock::now();
        qDebug() << "Transcoding frame2...";
        m_framePacket = m_transcoder.transcode(now, frame);
        qDebug() << "Frame transcoded.";
    } catch (const std::exception& e) {
        qDebug() << "Error in transcoding: " << e.what();
    }

    qDebug() << "SHITS:" << m_framePacket.data_begin();
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions