Sur cette page

QCanBusFrame Class

QCanBusFrame est une classe conteneur représentant une trame CAN unique. En savoir plus...

En-tête : #include <QCanBusFrame>
CMake : find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake : QT += serialbus

Types publics

class TimeStamp
enum FrameError { NoError, TransmissionTimeoutError, LostArbitrationError, ControllerError, ProtocolViolationError, …, AnyError }
flags FrameErrors
FrameId
enum FrameType { UnknownFrame, DataFrame, ErrorFrame, RemoteRequestFrame, InvalidFrame }

Fonctions publiques

QCanBusFrame(QCanBusFrame::FrameType type = DataFrame)
QCanBusFrame(QCanBusFrame::FrameId identifier, const QByteArray &data)
QCanBusFrame::FrameErrors error() const
QCanBusFrame::FrameId frameId() const
QCanBusFrame::FrameType frameType() const
bool hasBitrateSwitch() const
bool hasErrorStateIndicator() const
bool hasExtendedFrameFormat() const
bool hasFlexibleDataRateFormat() const
bool hasLocalEcho() const
bool isValid() const
QByteArray payload() const
void setBitrateSwitch(bool bitrateSwitch)
void setError(QCanBusFrame::FrameErrors error)
void setErrorStateIndicator(bool errorStateIndicator)
void setExtendedFrameFormat(bool isExtended)
void setFlexibleDataRateFormat(bool isFlexibleData)
void setFrameId(QCanBusFrame::FrameId newFrameId)
void setFrameType(QCanBusFrame::FrameType newType)
void setLocalEcho(bool echo)
void setPayload(const QByteArray &data)
void setTimeStamp(QCanBusFrame::TimeStamp ts)
QCanBusFrame::TimeStamp timeStamp() const
QString toString() const
QDataStream &operator<<(QDataStream &out, const QCanBusFrame &frame)
QDataStream &operator>>(QDataStream &in, QCanBusFrame &frame)

Description détaillée

QCanBusDevice QCanBusFrame peut être utilisé pour les opérations de lecture et d’écriture. Il contient l’identifiant de la trame et la charge utile. QCanBusFrame contient l’horodatage du moment où il a été lu.

Voir également QCanBusFrame::FrameId, QCanBusFrame::TimeStamp et payload().

Documentation sur les types membres

enum QCanBusFrame::FrameError
flags QCanBusFrame::FrameErrors

Cette énumération décrit les types d'erreurs possibles.

ConstanteValeurDescription
QCanBusFrame::NoError0Aucune erreur ne s’est produite.
QCanBusFrame::TransmissionTimeoutError(1 << 0)Le délai de transmission a expiré.
QCanBusFrame::LostArbitrationError(1 << 1)La trame n'a pas pu être envoyée en raison d'une perte d'arbitrage sur le bus.
QCanBusFrame::ControllerError(1 << 2)Le contrôleur a rencontré une erreur.
QCanBusFrame::ProtocolViolationError(1 << 3)Une violation de protocole s'est produite.
QCanBusFrame::TransceiverError(1 << 4)Une erreur de l'émetteur-récepteur s'est produite.
QCanBusFrame::MissingAcknowledgmentError(1 << 5)La transmission n'a reçu aucun accusé de réception.
QCanBusFrame::BusOffError(1 << 6)Le bus CAN est hors ligne.
QCanBusFrame::BusError(1 << 7)Une erreur de bus CAN s’est produite.
QCanBusFrame::ControllerRestartError(1 << 8)Le contrôleur a redémarré.
QCanBusFrame::UnknownError(1 << 9)Une erreur inconnue s'est produite.
QCanBusFrame::AnyError0x1FFFFFFFUCorrespond à tous les autres types d'erreurs.

Le type FrameErrors est une définition de type (typedef) pour QFlags<FrameError>. Il stocke une combinaison OU de valeurs FrameError.

Voir également error() et setError().

[alias] QCanBusFrame::FrameId

Un type distinct pour un identifiant de trame de bus CAN de 11 ou 29 bits.

Voir également frameId() et setFrameId().

enum QCanBusFrame::FrameType

Cette énumération décrit le type de trame CAN.

ConstanteValeurDescription
QCanBusFrame::UnknownFrame0x0Le type de trame est inconnu.
QCanBusFrame::DataFrame0x1Cette valeur représente une trame de données.
QCanBusFrame::ErrorFrame0x2Cette valeur représente un tableau d'erreurs.
QCanBusFrame::RemoteRequestFrame0x3Cette valeur représente une requête à distance.
QCanBusFrame::InvalidFrame0x4Cette valeur représente un cadre non valide. Ce type est utilisé pour le signalement des erreurs.

Voir également frameType() et setFrameType().

Documentation des fonctions membres

[explicit noexcept] QCanBusFrame::QCanBusFrame(QCanBusFrame::FrameType type = DataFrame)

Crée une trame CAN à partir de l'type spécifiée.

Voir également QCanBusFrame::FrameType et setFrameType().

[explicit] QCanBusFrame::QCanBusFrame(QCanBusFrame::FrameId identifier, const QByteArray &data)

