Sur cette page

QCanBusFrame Class

QCanBusFrame est une classe conteneur représentant une seule trame CAN. Plus d'informations...

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 des opérations de lecture et d'écriture. Il contient l'identifiant de la trame et la charge utile des données. QCanBusFrame contient l'horodatage du moment où il a été lu.

Voir aussi QCanBusFrame::FrameId, QCanBusFrame::TimeStamp, et payload().

Type de membre Documentation

enum QCanBusFrame::FrameError
flags QCanBusFrame::FrameErrors

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

ConstanteValeurDescription de l'erreur
QCanBusFrame::NoError0Aucune erreur ne s'est produite.
QCanBusFrame::TransmissionTimeoutError(1 << 0)La transmission a dépassé le temps imparti.
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 pas reçu d'accusé de réception.
QCanBusFrame::BusOffError(1 << 6)Le bus CAN est hors ligne.
QCanBusFrame::BusError(1 << 7)Une erreur s'est produite sur le bus CAN.
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'erreur.

Le type FrameErrors est un typedef pour QFlags<FrameError>. Il stocke une combinaison OU de valeurs FrameError.

Voir également error() et setError().

[alias] QCanBusFrame::FrameId

Type distinct d'identificateur de trame de bus CAN avec 11 ou 29 bits.

Voir également frameId() et setFrameId().

enum QCanBusFrame::FrameType

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

ConstanteValeurDescription du type de trame
QCanBusFrame::UnknownFrame0x0Le type de trame est inconnu.
QCanBusFrame::DataFrame0x1Cette valeur représente une trame de données.
QCanBusFrame::ErrorFrame0x2Cette valeur représente une trame d'erreur.
QCanBusFrame::RemoteRequestFrame0x3Cette valeur représente une requête à distance.
QCanBusFrame::InvalidFrame0x4Cette valeur représente une trame non valide. Ce type est utilisé pour les rapports d'erreur.

Voir également frameType() et setFrameType().

Documentation des fonctions membres

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

Construit une trame CAN du type spécifié type.

Voir aussi QCanBusFrame::FrameType et setFrameType().

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

Construit une trame CAN en utilisant identifier comme identificateur de trame et data comme charge utile.

Voir aussi QCanBusFrame::FrameId.

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

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

Voir aussi 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 a un maximum de 29 bits ; sinon, il a 11 bits.

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 du cadre.

Voir aussi QCanBusFrame::FrameType et setFrameType().

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

Renvoie true si le CAN utilise 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 Flexible Data-Rate avec l'indicateur d'état d'erreur activé.

Ce drapeau est activé par le matériel CAN FD de l'émetteur pour indiquer l'état d'erreur de l'émetteur.

Voir aussi setErrorStateIndicator().

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

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

Voir aussi setExtendedFrameFormat() et frameId().

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

Renvoie true si la trame CAN utilise le Flexible Data-Rate qui autorise jusqu'à 64 octets de données, sinon false, ce qui implique un maximum de 8 octets de données utiles.

Voir aussi setFlexibleDataRateFormat() et payload().

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

Renvoie true si la trame est une trame écho locale, c'est-à-dire une trame reçue comme écho lorsque la trame ayant le même contenu a été envoyée avec succès sur le bus CAN. Ce drapeau est activé pour les trames envoyées par l'application elle-même ainsi que pour les trames envoyées par d'autres applications fonctionnant sur le même système.

QCanBusDevice::ReceiveOwnKey doit être fixé à true pour recevoir des trames d'écho.

Voir aussi setLocalEcho(), QCanBusDevice::ReceiveOwnKey, et QCanBusDevice::LoopbackKey.

[noexcept] bool QCanBusFrame::isValid() const

Renvoie false si frameType() est InvalidFrame, hasExtendedFrameFormat() n'est pas défini bien que frameId() soit plus long que 11 bits ou que la charge utile soit plus longue que la longueur maximale autorisée de 64 octets si le mode Flexible Data-Rate est activé ou de 8 octets s'il est désactivé. Si frameType() est RemoteRequestFrame et que le mode Flexible Data-Rate est activé en même temps, false est également renvoyé.

Sinon, cette fonction renvoie true.

QByteArray QCanBusFrame::payload() const

Renvoie les données utiles de la trame.

Voir aussi setPayload().

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

Attribuez la valeur bitrateSwitch à l'indicateur Flexible Data-Rate Bitrate Switch. Le champ de données des trames dotées de cet indicateur est transféré à un débit binaire plus élevé.

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

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

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

Voir aussi QCanBusFrame::FrameError et error().

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

Réglez l'indicateur d'état d'erreur (Error State Indicator ) du Flexible Data-Rate flag sur errorStateIndicator.

Lors de l'envoi de trames CAN FD, ce drapeau est automatiquement activé par le matériel CAN FD. QCanBusFrame::setErrorStateIndicator() ne doit être utilisé que pour des tests d'application, par exemple sur des bus CAN FD virtuels.

Voir également hasErrorStateIndicator().

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

Attribue la valeur isExtended à l'indicateur de format de trame étendu.

Voir aussi hasExtendedFrameFormat().

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

Définit l'indicateur Flexible Data-Rate sur isFlexibleData. Ces trames peuvent être envoyées à une vitesse plus élevée sur les contrôleurs qui les prennent en charge. En outre, 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 à newFrameId.

La taille maximale d'un identificateur de trame CAN est de 11 bits et peut être étendue jusqu'à 29 bits en prenant en charge le format de trame CAN étendu. Le réglage du format de trame CAN étendu est automatiquement défini lorsqu'une adresse newFrameId d'une taille supérieure à 11 bits est fournie.

Lorsque le format est étendu et qu'un newFrameId de 11 bits ou moins est transmis, le réglage du format de trame étendu CAN n' est pas modifié.

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

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

Définit le type de cadre à newType.

Voir aussi QCanBusFrame::FrameType et frameType().

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

Réglez l'indicateur Local Echo sur echo.

Lors de l'envoi de trames de bus CAN avec QCanBusDevice::ReceiveOwnKey activé, toutes les trames envoyées avec succès sont répercutées dans la file d'attente de réception et marquées comme des trames à écho local. QCanBusFrame::setLocalEcho ne devrait donc être utilisé que pour des 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 pour la trame CAN. La taille maximale de la charge utile est de 8 octets, qui peut être étendue jusqu'à 64 octets en prenant en charge le débit de données flexible. Si data contient plus de 8 octets, le drapeau Flexible Data-Rate est automatiquement activé. Le débit de données flexible doit être activé sur le site QCanBusDevice en réglant le paramètre QCanBusDevice::CanFdKey.

Les trames de type RemoteRequestFrame (RTR) n'ont pas de charge utile. Cependant, elles doivent fournir une indication de la longueur attendue de la charge utile de la réponse. Pour définir la longueur attendue, il est nécessaire de définir une fausse charge utile dont la longueur correspond à la longueur attendue de la charge utile de la réponse. Une façon de procéder pourrait être la suivante :

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 nécessaire lors de l'opération d'écriture.

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

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

Renvoie l'horodatage de la trame.

Voir aussi 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, ajusté à droite sur 32 bits, suivi de la longueur des données entre crochets et de la charge utile au format hexadécimal.

Les identificateurs standard sont remplis d'espaces, tandis que les identificateurs étendus sont remplis de zéros.

Les sorties typiques sont les suivantes :

(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

Non-membres apparentés

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 une adresse frame dans le flux (in) et renvoie une référence à cette adresse.

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