Sur cette page

QCanDbcFileParser Class

La classe QCanDbcFileParser permet d'analyser des fichiers DBC. En savoir plus...

En-tête : #include <QCanDbcFileParser>
CMake : find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake : QT += serialbus
Depuis : Qt 6.5
Statut : Aperçu technologique

Cette classe est en avant-première technologique et est susceptible d'être modifiée.

Types publics

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

Fonctions publiques

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

Membres publics statiques

QCanUniqueIdDescription uniqueIdDescription()

Description détaillée

Une base de données CAN ou un fichier CAN DBC est un fichier texte ASCII contenant des informations sur la manière de décoder et d’interpréter les données brutes du bus CAN. Vous trouverez plus de détails sur ce format ici ou ici.

La classe QCanDbcFileParser prend en entrée le fichier DBC, l'analyse et fournit en sortie une liste de messages ( QCanMessageDescriptions). Ces descriptions de messages peuvent être transmises à QCanFrameProcessor, puis utilisées comme règles pour encoder ou décoder des messages ( QCanBusFrames).

Utilisez l’une des surcharges de la méthode ` parse()` pour spécifier un fichier ou une liste de fichiers à traiter. Les deux surcharges renvoient ` true ` si l’analyse s’effectue avec succès et ` false ` dans le cas contraire.

Appelez la méthode error() pour obtenir l’erreur survenue lors de l’analyse. Si l’analyse s’achève avec succès, cette méthode renvoie None. Dans le cas contraire, vous pouvez utiliser la méthode errorString() pour obtenir la représentation sous forme de chaîne de caractères d’une erreur.

Au cours de l’analyse, certains problèmes non critiques peuvent également survenir. Ces problèmes seront consignés dans le journal, mais le processus d’analyse ne sera pas interrompu. Vous pouvez utiliser la méthode ` warnings()` pour obtenir la liste complète de ces problèmes une fois l’analyse terminée.

Si l’analyse s’achève avec succès, appelez messageDescriptions() pour obtenir la liste des descriptions de messages extraites lors du dernier appel à parse(). Appelez messageValueDescriptions() pour obtenir les descriptions textuelles des valeurs brutes des signaux, si elles sont disponibles.

Utilisez la fonction statique ` uniqueIdDescription()` pour obtenir un analyseur syntaxique (` QCanUniqueIdDescription `) pour le format DBC.

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());

Remarque : l’analyseur est « stateful », ce qui signifie que tous les résultats (tels que les descriptions de messages extraites, les codes d’erreur ou les avertissements) sont réinitialisés dès le début de l’analyse suivante.

Mots-clés pris en charge

L'implémentation actuelle ne prend en charge qu'un sous-ensemble des mots-clés que l'on peut trouver dans un fichier DBC :

  • BO_ - description du message.
  • SG_ - description du signal.
  • SIG_VALTYPE_ - description du type de signal.
  • SG_MUL_VAL_ - description du multiplexage étendu.
  • CM_ - les commentaires (uniquement pour les descriptions de messages et de signaux).
  • VAL_ - descriptions textuelles des valeurs brutes des signaux.

Les lignes commençant par d'autres mots-clés sont simplement ignorées.

Voir également QCanMessageDescription et QCanFrameProcessor.

Documentation sur les types de membres

enum class QCanDbcFileParser::Error

Cette énumération répertorie les erreurs pouvant survenir lors de l'analyse d'un fichier DBC.

ConstanteValeurDescription
QCanDbcFileParser::Error::None0Aucune erreur ne s'est produite.
QCanDbcFileParser::Error::FileReading1Une erreur s'est produite lors de l'ouverture ou de la lecture du fichier.
QCanDbcFileParser::Error::Parsing2Une erreur s'est produite lors de l'analyse du contenu du fichier.

[alias] QCanDbcFileParser::MessageValueDescriptions

Il s'agit d'un alias de type pour QHash<QtCanBus::UniqueId, SignalValueDescriptions>.

Les clés du hachage représentent les identifiants uniques des messages, et les valeurs du hachage contiennent les entrées correspondantes de QCanDbcFileParser::SignalValueDescriptions.

Voir également QCanDbcFileParser::SignalValueDescriptions.

[alias] QCanDbcFileParser::SignalValueDescriptions

Il s'agit d'un alias de type pour QHash<QString, ValueDescriptions>.

Les clés du hachage représentent les noms des signaux, et les valeurs du hachage contiennent les entrées correspondantes de ` QCanDbcFileParser::ValueDescriptions `.

Voir également QCanDbcFileParser::ValueDescriptions.

[alias] QCanDbcFileParser::ValueDescriptions

Il s'agit d'un alias de type pour ` QHash<quint32, QString>`.

Les clés du hachage représentent les valeurs brutes du signal, et les valeurs du hachage représentent les descriptions sous forme de chaînes de caractères correspondantes.

Documentation des fonctions membres

QCanDbcFileParser::QCanDbcFileParser()

Crée un analyseur de fichiers DBC.