Crée une trame CAN en utilisant identifier comme identifiant de trame et data comme charge utile.

Voir également QCanBusFrame::FrameId.

[constexpr noexcept] QCanBusFrame::FrameErrors QCanBusFrame::error() const

Renvoie l'erreur de la trame d'erreur actuelle. Si la trame n'est pas de type ` ErrorFrame`, cette fonction renvoie ` NoError`.

Voir également ` QCanBusFrame::FrameError ` et ` setError()`.

[constexpr noexcept] QCanBusFrame::FrameId QCanBusFrame::frameId() const

Renvoie l'identifiant de la trame CAN. Si la trame CAN utilise le format de trame étendu, l'identifiant comporte au maximum 29 bits ; sinon, il en comporte 11.

Si la trame est de type « ErrorFrame », cet identifiant est toujours égal à 0.

Voir également QCanBusFrame::FrameId, setFrameId() et hasExtendedFrameFormat().

[constexpr noexcept] QCanBusFrame::FrameType QCanBusFrame::frameType() const

Renvoie le type de la trame.

Voir également QCanBusFrame::FrameType et setFrameType().

[constexpr noexcept] bool QCanBusFrame::hasBitrateSwitch() const

Renvoie « true » si le réseau CAN utilise le mode « Flexible Data-Rate with Bitrate Switch » pour transférer les données utiles à un débit binaire plus élevé.

Voir également setBitrateSwitch() et QCanBusDevice::DataBitRateKey.

[constexpr noexcept] bool QCanBusFrame::hasErrorStateIndicator() const

Renvoie « true » si le CAN utilise le débit de données flexible (Flexible Data-Rate ) et que l'indicateur d'état d'erreur est activé.

Cet indicateur est activé par le matériel CAN FD de l’émetteur pour signaler l’état d’erreur de ce dernier.

Voir également setErrorStateIndicator().

[constexpr noexcept] bool QCanBusFrame::hasExtendedFrameFormat() const

Renvoie « true » si la trame CAN utilise un identifiant de 29 bits ; sinon, « false », ce qui implique un identifiant de 11 bits.

Voir également setExtendedFrameFormat() et frameId().

[constexpr noexcept] bool QCanBusFrame::hasFlexibleDataRateFormat() const

Renvoie « true » si la trame CAN utilise le débit de données flexible (Flexible Data-Rate), qui autorise jusqu'à 64 octets de données ; sinon, « false », ce qui implique une charge utile maximale de 8 octets.

Voir également setFlexibleDataRateFormat() et payload().

[constexpr noexcept] bool QCanBusFrame::hasLocalEcho() const

Renvoie « true » si la trame est une trame d'écho locale, c'est-à-dire une trame reçue en écho après l'envoi réussi d'une trame au même contenu sur le bus CAN. Cet indicateur est activé pour les trames envoyées par l'application elle-même ainsi que pour celles envoyées par d'autres applications s'exécutant sur le même système.

QCanBusDevice::ReceiveOwnKey Doit être défini sur `true` pour recevoir des trames d'écho.

Voir également setLocalEcho(), QCanBusDevice::ReceiveOwnKey et QCanBusDevice::LoopbackKey.

[noexcept] bool QCanBusFrame::isValid() const

Renvoie « false » si la valeur de « frameType() » est « InvalidFrame », si « hasExtendedFrameFormat() » n’est pas défini alors que « frameId() » est supérieur à 11 bits, ou si la charge utile dépasse la longueur maximale autorisée de 64 octets lorsque le mode « Flexible Data-Rate » est activé, ou de 8 octets lorsqu’il est désactivé. Si frameType() vaut RemoteRequestFrame et que le mode « Flexible Data-Rate » est activé, false est également renvoyé.

Dans le cas contraire, cette fonction renvoie « true ».

QByteArray QCanBusFrame::payload() const

Renvoie la charge utile de données de la trame.

Voir aussi setPayload().

[constexpr noexcept] void QCanBusFrame::setBitrateSwitch(bool bitrateSwitch)

Définissez l'indicateur « Flexible Data-Rate » (Débit de données flexible) sur « Bitrate Switch » (Commutation de débit) à l'adresse bitrateSwitch. Le champ de données des trames comportant cet indicateur est transféré à un débit de données plus élevé.

Voir également « hasBitrateSwitch() » et « QCanBusDevice::DataBitRateKey ».

[constexpr] void QCanBusFrame::setError(QCanBusFrame::FrameErrors error)

Définit le type d'error s du cadre. Cette fonction ne fait rien si frameType() n'est pas un ErrorFrame.

Voir également QCanBusFrame::FrameError et error().

[constexpr noexcept] void QCanBusFrame::setErrorStateIndicator(bool errorStateIndicator)

Définissez l'indicateur d'état d'erreur du drapeau « Flexible Data-Rate » sur « errorStateIndicator ».

Lors de l'envoi de trames CAN FD, cet indicateur est automatiquement activé par le matériel CAN FD. La valeur « QCanBusFrame::setErrorStateIndicator() » ne doit être utilisée que pour les tests d'application, par exemple sur des bus CAN FD virtuels.

Voir également « hasErrorStateIndicator » ().

