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.
Konstante | Wert | Beschreibung |
---|---|---|
QCanDbcFileParser::Error::None | 0 | Kein Fehler aufgetreten. |
QCanDbcFileParser::Error::FileReading | 1 | Beim Öffnen oder Lesen der Datei ist ein Fehler aufgetreten. |
QCanDbcFileParser::Error::Parsing | 2 | Beim 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.
© 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.