QCanDbcFileParser Class

Die Klasse QCanDbcFileParser kann zum Parsen von DBC-Dateien verwendet werden. Mehr...

Kopfzeile: #include <QCanDbcFileParser>
CMake: find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake: QT += serialbus
Seit: Qt 6.5
Status: Vorläufig

Diese Klasse befindet sich in der Entwicklung und kann sich noch ändern.

Öffentliche Typen

enum class Error { None, FileReading, Parsing }
MessageValueDescriptions
SignalValueDescriptions
ValueDescriptions

Öffentliche Funktionen

QCanDbcFileParser()
~QCanDbcFileParser()
QCanDbcFileParser::Error error() const
QString errorString() const
QList<QCanMessageDescription> messageDescriptions() const
QCanDbcFileParser::MessageValueDescriptions messageValueDescriptions() const
bool parse(const QString &fileName)
bool parse(const QStringList &fileNames)
(since 6.7) bool parseData(QStringView data)
QStringList warnings() const

Statische öffentliche Mitglieder

QCanUniqueIdDescription uniqueIdDescription()

Detaillierte Beschreibung

Eine CAN-Datenbank oder CAN-DBC-Datei ist eine ASCII-Textdatei, die Informationen darüber enthält, wie CAN-Bus-Rohdaten zu dekodieren und zu interpretieren sind. Einige weitere Details über das Format finden Sie hier oder hier.

Die Klasse QCanDbcFileParser nimmt die DBC-Datei entgegen, analysiert sie und gibt eine Liste von QCanMessageDescriptionaus. Diese Nachrichtenbeschreibungen können an QCanFrameProcessor weitergeleitet und später als Regeln zum Kodieren oder Dekodieren von QCanBusFrames verwendet werden.

Verwenden Sie eine der Überladungen parse(), um eine Datei oder eine Liste von Dateien anzugeben, die verarbeitet werden sollen. Beide Überladungen geben true zurück, wenn das Parsen erfolgreich abgeschlossen wurde, und andernfalls false.

Rufen Sie die Methode error() auf, um den Fehler zu ermitteln, der während des Parsens aufgetreten ist. Wenn das Parsen erfolgreich abgeschlossen wurde, gibt diese Methode None zurück. Andernfalls können Sie eine errorString()-Methode verwenden, um die String-Darstellung eines Fehlers zu erhalten.

Während des Parsens können auch einige unkritische Probleme auftreten. Solche Probleme werden protokolliert, aber der Parsing-Prozess wird nicht abgebrochen. Sie können die Methode warnings() verwenden, um die vollständige Liste solcher Probleme zu erhalten, nachdem das Parsen abgeschlossen ist.

Wenn das Parsing erfolgreich abgeschlossen wurde, rufen Sie messageDescriptions() auf, um eine Liste der Nachrichtenbeschreibungen zu erhalten, die beim letzten Aufruf von parse() extrahiert wurden. Rufen Sie messageValueDescriptions() auf, um die textuellen Beschreibungen der Signalrohwerte abzurufen, sofern diese verfügbar sind.

Verwenden Sie die statische Funktion uniqueIdDescription(), um eine QCanUniqueIdDescription für das DBC-Format zu erhalten.

QCanDbcFileParser fileParser;
const bool result = fileParser.parse(u"path/to/file.dbc"_s);
// Check result, call error() and warnings() if needed

// Prepare a QCanFrameProcessor to decode or encode DBC frames
QCanFrameProcessor frameProcessor;
frameProcessor.setUniqueIdDescription(QCanDbcFileParser::uniqueIdDescription());
frameProcessor.setMessageDescriptions(fileParser.messageDescriptions());

Hinweis: Der Parser ist zustandsabhängig, was bedeutet, dass alle Ergebnisse (wie extrahierte Nachrichtenbeschreibungen, Fehlercodes oder Warnungen) zurückgesetzt werden, sobald das nächste Parsing beginnt.

Unterstützte Schlüsselwörter

Die aktuelle Implementierung unterstützt nur eine Teilmenge der Schlüsselwörter, die in einer DBC-Datei zu finden sind:

  • BO_ - Meldungsbeschreibung.
  • SG_ - Signalbeschreibung.
  • SIG_VALTYPE_ - Signaltyp-Beschreibung.
  • SG_MUL_VAL_ - erweiterte Multiplexing-Beschreibung.
  • CM_ - Kommentare (nur für Nachrichten- und Signalbeschreibungen).
  • VAL_ - textuelle Beschreibungen für Signalrohwerte.