[constexpr noexcept] void QCanBusFrame::setExtendedFrameFormat(bool isExtended)

Définit l'indicateur de format d'image étendu sur « isExtended ».

Voir également hasExtendedFrameFormat().

[constexpr noexcept] void QCanBusFrame::setFlexibleDataRateFormat(bool isFlexibleData)

Active l'indicateur « Flexible Data-Rate » (débit de données flexible) sur la valeur « isFlexibleData ». Ces trames peuvent être transmises à un débit plus élevé sur les contrôleurs compatibles. De plus, la limite de longueur de la charge utile est portée à 64 octets.

Voir également hasFlexibleDataRateFormat().

[constexpr] void QCanBusFrame::setFrameId(QCanBusFrame::FrameId newFrameId)

Définit l'identifiant de la trame CAN sur « newFrameId ».

La taille maximale d’un identifiant de trame CAN est de 11 bits ; elle peut être étendue jusqu’à 29 bits grâce à la prise en charge du format de trame CAN étendu. Le paramètre de format de trame CAN étendu est automatiquement activé lorsqu’un newFrameId de plus de 11 bits est fourni.

Lorsque le format est étendu et qu’un identifiant de trame CAN ( newFrameId ) de 11 bits ou moins est transmis, le paramètre du format de trame CAN étendu n’ est pas modifié.

Voir également QCanBusFrame::FrameId, frameId() et hasExtendedFrameFormat().

[constexpr noexcept] void QCanBusFrame::setFrameType(QCanBusFrame::FrameType newType)

Définit le type du cadre sur « newType ».

Voir également QCanBusFrame::FrameType et frameType().

[constexpr noexcept] void QCanBusFrame::setLocalEcho(bool echo)

Activez l'indicateur « Local Echo » sur « echo ».

Lors de l'envoi de trames CAN avec l'option « QCanBusDevice::ReceiveOwnKey » activée, toutes les trames envoyées avec succès sont renvoyées vers la file d'attente de réception et marquées comme trames d'écho local. L'option « QCanBusFrame::setLocalEcho » ne doit donc être utilisée que pour les tests d'application, par exemple sur des bus CAN virtuels.

Voir également hasLocalEcho().

void QCanBusFrame::setPayload(const QByteArray &data)

Définit « data » comme charge utile de la trame CAN. La taille maximale de la charge utile est de 8 octets ; elle peut être étendue jusqu’à 64 octets grâce à la prise en charge du débit de données flexible. Si « data » contient plus de 8 octets, l’indicateur de débit de données flexible est automatiquement activé. La fonction « Flexible Data-Rate » doit être activée sur l’ QCanBusDevice e en configurant l’ QCanBusDevice::CanFdKey.

Les trames de type « RemoteRequestFrame » (RTR) ne contiennent pas de charge utile. Elles doivent toutefois fournir une indication de la longueur attendue de la charge utile de la réponse. Pour définir cette longueur attendue, il est nécessaire de définir une fausse charge utile dont la longueur correspond à celle attendue pour la réponse. Voici une méthode possible pour y parvenir :

QCanBusFrame frame(QCanBusFrame::RemoteRequestFrame);
int expectedResponseLength = ...;
frame.setPayload(QByteArray(expectedResponseLength, 0));

Voir également payload() et hasFlexibleDataRateFormat().

[constexpr noexcept] void QCanBusFrame::setTimeStamp(QCanBusFrame::TimeStamp ts)

Définit ts comme horodatage de la trame CAN. En général, cette fonction n'est pas nécessaire, car l'horodatage est créé lors de l'opération de lecture et n'est pas requis lors de l'opération d'écriture.

Voir également timeStamp() et QCanBusFrame::TimeStamp.

[constexpr noexcept] QCanBusFrame::TimeStamp QCanBusFrame::timeStamp() const

Renvoie l'horodatage de l'image.

Voir également ` QCanBusFrame::TimeStamp ` et ` QCanBusFrame::setTimeStamp()`.

QString QCanBusFrame::toString() const

Renvoie la trame CAN sous forme de chaîne formatée.

La sortie contient l'identifiant CAN au format hexadécimal, aligné à droite sur 32 bits, suivi de la longueur des données entre crochets et de la charge utile au format hexadécimal.

Les identifiants standard sont complétés par des espaces, tandis que les identifiants étendus sont complétés par des zéros.

Exemples de résultats :

(Error)                                  - error frame
     7FF   [1]  01                       - data frame with standard identifier
1FFFFFFF   [8]  01 23 45 67 89 AB CD EF  - data frame with extended identifier
     400  [10]  01 23 45 67 ... EF 01 23 - CAN FD frame
     123   [5]  Remote Request           - remote frame with standard identifier
00000234   [0]  Remote Request           - remote frame with extended identifier

Contenu connexe pour les non-membres

QDataStream &operator<<(QDataStream &out, const QCanBusFrame &frame)

Écrit un « frame » dans le flux (out) et renvoie une référence à celui-ci.

QDataStream &operator>>(QDataStream &in, QCanBusFrame &frame)

Lit un objet ` frame ` à partir du flux (in) et renvoie une référence à celui-ci.

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