[noexcept] QCanDbcFileParser::~QCanDbcFileParser()

Supprime cet analyseur de fichiers DBC.

QCanDbcFileParser::Error QCanDbcFileParser::error() const

Renvoie la dernière erreur survenue lors de l'analyse.

Voir également errorString() et parse().

QString QCanDbcFileParser::errorString() const

Renvoie la représentation textuelle de la dernière erreur survenue lors de l'analyse syntaxique, ou une chaîne vide s'il n'y a pas eu d'erreur.

Voir aussi error().

QList<QCanMessageDescription> QCanDbcFileParser::messageDescriptions() const

Renvoie la liste des descriptions de messages extraites lors du dernier appel à la fonction parse().

Voir également parse() et error().

QCanDbcFileParser::MessageValueDescriptions QCanDbcFileParser::messageValueDescriptions() const

Renvoie les descriptions textuelles correspondant aux valeurs brutes des signaux.

DBC prend en charge la possibilité d'associer des descriptions textuelles aux valeurs brutes des signaux. Si ces données existent dans le ou les fichiers DBC analysés, elles sont accessibles via cette fonction.

Les descriptions textuelles sont uniques pour un signal donné au sein d’un message spécifique ; la structure renvoyée contient donc des informations sur l’identifiant unique du message et le nom du signal, ainsi que les descriptions des valeurs réelles.

Voir également QCanDbcFileParser::MessageValueDescriptions, QCanDbcFileParser::SignalValueDescriptions et QCanDbcFileParser::ValueDescriptions.

bool QCanDbcFileParser::parse(const QString &fileName)

Analyse le fichier fileName. Renvoie true si l'analyse s'est déroulée avec succès, ou false dans le cas contraire.

Si l'analyse s'est déroulée avec succès, appelez la méthode messageDescriptions() pour obtenir la liste de toutes les descriptions de messages extraites.

Si l'analyse a échoué, appelez les méthodes ` error()` et ` errorString()` pour obtenir des informations sur l'erreur.

Appelez la méthode ` warnings()` pour obtenir la liste des avertissements enregistrés pendant l’analyse.

Remarque : cette méthode suppose que le contenu du fichier est encodé en UTF-8. Si le fichier utilise un autre encodage, décodez-le d’abord, puis utilisez parseData() pour extraire les informations DBC.

Voir également messageDescriptions(), error(), warnings() et parseData().

bool QCanDbcFileParser::parse(const QStringList &fileNames)

Analyse une liste de fichiers fileNames. Renvoie true si l'analyse s'est déroulée avec succès, ou false dans le cas contraire.

Si l'analyse s'est déroulée avec succès, appelez la méthode messageDescriptions() pour obtenir la liste de toutes les descriptions de messages extraites.

L'analyse s'arrête à la première erreur. Appelez les méthodes ` error()` et ` errorString()` pour obtenir des informations sur l'erreur.

Appelez la méthode ` warnings()` pour obtenir la liste des avertissements enregistrés pendant l’analyse.

Remarque : cette méthode suppose que le contenu du fichier est encodé en UTF-8. Si le fichier utilise un autre encodage, décodez-le d’abord, puis utilisez parseData() pour extraire les informations DBC.

Il s’agit d’une fonction surchargée.

Voir également messageDescriptions(), error(), warnings() et parseData().

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

Analyse les données d'entrée data et renvoie true si l'analyse s'est déroulée avec succès, ou false dans le cas contraire.

Si l'analyse s'est déroulée avec succès, appelez la méthode messageDescriptions() pour obtenir la liste de toutes les descriptions de messages extraites.

Si l'analyse a échoué, appelez les méthodes error() et errorString() pour obtenir des informations sur l'erreur.

Appelez la méthode warnings() pour obtenir la liste des avertissements qui ont été consignés lors de l’analyse.

Cette méthode s'attend à ce que ` data ` soit le contenu d'un fichier DBC valide, correctement converti au format ` QStringView`.

Utilisez cette méthode lorsque le fichier d'entrée est encodé dans un format autre que UTF-8.

// 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);

Cette fonction a été introduite dans Qt 6.7.

Voir également messageDescriptions(), error(), warnings() et parse().

[static] QCanUniqueIdDescription QCanDbcFileParser::uniqueIdDescription()

Renvoie une description de l'identifiant unique. Le protocole DBC utilise toujours l'identifiant de trame (Frame ID) comme identifiant ; par conséquent, la description de l'identifiant unique est toujours la même.

Utilisez cette méthode pour obtenir une instance de ` QCanUniqueIdDescription ` et transmettez-la à ` QCanFrameProcessor`.

Voir également QCanFrameProcessor::setUniqueIdDescription().

QStringList QCanDbcFileParser::warnings() const

Renvoie la liste des problèmes non critiques survenus lors de l'analyse syntaxique.

Un problème typique peut être un message ou une description de signal mal formé(e). Dans ce cas, le message ou le signal mal formé est ignoré, mais le reste du fichier peut être traité comme d’habitude.

Voir également error() et parse().

© 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.