QCanDbcFileParser Class
Die Klasse „QCanDbcFileParser“ kann zum Parsen von DBC-Dateien verwendet werden. Mehr...
| Header: | #include <QCanDbcFileParser> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
| qmake: | QT += serialbus |
| Seit: | Qt 6.5 |
| Status: | Technologievorschau |
Diese Klasse befindet sich in der Technologievorschau 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() |
Ausführliche Beschreibung
Eine CAN-Datenbank oder CAN-DBC-Datei ist eine ASCII-Textdatei, die Informationen darüber enthält, wie rohe CAN-Bus-Daten dekodiert und interpretiert werden. Weitere Details zum Format finden Sie hier oder hier.
Die Klasse `QCanDbcFileParser` nimmt die DBC-Eingabedatei entgegen, analysiert sie und liefert als Ausgabe eine Liste von ` QCanMessageDescription`s. Diese Nachrichtenbeschreibungen können an ` QCanFrameProcessor` weitergeleitet und später als Regeln zum Kodieren oder Dekodieren von ` QCanBusFrame`s verwendet werden.
Verwenden Sie eine der Überladungen von ` 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, andernfalls ` false `.
Rufen Sie die Methode ` error()` auf, um den während der Analyse aufgetretenen Fehler abzurufen. Wenn die Analyse erfolgreich abgeschlossen wurde, gibt diese Methode ` None` zurück. Andernfalls können Sie die Methode ` errorString()` verwenden, um die Zeichenfolgendarstellung eines Fehlers abzurufen.
Während des Parsens können auch einige nicht kritische Probleme auftreten. Solche Probleme werden protokolliert, der Parsing-Vorgang wird jedoch nicht abgebrochen. Mit der Methode ` warnings()` können Sie nach Abschluss des Parsens die vollständige Liste dieser Probleme abrufen.
Wenn die Analyse erfolgreich abgeschlossen wurde, rufen Sie ` messageDescriptions()` auf, um eine Liste der Meldungsbeschreibungen abzurufen, die beim letzten Aufruf von ` parse()` extrahiert wurden. Rufen Sie ` messageValueDescriptions()` auf, um die textuellen Beschreibungen der Rohwerte der Signale abzurufen, sofern diese verfügbar sind.
Verwenden Sie die statische Funktion ` uniqueIdDescription()` , um einen ` QCanUniqueIdDescription ` für das DBC-Format abzurufen.
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 zustandsbehaftet, was bedeutet, dass alle Ergebnisse (wie extrahierte Nachrichtenbeschreibungen, Fehlercodes oder Warnungen) zurückgesetzt werden, sobald die nächste Analyse beginnt.
Unterstützte Schlüsselwörter
Die aktuelle Implementierung unterstützt nur eine Teilmenge der Schlüsselwörter, die in einer DBC-Datei vorkommen können:
BO_- Meldungsbeschreibung.SG_- Signalbeschreibung.SIG_VALTYPE_- Beschreibung des Signaltyps.SG_MUL_VAL_- Beschreibung des erweiterten Multiplexings.CM_- Kommentare (nur für Nachrichten- und Signalbeschreibungen).VAL_- Textbeschreibungen für Rohsignalwerte.
Zeilen, die mit anderen Schlüsselwörtern beginnen, werden einfach ignoriert.
Siehe auch QCanMessageDescription und QCanFrameProcessor.
Dokumentation zu Mitgliedstypen
enum class QCanDbcFileParser::Error
Diese Enumeration stellt die möglichen Fehler dar, die beim Parsen einer DBC-Datei auftreten können.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanDbcFileParser::Error::None | 0 | Es ist kein Fehler aufgetreten. |
QCanDbcFileParser::Error::FileReading | 1 | Beim Öffnen oder Lesen der Datei ist ein Fehler aufgetreten. |
QCanDbcFileParser::Error::Parsing | 2 | Beim Parsen des Dateiinhalts ist ein Fehler aufgetreten. |
[alias] QCanDbcFileParser::MessageValueDescriptions
Dies ist ein Typalias für QHash<QtCanBus::UniqueId, SignalValueDescriptions>.
Die Schlüssel des Hashs stellen eindeutige Nachrichten-IDs dar, und die Werte des Hashs enthalten die entsprechenden Einträge aus „ QCanDbcFileParser::SignalValueDescriptions “.
Siehe auch QCanDbcFileParser::SignalValueDescriptions.
[alias] QCanDbcFileParser::SignalValueDescriptions
Dies ist ein Typalias für „ QHash<QString, ValueDescriptions> “.
Die Schlüssel des Hashs stehen für Signalnamen, und die Werte des Hashs enthalten die entsprechenden Einträge unter „ QCanDbcFileParser::ValueDescriptions “.
Siehe auch „ QCanDbcFileParser::ValueDescriptions “.
[alias] QCanDbcFileParser::ValueDescriptions
Dies ist ein Typalias für ` QHash<quint32, QString>`.
Die Schlüssel des Hashs stellen Rohsignalwerte dar, und die Werte des Hashs stellen die entsprechenden Zeichenfolgenbeschreibungen dar.
Dokumentation der Member-Funktionen
QCanDbcFileParser::QCanDbcFileParser()
Erstellt einen DBC-Datei-Parser.
[noexcept] QCanDbcFileParser::~QCanDbcFileParser()
Löscht diesen DBC-Datei-Parser.
QCanDbcFileParser::Error QCanDbcFileParser::error() const
Gibt den letzten Fehler zurück, der beim Parsen aufgetreten ist.
Siehe auch „ errorString()“ und „ parse()“.
QString QCanDbcFileParser::errorString() const
Gibt die Textdarstellung des letzten Fehlers zurück, der während der Analyse 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 Textbeschreibungen für die Rohwerte der Signale zurück.
DBC unterstützt die Möglichkeit, textuelle Beschreibungen für Rohwerte von Signalen bereitzustellen. Wenn solche Daten in den geparsten DBC-Dateien vorhanden sind, kann mit dieser Funktion darauf zugegriffen werden.
Die Textbeschreibungen sind für ein bestimmtes Signal innerhalb einer bestimmten Nachricht eindeutig; daher enthält die zurückgegebene Struktur die Informationen zur eindeutigen Nachrichten-ID und zum Signalnamen sowie die eigentlichen Wertbeschreibungen.
Siehe auch QCanDbcFileParser::MessageValueDescriptions, QCanDbcFileParser::SignalValueDescriptions und QCanDbcFileParser::ValueDescriptions.
bool QCanDbcFileParser::parse(const QString &fileName)
Analysiert die Datei „ fileName “. Gibt „ true “ zurück, wenn die Analyse erfolgreich abgeschlossen wurde, andernfalls „ false “.
Wenn das Parsen erfolgreich abgeschlossen wurde, rufen Sie die Methode ` messageDescriptions()` auf, um die Liste aller extrahierten Nachrichtenbeschreibungen abzurufen.
Wenn das Parsen fehlgeschlagen ist, rufen Sie die Methoden „ error()“ und „ errorString()“ auf, um Informationen zum Fehler abzurufen.
Rufen Sie die Methode ` warnings()` auf, um die Liste der Warnungen abzurufen, die während der Analyse protokolliert wurden.
Hinweis: Diese Methode setzt voraus, dass der Dateiinhalt in UTF-8 kodiert ist. Falls die Datei eine andere Kodierung aufweist, dekodieren Sie sie zunächst und verwenden Sie „ parseData()“, um die DBC-Informationen zu extrahieren.
Siehe auch „ messageDescriptions()“, „ error()“, „ warnings()“ und „ parseData()“.
bool QCanDbcFileParser::parse(const QStringList &fileNames)
Analysiert eine Liste von Dateien „ fileNames “. Gibt „ true “ zurück, wenn die Analyse erfolgreich abgeschlossen wurde, andernfalls „ false “.
Wenn das Parsen erfolgreich abgeschlossen wurde, rufen Sie die Methode ` messageDescriptions()` auf, um die Liste aller extrahierten Nachrichtenbeschreibungen abzurufen.
Das Parsen wird beim ersten Fehler abgebrochen. Rufen Sie die Methoden „ error()“ und „ errorString()“ auf, um Informationen zum Fehler abzurufen.
Rufen Sie die Methode „ warnings()“ auf, um die Liste der Warnungen abzurufen, die während der Analyse protokolliert wurden.
Hinweis: Diese Methode setzt voraus, dass der Dateiinhalt in UTF-8 kodiert ist. Wenn die Datei eine andere Kodierung aufweist, dekodieren Sie sie zunächst und verwenden Sie dann „ parseData()“, um die DBC-Informationen zu extrahieren.
Dies ist eine überladene Funktion.
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 die Analyse erfolgreich abgeschlossen wurde, andernfalls „ false “.
Wenn die Analyse erfolgreich abgeschlossen wurde, rufen Sie die Methode ` messageDescriptions()` auf, um die Liste aller extrahierten Nachrichtenbeschreibungen abzurufen.
Wenn das Parsen fehlgeschlagen ist, rufen Sie die Methoden „ error()“ und „ errorString()“ auf, um Informationen zum Fehler abzurufen.
Rufen Sie die Methode ` warnings()` auf, um die Liste der Warnungen abzurufen, die während der Analyse protokolliert wurden.
Die Methode erwartet, dass ` data ` den Inhalt einer gültigen DBC-Datei enthält, die ordnungsgemäß in das Format ` 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 Beschreibung der eindeutigen Kennung zurück. Das DBC-Protokoll verwendet stets die Frame-ID als Kennung, weshalb die Beschreibung der eindeutigen Kennung immer identisch ist.
Verwenden Sie diese Methode, um eine Instanz von ` QCanUniqueIdDescription ` abzurufen und diese an ` QCanFrameProcessor` zu übergeben.
Siehe auch ` QCanFrameProcessor::setUniqueIdDescription()`.
QStringList QCanDbcFileParser::warnings() const
Gibt die Liste der nicht kritischen Probleme zurück, die während der Analyse aufgetreten sind.
Ein typisches Problem kann eine fehlerhafte Nachrichten- oder Signalbeschreibung sein. In solchen Fällen wird die fehlerhafte Nachricht oder das fehlerhafte Signal übersprungen, der Rest der Datei kann jedoch wie gewohnt verarbeitet werden.
© 2026 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.