En esta página

QCanDbcFileParser Class

La clase QCanDbcFileParser puede ser utilizada para analizar ficheros DBC. Más...

Cabecera: #include <QCanDbcFileParser>
CMake: find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake: QT += serialbus
Desde: Qt 6.5
Estado: Preliminar

Esta clase está en desarrollo y está sujeta a cambios.

Tipos Públicos

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

Funciones públicas

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

Miembros públicos estáticos

QCanUniqueIdDescription uniqueIdDescription()

Descripción detallada

Una base de datos CAN o archivo CAN DBC es un archivo de texto ASCII que contiene información sobre cómo descodificar e interpretar datos en bruto del bus CAN. Puedes encontrar más detalles sobre el formato aquí o aquí.

La clase QCanDbcFileParser toma el archivo DBC de entrada, lo analiza y proporciona una lista de QCanMessageDescriptions como salida. Estas descripciones de mensajes pueden reenviarse a QCanFrameProcessor, y utilizarse posteriormente como reglas para codificar o descodificar QCanBusFrames.

Utilice una de las sobrecargas de parse() para especificar un archivo o una lista de archivos que se procesarán. Ambas sobrecargas devuelven true si el análisis se completa con éxito y false en caso contrario.

Llame al método error() para obtener el error que se produjo durante el análisis. Si el análisis se completa correctamente, este método devolverá None. En caso contrario, puedes utilizar el método errorString() para obtener la representación en cadena de un error.

Durante el análisis también pueden producirse problemas no críticos. Estos problemas se registrarán, pero no se interrumpirá el proceso de análisis. Puede utilizar el método warnings() para obtener la lista completa de dichos problemas una vez finalizado el análisis.

Si el análisis se completa con éxito, llame a messageDescriptions() para obtener una lista de las descripciones de los mensajes que se extrajeron durante la última llamada a parse(). Llame a messageValueDescriptions() para obtener las descripciones textuales de los valores brutos de las señales, si están disponibles.

Utilice la función estática uniqueIdDescription() para obtener un QCanUniqueIdDescription para el formato 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());

Nota: El analizador sintáctico es de estado, lo que significa que todos los resultados (como las descripciones de los mensajes extraídos, el código de error o las advertencias) se restablecen una vez que se inicia el siguiente análisis sintáctico.

Palabras clave compatibles

La implementación actual sólo soporta un subconjunto de palabras clave que se pueden encontrar en un archivo DBC:

  • BO_ - descripción del mensaje.
  • SG_ - descripción de la señal.
  • SIG_VALTYPE_ - descripción del tipo de señal.
  • SG_MUL_VAL_ - descripción de multiplexación ampliada.
  • CM_ - comentarios (sólo para descripciones de mensajes y señales).
  • VAL_ - descripciones textuales de los valores brutos de las señales.

Las líneas que comienzan con otras palabras clave simplemente se ignoran.

Véase también QCanMessageDescription y QCanFrameProcessor.

Documentación de tipos de miembros

enum class QCanDbcFileParser::Error

Este enum representa los posibles errores que pueden producirse durante el análisis sintáctico de un archivo DBC.

ConstanteValorDescripción
QCanDbcFileParser::Error::None0No se ha producido ningún error.
QCanDbcFileParser::Error::FileReading1Se ha producido un error al abrir o leer el fichero.
QCanDbcFileParser::Error::Parsing2Se ha producido un error al analizar el contenido del archivo.

[alias] QCanDbcFileParser::MessageValueDescriptions

Se trata de un alias de tipo para QHash<QtCanBus::UniqueId, SignalValueDescriptions>.

Las claves del hash representan identificadores únicos de mensajes, y los valores del hash contienen las entradas correspondientes de QCanDbcFileParser::SignalValueDescriptions.

Véase también QCanDbcFileParser::SignalValueDescriptions.

[alias] QCanDbcFileParser::SignalValueDescriptions

Se trata de un alias de tipo para QHash<QString, ValueDescriptions>.

Las claves del hash representan nombres de señales, y los valores del hash contienen las entradas correspondientes de QCanDbcFileParser::ValueDescriptions.

Véase también QCanDbcFileParser::ValueDescriptions.

[alias] QCanDbcFileParser::ValueDescriptions

Se trata de un alias de tipo para QHash<quint32, QString>.

Las claves del hash representan valores brutos de señal, y los valores del hash representan las descripciones de cadena correspondientes.

Documentación de las funciones miembro

QCanDbcFileParser::QCanDbcFileParser()

Construye un analizador de archivos DBC.

