Auf dieser Seite

QCanBusFrame Class

QCanBusFrame ist eine Containerklasse, die einen einzelnen CAN-Frame darstellt. Mehr...

Header: #include <QCanBusFrame>
CMake: find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake: QT += serialbus

Öffentliche Typen

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

Öffentliche Funktionen

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)

Ausführliche Beschreibung

QCanBusDevice QCanBusFrame kann für Lese- und Schreibvorgänge verwendet werden. Es enthält die Frame-Kennung und die Datenlast. QCanBusFrame enthält den Zeitstempel des Zeitpunkts, zu dem es gelesen wurde.

Siehe auch „ QCanBusFrame::FrameId“ , „ QCanBusFrame::TimeStamp “ und „ payload()“.

Dokumentation zum Mitgliedstyp

enum QCanBusFrame::FrameError
flags QCanBusFrame::FrameErrors

Diese Enumeration beschreibt die möglichen Fehlertypen.

KonstanteWertBeschreibung
QCanBusFrame::NoError0Es ist kein Fehler aufgetreten.
QCanBusFrame::TransmissionTimeoutError(1 << 0)Die Übertragung ist abgelaufen.
QCanBusFrame::LostArbitrationError(1 << 1)Der Frame konnte aufgrund einer verlorenen Bus-Arbitrierung nicht gesendet werden.
QCanBusFrame::ControllerError(1 << 2)Der Controller hat einen Fehler festgestellt.
QCanBusFrame::ProtocolViolationError(1 << 3)Es ist ein Protokollverstoß aufgetreten.
QCanBusFrame::TransceiverError(1 << 4)Es ist ein Transceiver-Fehler aufgetreten.
QCanBusFrame::MissingAcknowledgmentError(1 << 5)Für die Übertragung wurde keine Bestätigung empfangen.
QCanBusFrame::BusOffError(1 << 6)Der CAN-Bus ist offline.
QCanBusFrame::BusError(1 << 7)Es ist ein CAN-Bus-Fehler aufgetreten.
QCanBusFrame::ControllerRestartError(1 << 8)Das Steuergerät wurde neu gestartet.
QCanBusFrame::UnknownError(1 << 9)Es ist ein unbekannter Fehler aufgetreten.
QCanBusFrame::AnyError0x1FFFFFFFUTrifft auf alle anderen Fehlertypen zu.

Der Typ „FrameErrors“ ist eine Typdefinition für „QFlags<FrameError>“. Er speichert eine ODER-Kombination von „FrameError“-Werten.

Siehe auch „ error()“ und „ setError()“.

[alias] QCanBusFrame::FrameId

Ein eigener Typ für eine CAN-Bus-Frame-Kennung mit entweder 11 oder 29 Bit.

Siehe auch frameId() und setFrameId().

enum QCanBusFrame::FrameType

Diese Enumeration beschreibt den Typ des CAN-Frames.

KonstanteWertBeschreibung
QCanBusFrame::UnknownFrame0x0Der Rahmentyp ist unbekannt.
QCanBusFrame::DataFrame0x1Dieser Wert steht für einen Datenrahmen.
QCanBusFrame::ErrorFrame0x2Dieser Wert steht für einen Fehlerrahmen.
QCanBusFrame::RemoteRequestFrame0x3Dieser Wert steht für eine Remote-Anfrage.
QCanBusFrame::InvalidFrame0x4Dieser Wert steht für ein ungültiges Frame. Dieser Typ wird für die Fehlermeldung verwendet.

Siehe auch frameType() und setFrameType().

Dokumentation zu den Mitgliedsfunktionen

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

Erstellt einen CAN-Frame mit den angegebenen Parametern type.

Siehe auch QCanBusFrame::FrameType und setFrameType().

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

Erstellt einen CAN-Frame mit „ identifier “ als Frame-Kennung und „ data “ als Nutzdaten.

Siehe auch QCanBusFrame::FrameId.

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

Gibt den Fehler des aktuellen Fehlerrahmens zurück. Wenn der Rahmen kein „ ErrorFrame “ ist, gibt diese Funktion „ NoError “ zurück.

Siehe auch „ QCanBusFrame::FrameError “ und „ setError()“.

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

Gibt die CAN-Frame-Kennung zurück. Verwendet der CAN-Frame das erweiterte Frame-Format, hat die Kennung maximal 29 Bit; andernfalls 11 Bit.

