En esta página

QCanFrameProcessor Class

La clase QCanFrameProcessor se puede utilizar para decodificar un QCanBusFrame o para convertir los datos de entrada en un QCanBusFrame que está listo para ser enviado al receptor. Más...

Cabecera: #include <QCanFrameProcessor>
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

(since 6.5) struct ParseResult
enum class Error { None, InvalidFrame, UnsupportedFrameFormat, Decoding, Encoding }

Funciones públicas

QCanFrameProcessor()
~QCanFrameProcessor()
void addMessageDescriptions(const QList<QCanMessageDescription> &descriptions)
void clearMessageDescriptions()
QCanFrameProcessor::Error error() const
QString errorString() const
QList<QCanMessageDescription> messageDescriptions() const
QCanFrameProcessor::ParseResult parseFrame(const QCanBusFrame &frame)
QCanBusFrame prepareFrame(QtCanBus::UniqueId uniqueId, const QVariantMap &signalValues)
void setMessageDescriptions(const QList<QCanMessageDescription> &descriptions)
void setUniqueIdDescription(const QCanUniqueIdDescription &description)
QCanUniqueIdDescription uniqueIdDescription() const
QStringList warnings() const

Descripción detallada

La clase QCanFrameProcessor opera sobre las descripciones de mensajes CAN (representadas por las clases QCanMessageDescription y QCanSignalDescription ) y una descripción de identificador único (representada por QCanUniqueIdDescription). Utiliza las descripciones para decodificar el QCanBusFrame entrante o para codificar los datos especificados por el usuario en la carga útil adecuada.

Antes de realizar cualquier decodificación o codificación, la instancia de QCanFrameProcessor debe inicializarse correctamente. Es necesario proporcionar los siguientes datos:

  • Una descripción de identificador único valid. Utiliza el método setUniqueIdDescription() para proporcionar una descripción adecuada.
  • Al menos una descripción del mensaje. Utilice el método addMessageDescriptions() o setMessageDescriptions() para proporcionar descripciones de mensajes. Todas las descripciones de mensajes deben tener identificadores únicos distintos. Cada mensaje puede contener varias descripciones de señal, pero los nombres de señal dentro de un mensaje también deben ser únicos.

El método parseFrame() puede utilizarse para procesar la entrada QCanBusFrame. El método devuelve una estructura ParseResult que contiene el mapa unique identifier y signal values. Las claves del mapa son los signal names, y los valores del mapa son los valores de las señales.

El método prepareFrame() puede utilizarse para generar un objeto QCanBusFrame para un identificador único específico, utilizando los nombres de señal proporcionados y los valores deseados.

Pueden producirse errores durante el proceso de codificación o descodificación. En tales casos, se pueden utilizar los métodos error() y errorString() para obtener la información sobre el error.

También pueden ocurrir algunos problemas no críticos. Estos problemas se registrarán, pero el proceso no se detendrá. Una vez finalizado el proceso, se puede utilizar el método warnings() para acceder a la lista de todas las advertencias.

Nota: El último error y la descripción del error, así como las advertencias, se restablecen una vez iniciada la descodificación o codificación.

Véase también QCanMessageDescription y QCanSignalDescription.

Documentación de tipos de miembros

enum class QCanFrameProcessor::Error

Este enum representa los posibles errores que pueden producirse durante la codificación o descodificación de QCanBusFrame.

ConstanteValorDescripción
QCanFrameProcessor::Error::None0No se ha producido ningún error.
QCanFrameProcessor::Error::InvalidFrame1La trama recibida no es válida y no puede analizarse.
QCanFrameProcessor::Error::UnsupportedFrameFormat2El formato de la trama recibida no es compatible y no se puede analizar.
QCanFrameProcessor::Error::Decoding3Se ha producido un error durante la descodificación. Utilice errorString() para obtener una representación de cadena del error.
QCanFrameProcessor::Error::Encoding4Se ha producido un error durante la codificación. Utilice errorString() para obtener una representación de cadena del error.

Documentación de las funciones miembro

QCanFrameProcessor::QCanFrameProcessor()

Crea un procesador de tramas CAN.

[noexcept] QCanFrameProcessor::~QCanFrameProcessor()

Destruye este procesador de fotogramas.

void QCanFrameProcessor::addMessageDescriptions(const QList<QCanMessageDescription> &descriptions)

Añade nuevas descripciones de mensajes descriptions a las descripciones de mensajes disponibles.

Todas las descripciones de mensajes deben tener identificadores únicos distintos.

Si algunas descripciones de mensajes tienen identificadores únicos repetidos, sólo se utilizará la última descripción.

Si el analizador ya tenía una descripción de mensaje con el mismo identificador único, se sobrescribirá.