[noexcept] QCanDbcFileParser::~QCanDbcFileParser()

Destruye este analizador de archivos DBC.

QCanDbcFileParser::Error QCanDbcFileParser::error() const

Devuelve el último error que se ha producido durante el análisis.

Véase también errorString() y parse().

QString QCanDbcFileParser::errorString() const

Devuelve la representación en texto del último error que se ha producido durante el análisis sintáctico o una cadena vacía si no se ha producido ningún error.

Véase también error().

QList<QCanMessageDescription> QCanDbcFileParser::messageDescriptions() const

Devuelve la lista de descripciones de mensajes que se extrajeron durante la última llamada a parse().

Véase también parse() y error().

QCanDbcFileParser::MessageValueDescriptions QCanDbcFileParser::messageValueDescriptions() const

Devuelve las descripciones textuales de los valores brutos de las señales.

DBC admite la posibilidad de proporcionar descripciones textuales a los valores brutos de las señales. Si estos datos existen en los archivos DBC analizados, se puede acceder a ellos mediante esta función.

Las descripciones textuales son únicas para una determinada señal dentro de un mensaje específico, por lo que la estructura devuelta contiene la información sobre el id único del mensaje y el nombre de la señal, así como las descripciones de los valores reales.

Véase también QCanDbcFileParser::MessageValueDescriptions, QCanDbcFileParser::SignalValueDescriptions, y QCanDbcFileParser::ValueDescriptions.

bool QCanDbcFileParser::parse(const QString &fileName)

Analiza el archivo fileName. Devuelve true si el análisis se ha realizado correctamente o false en caso contrario.

Si el análisis se ha completado correctamente, llama al método messageDescriptions() para obtener la lista de todas las descripciones de mensajes extraídas.

Si el análisis falló, llame a los métodos error() y errorString() para obtener la información sobre el error.

Llame al método warnings() para obtener la lista de advertencias que se registraron durante el análisis.

Nota: Este método espera que el contenido del archivo esté codificado en UTF-8. Si el archivo tiene una codificación diferente, descodifíquelo primero y utilice parseData() para extraer la información DBC.

Véase también messageDescriptions(), error(), warnings() y parseData().

bool QCanDbcFileParser::parse(const QStringList &fileNames)

Analiza una lista de archivos fileNames. Devuelve true si el análisis se ha realizado correctamente o false en caso contrario.

Si el análisis se ha completado correctamente, llama al método messageDescriptions() para obtener la lista de todas las descripciones de mensajes extraídas.

El análisis se detiene en el primer error. Llame a los métodos error() y errorString() para obtener la información sobre el error.

Llame al método warnings() para obtener la lista de advertencias que se registraron durante el análisis.

Nota: Este método espera que el contenido del archivo esté codificado en UTF-8. Si el archivo tiene una codificación diferente, puede que se produzca un error. Si el archivo tiene una codificación diferente, descodifíquelo primero y utilice parseData() para extraer la información DBC.

Se trata de una función sobrecargada.

Véase también messageDescriptions(), error(), warnings() y parseData().

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

Analiza los datos de entrada data y devuelve true si el análisis se ha realizado correctamente o false en caso contrario.

Si el análisis se ha completado correctamente, llama al método messageDescriptions() para obtener la lista de todas las descripciones de mensajes extraídas.

Si el análisis sintáctico ha fallado, llama a los métodos error() y errorString() para obtener la información sobre el error.

Llame al método warnings() para obtener la lista de advertencias que se registraron durante el análisis.

El método espera que data sea el contenido de un archivo DBC válido, convertido correctamente a QStringView.

Utilice este método cuando el archivo de entrada tenga una codificación distinta de 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);

Esta función se introdujo en Qt 6.7.

Véase también messageDescriptions(), error(), warnings(), y parse().

[static] QCanUniqueIdDescription QCanDbcFileParser::uniqueIdDescription()

Devuelve una descripción de identificador único. El protocolo DBC siempre utiliza el Frame Id como identificador, por lo que la descripción del identificador único es siempre la misma.

Utilice este método para obtener una instancia de QCanUniqueIdDescription y pasársela a QCanFrameProcessor.

Véase también QCanFrameProcessor::setUniqueIdDescription().

QStringList QCanDbcFileParser::warnings() const

Devuelve la lista de problemas no críticos que se han producido durante el análisis.

Un problema típico puede ser un mensaje malformado o la descripción de una señal. En tales casos, el mensaje o la señal malformados se omiten, pero el resto del archivo puede procesarse como de costumbre.

Véase también error() y 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.