Ist der Frame vom Typ „ ErrorFrame “, ist diese ID immer 0.

Siehe auch „ QCanBusFrame::FrameId“ , „ setFrameId()“ und „ hasExtendedFrameFormat()“.

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

Gibt den Typ des Frames zurück.

Siehe auch „ QCanBusFrame::FrameType “ und „ setFrameType()“.

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

Gibt „ true “ zurück, wenn das CAN „Flexible Data-Rate with Bitrate Switch“ verwendet, um die Nutzdaten mit einer höheren Datenbitrate zu übertragen.

Siehe auch „ setBitrateSwitch()“ und „ QCanBusDevice::DataBitRateKey “.

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

Gibt „ true “ zurück, wenn das CAN „Flexible Data-Rate“ verwendet und der Fehlerzustandsindikator gesetzt ist.

Dieses Flag wird von der CAN-FD-Hardware des Senders gesetzt, um den Fehlerzustand des Senders anzuzeigen.

Siehe auch setErrorStateIndicator().

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

Gibt „ true “ zurück, wenn der CAN-Frame einen 29-Bit-Identifikator verwendet; andernfalls „ false “, was einen 11-Bit-Identifikator bedeutet.

Siehe auch setExtendedFrameFormat() und frameId().

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

Gibt „ true “ zurück, wenn der CAN-Frame die flexible Datenrate verwendet, die bis zu 64 Datenbytes zulässt; andernfalls „ false “, was einer Nutzlast von höchstens 8 Byte entspricht.

Siehe auch „ setFlexibleDataRateFormat()“ und „ payload()“.

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

Gibt „ true “ zurück, wenn es sich bei dem Frame um einen lokalen Echo-Frame handelt, d. h. um einen Frame, der als Echo empfangen wird, nachdem ein Frame mit demselben Inhalt erfolgreich an den CAN-Bus gesendet wurde. Dieses Flag wird sowohl für Frames gesetzt, die von der Anwendung selbst gesendet werden, als auch für Frames, die von anderen auf demselben System laufenden Anwendungen gesendet werden.

QCanBusDevice::ReceiveOwnKey Muss auf „true“ gesetzt sein, um Echo-Frames zu empfangen.

Siehe auch setLocalEcho(), QCanBusDevice::ReceiveOwnKey und QCanBusDevice::LoopbackKey.

[noexcept] bool QCanBusFrame::isValid() const

Gibt „ false “ zurück, wenn „ frameType()“ den Wert „ InvalidFrame “ hat, „ hasExtendedFrameFormat()“ nicht gesetzt ist, obwohl „ frameId()“ länger als 11 Bit ist, oder wenn die Nutzdatenlänge die maximal zulässige Nutzdatenlänge von 64 Byte (bei aktiviertem Flexible-Data-Rate-Modus ) bzw. 8 Byte (bei deaktiviertem Flexible-Data-Rate-Modus) überschreitet. Wenn „ frameType()“ den Wert „ RemoteRequestFrame “ hat und gleichzeitig der „Flexible Data-Rate “-Modus aktiviert ist, wird zudem „ false “ zurückgegeben.

Andernfalls gibt diese Funktion „ true “ zurück.

QByteArray QCanBusFrame::payload() const

Gibt die Datenlast des Frames zurück.

Siehe auch „ setPayload()“.

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

Setzen Sie das Flag „Flexible Data-Rate “ ( Bitrate-Umschaltung ) auf „ bitrateSwitch “. Das Datenfeld von Frames mit diesem Flag wird mit einer höheren Datenbitrate übertragen.

Siehe auch „ hasBitrateSwitch()“ und „ QCanBusDevice::DataBitRateKey “.

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

Legt den Typ „ error “ des Frames fest. Diese Funktion führt keine Aktion aus, wenn „ frameType()“ kein „ ErrorFrame “ ist.

Siehe auch „ QCanBusFrame::FrameError “ und „ error()“.

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

Setzen Sie das Flag „Flexible Data-Rate “ des Fehlerzustandsindikators auf „ errorStateIndicator “.

Beim Senden von CAN-FD-Frames wird dieses Flag automatisch von der CAN-FD-Hardware gesetzt. „ QCanBusFrame::setErrorStateIndicator() “ sollte nur für Anwendungstests verwendet werden, z. B. auf virtuellen CAN-FD-Bussen.

Siehe auch „ hasErrorStateIndicator“ ().

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

Setzt das Flag für das erweiterte Rahmenformat auf „ isExtended “.