Zeilen, die mit anderen Schlüsselwörtern beginnen, werden einfach ignoriert.

Siehe auch QCanMessageDescription und QCanFrameProcessor.

Dokumentation der Mitgliedstypen

enum class QCanDbcFileParser::Error

Diese Aufzählung stellt die möglichen Fehler dar, die beim Parsen einer DBC-Datei auftreten können.

KonstanteWertBeschreibung
QCanDbcFileParser::Error::None0Kein Fehler aufgetreten.
QCanDbcFileParser::Error::FileReading1Beim Öffnen oder Lesen der Datei ist ein Fehler aufgetreten.
QCanDbcFileParser::Error::Parsing2Beim Parsen des Inhalts der Datei ist ein Fehler aufgetreten.

[alias] QCanDbcFileParser::MessageValueDescriptions

Dies ist ein Alias-Typ für QHash<QtCanBus::UniqueId, SignalValueDescriptions>.

Die Schlüssel des Hashes stellen eindeutige Nachrichten-IDs dar, und die Werte des Hashes enthalten die entsprechenden QCanDbcFileParser::SignalValueDescriptions Einträge.

Siehe auch QCanDbcFileParser::SignalValueDescriptions.

[alias] QCanDbcFileParser::SignalValueDescriptions

Dies ist ein Alias-Typ für QHash<QString, ValueDescriptions>.

Die Schlüssel des Hashs stellen Signalnamen dar, und die Werte des Hashs enthalten die entsprechenden QCanDbcFileParser::ValueDescriptions Einträge.

Siehe auch QCanDbcFileParser::ValueDescriptions.

[alias] QCanDbcFileParser::ValueDescriptions

Dies ist ein Alias-Typ für QHash<quint32, QString>.

Die Schlüssel des Hashes stellen rohe Signalwerte dar, und die Werte des Hashes stellen entsprechende Stringbeschreibungen dar.

Dokumentation der Mitgliedsfunktionen

QCanDbcFileParser::QCanDbcFileParser()

Konstruiert einen DBC-Dateiparser.

[noexcept] QCanDbcFileParser::~QCanDbcFileParser()

Zerstört diesen DBC-Dateiparser.

QCanDbcFileParser::Error QCanDbcFileParser::error() const

Gibt den letzten Fehler zurück, der während des Parsens aufgetreten ist.

Siehe auch errorString() und parse().

QString QCanDbcFileParser::errorString() const

Gibt die Textrepräsentation des letzten Fehlers zurück, der beim Parsen aufgetreten ist, oder eine leere Zeichenkette, wenn kein Fehler aufgetreten ist.

Siehe auch error().

QList<QCanMessageDescription> QCanDbcFileParser::messageDescriptions() const

Gibt die Liste der Nachrichtenbeschreibungen zurück, die beim letzten Aufruf von parse() extrahiert wurden.

Siehe auch parse() und error().

QCanDbcFileParser::MessageValueDescriptions QCanDbcFileParser::messageValueDescriptions() const

Gibt die textuellen Beschreibungen für Signalrohwerte zurück.

DBC unterstützt die Möglichkeit, textuelle Beschreibungen für Signalrohwerte bereitzustellen. Wenn solche Daten in der/den geparsten DBC-Datei(en) vorhanden sind, kann mit dieser Funktion auf sie zugegriffen werden.

Die textuellen Beschreibungen sind für ein bestimmtes Signal innerhalb einer bestimmten Nachricht eindeutig, so dass die zurückgegebene Struktur die Informationen über die eindeutige ID der Nachricht und den Signalnamen sowie die tatsächlichen Wertbeschreibungen enthält.

Siehe auch QCanDbcFileParser::MessageValueDescriptions, QCanDbcFileParser::SignalValueDescriptions, und QCanDbcFileParser::ValueDescriptions.

bool QCanDbcFileParser::parse(const QString &fileName)

Analysiert die Datei fileName. Gibt true zurück, wenn das Parsing erfolgreich abgeschlossen wurde, andernfalls false.

