Sur cette page

QCanFrameProcessor Class

La classe QCanFrameProcessor peut être utilisée pour décoder une QCanBusFrame ou pour convertir les données d'entrée en une QCanBusFrame prête à être envoyée au récepteur. Plus d'informations...

En-tête : #include <QCanFrameProcessor>
CMake : find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake : QT += serialbus
Depuis : Qt 6.5
Statut : Préliminaire

Cette classe est en cours de développement et peut être modifiée.

Types publics

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

Fonctions publiques

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

Description détaillée

La classe QCanFrameProcessor opère sur les descriptions de messages CAN (représentées par les classes QCanMessageDescription et QCanSignalDescription ) et une description d'identifiant unique (représentée par QCanUniqueIdDescription). Elle utilise les descriptions pour décoder le message entrant QCanBusFrame ou pour encoder les données spécifiées par l'utilisateur dans la charge utile appropriée.

Avant de procéder au décodage ou à l'encodage, l'instance de QCanFrameProcessor doit être initialisée correctement. Les données suivantes doivent être fournies :

  • Une description de l'identifiant unique valid. Utilisez la méthode setUniqueIdDescription() pour fournir une description appropriée.
  • Au moins une description de message. Utilisez la méthode addMessageDescriptions() ou setMessageDescriptions() pour fournir des descriptions de messages. Toutes les descriptions de messages doivent avoir des identifiants uniques distincts. Chaque message peut contenir plusieurs descriptions de signaux, mais les noms de signaux au sein d'un message doivent également être uniques.

La méthode parseFrame() peut être utilisée pour traiter les messages entrants QCanBusFrame. La méthode renvoie une structure ParseResult qui contient les cartes unique identifier et signal values. Les clés de la carte sont les signal names, et les valeurs de la carte sont les valeurs des signaux.

La méthode prepareFrame() peut être utilisée pour générer un objet QCanBusFrame pour un identifiant unique spécifique, en utilisant les noms de signaux fournis et les valeurs souhaitées.

Des erreurs peuvent survenir au cours du processus d'encodage ou de décodage. Dans ce cas, les méthodes error() et errorString() peuvent être utilisées pour obtenir des informations sur l'erreur.

Certains problèmes non critiques peuvent également survenir. Ces problèmes seront enregistrés, mais le processus ne sera pas arrêté. Une fois le processus terminé, la méthode warnings() peut être utilisée pour accéder à la liste de tous les avertissements.

Remarque : la dernière erreur et la description de l'erreur, ainsi que les avertissements, sont réinitialisés une fois que le décodage ou l'encodage est lancé.

Voir également QCanMessageDescription et QCanSignalDescription.

Documentation sur les types de membres

enum class QCanFrameProcessor::Error

Cette énumération représente les erreurs possibles qui peuvent se produire lors de l'encodage ou du décodage de QCanBusFrame.

ConstanteValeurDescription de l'erreur
QCanFrameProcessor::Error::None0Aucune erreur n'est survenue.
QCanFrameProcessor::Error::InvalidFrame1La trame reçue n'est pas valide et ne peut pas être analysée.
QCanFrameProcessor::Error::UnsupportedFrameFormat2Le format de la trame reçue n'est pas pris en charge et ne peut être analysé.
QCanFrameProcessor::Error::Decoding3Une erreur s'est produite lors du décodage. Utilisez errorString() pour obtenir une représentation sous forme de chaîne de l'erreur.
QCanFrameProcessor::Error::Encoding4Une erreur s'est produite lors de l'encodage. Utilisez errorString() pour obtenir une représentation sous forme de chaîne de caractères de l'erreur.

Documentation des fonctions membres

QCanFrameProcessor::QCanFrameProcessor()

Crée un processeur de trames CAN.

[noexcept] QCanFrameProcessor::~QCanFrameProcessor()

Détruit ce processeur de cadre.

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

Ajoute de nouvelles descriptions de messages descriptions aux descriptions de messages disponibles.

Toutes les descriptions de messages doivent avoir des identifiants uniques distincts.

Si certaines descriptions de messages ont des identifiants uniques répétés, seule la dernière description sera utilisée.

Si l'analyseur contient déjà une description de message avec le même identifiant unique, celle-ci sera écrasée.

Voir aussi messageDescriptions(), setMessageDescriptions() et clearMessageDescriptions().

void QCanFrameProcessor::clearMessageDescriptions()

Supprime toutes les descriptions de messages pour ce processeur de trames.