Véase también messageDescriptions(), setMessageDescriptions() y clearMessageDescriptions().

void QCanFrameProcessor::clearMessageDescriptions()

Elimina todas las descripciones de mensajes de este procesador de tramas.

Véase también messageDescriptions(), addMessageDescriptions() y setMessageDescriptions().

QCanFrameProcessor::Error QCanFrameProcessor::error() const

Devuelve el último error.

Véase también errorString(), prepareFrame() y parseFrame().

QString QCanFrameProcessor::errorString() const

Devuelve el texto descriptivo del último error.

Véase también error(), prepareFrame() y parseFrame().

QList<QCanMessageDescription> QCanFrameProcessor::messageDescriptions() const

Devuelve todas las descripciones de mensajes utilizadas actualmente por este procesador de tramas.

Véase también addMessageDescriptions(), setMessageDescriptions() y clearMessageDescriptions().

QCanFrameProcessor::ParseResult QCanFrameProcessor::parseFrame(const QCanBusFrame &frame)

Analiza la trama frame utilizando las descripciones de mensajes especificadas.

El proceso de análisis sintáctico es el siguiente:

  1. El uniqueIdDescription() se utiliza para extraer el identificador único del mensaje.
  2. El identificador único extraído se utiliza para buscar un QCanMessageDescription adecuado de la lista de todos los messageDescriptions() disponibles.
  3. El QCanMessageDescription coincidente se utiliza para extraer los valores de señal de la trama.

Este método devuelve un QCanFrameProcessor::ParseResult, que contiene tanto el identificador único extraído como un QVariantMap con las señales y sus valores. Las claves del mapa son los signal names, y los valores del mapa son los valores de las señales.

Si se produce un error durante la descodificación, se devuelve un resultado con signalValues vacío. En tales casos, se pueden utilizar los métodos error() y errorString() para obtener información sobre los errores.

Nota: La llamada a este método borra todos los errores y advertencias anteriores.

Véase también addMessageDescriptions(), error(), errorString() y warnings().

QCanBusFrame QCanFrameProcessor::prepareFrame(QtCanBus::UniqueId uniqueId, const QVariantMap &signalValues)

Construye un marco de datos CAN, utilizando uniqueId y signalValues y devuelve el QCanBusFrame construido.

El parámetro signalValues debe contener los nombres de las señales como claves y los valores esperados de las señales como valores.

El proceso de creación de la trama es el siguiente:

  1. Se utiliza uniqueId para encontrar una descripción de mensaje apropiada.
  2. Si se encuentra la descripción del mensaje, se crea una QCanBusFrame con una carga útil del tamaño especificado. Todos los bytes de la carga útil, así como el identificador de trama, se inicializan a ceros.
  3. El uniqueIdDescription() se utiliza para codificar el uniqueId en la parte apropiada de la trama (id de trama o carga útil).
  4. La descripción de mensaje seleccionada se utiliza para codificar todos los signalValues en la trama.
  5. Las partes de la trama que no están cubiertas por un id único o descripciones de señal existentes no se tocan (y por tanto siguen conteniendo ceros).

Si se produce un error durante la codificación, se devuelve un QCanBusFrame no válido. En tales casos, pueden utilizarse los métodos error() y errorString() para obtener información sobre los errores.

Nota: La llamada a este método borra todos los errores y advertencias anteriores.

Véase también addMessageDescriptions(), error(), errorString() y warnings().

void QCanFrameProcessor::setMessageDescriptions(const QList<QCanMessageDescription> &descriptions)

Sustituye las descripciones de mensajes actuales utilizadas por este procesador de tramas por las nuevas descripciones de mensajes descriptions.

Véase también messageDescriptions(), addMessageDescriptions() y clearMessageDescriptions().

void QCanFrameProcessor::setUniqueIdDescription(const QCanUniqueIdDescription &description)

Establece la descripción del identificador único en description.

La descripción del identificador único debe ser válida para poder codificar o descodificar las tramas del bus CAN. Consulte la documentación de la clase QCanUniqueIdDescription para obtener más detalles.

Véase también uniqueIdDescription() y QCanUniqueIdDescription.

QCanUniqueIdDescription QCanFrameProcessor::uniqueIdDescription() const

Devuelve la descripción del identificador único.

La descripción del identificador único debe ser válida para poder codificar o descodificar las tramas del bus CAN. Consulte la documentación de la clase QCanUniqueIdDescription para obtener más detalles.

Véase también setUniqueIdDescription() y QCanUniqueIdDescription.

QStringList QCanFrameProcessor::warnings() const

Devuelve la lista de advertencias generadas durante la última llamada de codificación o descodificación.

Véase también error(), errorString(), prepareFrame() y parseFrame().

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