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 |
Éléments non membres associés
| 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.
| Constante | Valeur | Description |
|---|---|---|
QCanBusFrame::NoError | 0 | Aucune 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::AnyError | 0x1FFFFFFFU | Correspond à 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.
| Constante | Valeur | Description |
|---|---|---|
QCanBusFrame::UnknownFrame | 0x0 | Le type de trame est inconnu. |
QCanBusFrame::DataFrame | 0x1 | Cette valeur représente une trame de données. |
QCanBusFrame::ErrorFrame | 0x2 | Cette valeur représente un tableau d'erreurs. |
QCanBusFrame::RemoteRequestFrame | 0x3 | Cette valeur représente une requête à distance. |
QCanBusFrame::InvalidFrame | 0x4 | Cette 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 identifierContenu 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.