Voir également messageDescriptions(), addMessageDescriptions() et setMessageDescriptions().

QCanFrameProcessor::Error QCanFrameProcessor::error() const

Renvoie la dernière erreur.

Voir aussi errorString(), prepareFrame() et parseFrame().

QString QCanFrameProcessor::errorString() const

Renvoie la description textuelle de la dernière erreur.

Voir aussi error(), prepareFrame() et parseFrame().

QList<QCanMessageDescription> QCanFrameProcessor::messageDescriptions() const

Renvoie toutes les descriptions de messages actuellement utilisées par ce processeur de trames.

Voir aussi addMessageDescriptions(), setMessageDescriptions() et clearMessageDescriptions().

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

Analyse la trame frame à l'aide des descriptions de messages spécifiées.

Le processus d'analyse est le suivant :

  1. L'adresse uniqueIdDescription() est utilisée pour extraire l'identifiant unique du message.
  2. L'identifiant unique extrait est utilisé pour rechercher un QCanMessageDescription approprié dans la liste de tous les messageDescriptions() disponibles.
  3. Le QCanMessageDescription correspondant est utilisé pour extraire les valeurs du signal de la trame.

Cette méthode renvoie un QCanFrameProcessor::ParseResult, qui contient à la fois l'identifiant unique extrait et un QVariantMap contenant les signaux et leurs valeurs. Les clés de la carte sont les signal names, et les valeurs de la carte sont les valeurs des signaux.

Si une erreur s'est produite lors du décodage, un résultat contenant une adresse signalValues vide est renvoyé. Dans ce cas, les méthodes error() et errorString() peuvent être utilisées pour obtenir des informations sur les erreurs.

Remarque : l'appel à cette méthode efface toutes les erreurs et tous les avertissements précédents.

Voir aussi addMessageDescriptions(), error(), errorString() et warnings().

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

Construit un cadre de données CAN en utilisant uniqueId et signalValues et renvoie le cadre construit QCanBusFrame.

Le paramètre signalValues doit contenir les noms des signaux en tant que clés et les valeurs attendues des signaux en tant que valeurs.

Le processus de création de la trame est le suivant :

  1. Le site uniqueId est utilisé pour trouver une description de message appropriée.
  2. Si la description du message est trouvée, un QCanBusFrame avec une charge utile de la taille spécifiée est créé. Tous les octets de la charge utile, ainsi que l'identifiant de la trame, sont initialisés à zéro.
  3. La commande uniqueIdDescription() est utilisée pour encoder le message uniqueId dans la partie appropriée de la trame (identifiant de trame ou charge utile).
  4. La description du message sélectionné est utilisée pour encoder tous les signalValues dans la trame.
  5. Les parties de la trame qui ne sont pas couvertes par un identifiant unique ou par des descriptions de signaux existantes ne sont pas touchées (et contiennent donc toujours des zéros).

Si une erreur s'est produite pendant l'encodage, un QCanBusFrame invalide est renvoyé. Dans ce cas, les méthodes error() et errorString() peuvent être utilisées pour obtenir des informations sur les erreurs.

Remarque : l'appel à cette méthode efface toutes les erreurs et tous les avertissements précédents.

Voir aussi addMessageDescriptions(), error(), errorString() et warnings().

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

Remplace les descriptions de messages actuellement utilisées par ce processeur de trames par les nouvelles descriptions de messages descriptions.

Voir également messageDescriptions(), addMessageDescriptions() et clearMessageDescriptions().

void QCanFrameProcessor::setUniqueIdDescription(const QCanUniqueIdDescription &description)

Définit la description de l'identificateur unique à description.

La description de l'identificateur unique doit être valide afin d'encoder ou de décoder les trames du bus CAN. Voir la documentation de la classe QCanUniqueIdDescription pour plus de détails.

Voir également uniqueIdDescription() et QCanUniqueIdDescription.

QCanUniqueIdDescription QCanFrameProcessor::uniqueIdDescription() const

Renvoie la description de l'identifiant unique.

La description de l'identificateur unique doit être valide afin d'encoder ou de décoder les trames du bus CAN. Voir la documentation de la classe QCanUniqueIdDescription pour plus de détails.

Voir également setUniqueIdDescription() et QCanUniqueIdDescription.

QStringList QCanFrameProcessor::warnings() const

Renvoie la liste des avertissements générés lors du dernier appel d'encodage ou de décodage.

Voir aussi error(), errorString(), prepareFrame(), et 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.