Wenn das Parsen erfolgreich abgeschlossen wurde, rufen Sie die Methode messageDescriptions() auf, um die Liste aller extrahierten Nachrichtenbeschreibungen zu erhalten.

Wenn das Parsen fehlgeschlagen ist, rufen Sie die Methoden error() und errorString() auf, um die Informationen über den Fehler zu erhalten.

Rufen Sie die Methode warnings() auf, um die Liste der Warnungen zu erhalten, die während des Parsens protokolliert wurden.

Hinweis: Diese Methode erwartet, dass der Inhalt der Datei in UTF-8 kodiert ist. Wenn die Datei eine andere Kodierung hat, dekodieren Sie sie zuerst und verwenden Sie parseData(), um die DBC-Informationen zu extrahieren.

Siehe auch messageDescriptions(), error(), warnings(), und parseData().

bool QCanDbcFileParser::parse(const QStringList &fileNames)

Dies ist eine überladene Funktion.

Analysiert eine Liste von Dateien fileNames. Gibt true zurück, wenn das Parsing erfolgreich abgeschlossen wurde, oder andernfalls false.

Wenn das Parsen erfolgreich abgeschlossen wurde, rufen Sie die Methode messageDescriptions() auf, um die Liste aller extrahierten Nachrichtenbeschreibungen zu erhalten.

Das Parsen wird beim ersten Fehler abgebrochen. Rufen Sie die Methoden error() und errorString() auf, um die Informationen über den Fehler zu erhalten.

Rufen Sie die Methode warnings() auf, um die Liste der Warnungen zu erhalten, die während des Parsings protokolliert wurden.

Hinweis: Diese Methode erwartet, dass der Inhalt der Datei in UTF-8 kodiert ist. Wenn die Datei eine andere Kodierung hat, dekodieren Sie sie zuerst und verwenden Sie parseData(), um die DBC-Informationen zu extrahieren.

Siehe auch messageDescriptions(), error(), warnings(), und parseData().

[since 6.7] bool QCanDbcFileParser::parseData(QStringView data)

Analysiert die Eingabedaten data und gibt true zurück, wenn das Parsen erfolgreich war, oder false, wenn nicht.

Wenn das Parsen erfolgreich abgeschlossen wurde, rufen Sie die Methode messageDescriptions() auf, um die Liste aller extrahierten Nachrichtenbeschreibungen zu erhalten.

Wenn das Parsen fehlgeschlagen ist, rufen Sie die Methoden error() und errorString() auf, um die Informationen über den Fehler zu erhalten.

Rufen Sie die Methode warnings() auf, um die Liste der Warnungen zu erhalten, die während des Parsens protokolliert wurden.

Die Methode erwartet, dass data der Inhalt einer gültigen DBC-Datei ist, die ordnungsgemäß in QStringView konvertiert wurde.

Verwenden Sie diese Methode, wenn die Eingabedatei eine andere Kodierung als UTF-8 hat.

// Read the data from a DBC file with custom encoding
const QByteArray initialData = ...;
// Convert to UTF-16 using QStringDecoder or some other way
const QString decodedData = ...;
QCanDbcFileParser parser;
const bool result = parser.parseData(decodedData);

Diese Funktion wurde in Qt 6.7 eingeführt.

Siehe auch messageDescriptions(), error(), warnings(), und parse().

[static] QCanUniqueIdDescription QCanDbcFileParser::uniqueIdDescription()

Gibt eine eindeutige Bezeichnerbeschreibung zurück. Das DBC-Protokoll verwendet immer die Frame-ID als Bezeichner, daher ist die Beschreibung des eindeutigen Bezeichners immer dieselbe.

Verwenden Sie diese Methode, um eine Instanz von QCanUniqueIdDescription zu erhalten und sie an QCanFrameProcessor zu übergeben.

Siehe auch QCanFrameProcessor::setUniqueIdDescription().

QStringList QCanDbcFileParser::warnings() const

Gibt die Liste der unkritischen Probleme zurück, die während des Parsens aufgetreten sind.

Ein typisches Problem kann eine fehlerhafte Meldung oder Signalbeschreibung sein. In solchen Fällen wird die fehlerhafte Nachricht oder das fehlerhafte Signal übersprungen, aber der Rest der Datei kann wie gewohnt verarbeitet werden.

Siehe auch error() und parse().

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.