Siehe auch ` hasExtendedFrameFormat()`.

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

Setzt das Flag für die flexible Datenrate auf „ isFlexibleData “. Diese Frames können auf unterstützenden Controllern mit einer höheren Geschwindigkeit gesendet werden. Zudem wird die maximale Nutzdatenlänge auf 64 Byte erhöht.

Siehe auch ` hasFlexibleDataRateFormat()`.

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

Legt die Kennung des CAN-Frames auf „ newFrameId “ fest.

Die maximale Größe einer CAN-Rahmen-ID beträgt 11 Bit; durch Unterstützung des erweiterten CAN-Rahmenformats kann sie auf bis zu 29 Bit erweitert werden. Die Einstellung für das erweiterte CAN-Rahmenformat wird automatisch vorgenommen, wenn eine „ newFrameId “ mit mehr als 11 Bit übergeben wird.

Wenn das Format erweitert ist und ein „ newFrameId “ mit bis zu 11 Bits oder weniger übergeben wird, wird die Einstellung für das erweiterte CAN-Frame-Format nicht geändert.

Siehe auch „ QCanBusFrame::FrameId“ , „ frameId()“ und „ hasExtendedFrameFormat()“.

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

Legt den Typ des Frames auf „ newType “ fest.

Siehe auch „ QCanBusFrame::FrameType “ und „ frameType()“.

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

Setzen Sie das Flag „Local Echo “ auf „ echo “.

Beim Senden von CAN-Bus-Frames mit aktiviertem „ QCanBusDevice::ReceiveOwnKey “ werden alle erfolgreich gesendeten Frames in die Empfangswarteschlange zurückgesendet und als „Local Echo“-Frames gekennzeichnet. „ QCanBusFrame::setLocalEcho “ sollte daher nur für Anwendungstests verwendet werden, z. B. auf virtuellen CAN-Bussen.

Siehe auch „ hasLocalEcho“ ().

void QCanBusFrame::setPayload(const QByteArray &data)

Legt „ data “ als Nutzdaten für den CAN-Frame fest. Die maximale Größe der Nutzdaten beträgt 8 Byte, kann jedoch durch Unterstützung der flexiblen Datenrate auf bis zu 64 Byte erweitert werden. Wenn „ data “ mehr als 8 Byte enthält, wird das Flag für die flexible Datenrate automatisch gesetzt. Die „Flexible Data-Rate“ muss auf dem „ QCanBusDevice “ aktiviert werden, indem „ QCanBusDevice::CanFdKey “ gesetzt wird.

Frames vom Typ „ RemoteRequestFrame “ (RTR) haben keine Nutzlast. Sie müssen jedoch einen Hinweis auf die erwartete Nutzlaslänge der Antwort enthalten. Um die erwartete Länge festzulegen, muss eine Scheinnutzlast gesetzt werden, deren Länge der erwarteten Nutzlaslänge der Antwort entspricht. Eine Möglichkeit hierfür könnte wie folgt aussehen:

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

Siehe auch „ payload “ () und „ hasFlexibleDataRateFormat “ ().

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

Legt „ ts “ als Zeitstempel für den CAN-Frame fest. In der Regel wird diese Funktion nicht benötigt, da der Zeitstempel beim Lesevorgang erstellt wird und beim Schreibvorgang nicht benötigt wird.

Siehe auch „ timeStamp()“ und „ QCanBusFrame::TimeStamp “.

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

Gibt den Zeitstempel des Frames zurück.

Siehe auch „ QCanBusFrame::TimeStamp “ und „ QCanBusFrame::setTimeStamp()“.

QString QCanBusFrame::toString() const

Gibt den CAN-Frame als formatierte Zeichenfolge zurück.

Die Ausgabe enthält den CAN-Identifikator im Hexadezimalformat, rechtsbündig auf 32 Bit aufgefüllt, gefolgt von der Datenlänge in eckigen Klammern und der Nutzlast im Hexadezimalformat.

Standard-Identifikatoren werden mit Leerzeichen aufgefüllt, während erweiterte Identifikatoren mit Nullen aufgefüllt werden.

Typische Ausgaben sind:

(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

Verwandte Themen für Nichtmitglieder

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

Schreibt einen „ frame “ in den Stream (out) und gibt eine Referenz darauf zurück.

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

Liest ein „ frame “ aus dem Stream (in) und gibt eine Referenz darauf zurück.

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