QCanBusDevice Class
Die Klasse „QCanBusDevice“ ist die Schnittstellenklasse für den CAN-Bus. Mehr...
| Header: | #include <QCanBusDevice> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
| qmake: | QT += serialbus |
| Erbt von: | QObject |
Öffentliche Typen
| struct | Filter |
| enum | CanBusDeviceState { UnconnectedState, ConnectingState, ConnectedState, ClosingState } |
| enum | CanBusError { NoError, ReadError, WriteError, ConnectionError, ConfigurationError, …, TimeoutError } |
| enum class | CanBusStatus { Unknown, Good, Warning, Error, BusOff } |
| enum | ConfigurationKey { RawFilterKey, ErrorFilterKey, LoopbackKey, ReceiveOwnKey, BitRateKey, …, UserKey } |
| enum | Direction { Input, Output, AllDirections } |
| flags | Directions |
Öffentliche Funktionen
| QCanBusDevice(QObject *parent = nullptr) | |
| virtual QCanBusDevice::CanBusStatus | busStatus() |
| void | clear(QCanBusDevice::Directions direction = Direction::AllDirections) |
| QList<QCanBusDevice::ConfigurationKey> | configurationKeys() const |
| QVariant | configurationParameter(QCanBusDevice::ConfigurationKey key) const |
| bool | connectDevice() |
(since 6.2) virtual QCanBusDeviceInfo | deviceInfo() const |
| void | disconnectDevice() |
| QCanBusDevice::CanBusError | error() const |
| QString | errorString() const |
| qint64 | framesAvailable() const |
| qint64 | framesToWrite() const |
| virtual bool | hasBusStatus() const |
| virtual QString | interpretErrorFrame(const QCanBusFrame &frame) = 0 |
| QList<QCanBusFrame> | readAllFrames() |
| QCanBusFrame | readFrame() |
| virtual void | resetController() |
| virtual void | setConfigurationParameter(QCanBusDevice::ConfigurationKey key, const QVariant &value) |
| QCanBusDevice::CanBusDeviceState | state() const |
| virtual bool | waitForFramesReceived(int msecs) |
| virtual bool | waitForFramesWritten(int msecs) |
| virtual bool | writeFrame(const QCanBusFrame &frame) = 0 |
Signale
| void | errorOccurred(QCanBusDevice::CanBusError) |
| void | framesReceived() |
| void | framesWritten(qint64 framesCount) |
| void | stateChanged(QCanBusDevice::CanBusDeviceState state) |
Geschützte Funktionen
| void | clearError() |
| virtual void | close() = 0 |
| QCanBusFrame | dequeueOutgoingFrame() |
| void | enqueueOutgoingFrame(const QCanBusFrame &newFrame) |
| void | enqueueReceivedFrames(const QList<QCanBusFrame> &newFrames) |
| bool | hasOutgoingFrames() const |
| virtual bool | open() = 0 |
| void | setError(const QString &errorText, QCanBusDevice::CanBusError errorId) |
| void | setState(QCanBusDevice::CanBusDeviceState newState) |
Ausführliche Beschreibung
QCanBusDevice kommuniziert mit einem CAN-Plugin und stellt den Benutzern eine komfortable API zur Verfügung. Das CAN-Plugin muss bei der Objekterstellung angegeben werden.
Dokumentation zu den Mitgliedstypen
enum QCanBusDevice::CanBusDeviceState
Diese Enumeration beschreibt alle möglichen Gerätestatus.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanBusDevice::UnconnectedState | 0 | Das Gerät ist nicht verbunden. |
QCanBusDevice::ConnectingState | 1 | Das Gerät wird gerade verbunden. |
QCanBusDevice::ConnectedState | 2 | Das Gerät ist an den CAN-Bus angeschlossen. |
QCanBusDevice::ClosingState | 3 | Das Gerät wird geschlossen. |
enum QCanBusDevice::CanBusError
Diese Enumeration beschreibt alle möglichen Fehlerzustände.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanBusDevice::NoError | 0 | Es sind keine Fehler aufgetreten. |
QCanBusDevice::ReadError | 1 | Bei einem Lesevorgang ist ein Fehler aufgetreten. |
QCanBusDevice::WriteError | 2 | Bei einem Schreibvorgang ist ein Fehler aufgetreten. |
QCanBusDevice::ConnectionError | 3 | Beim Versuch, das Plugin zu öffnen, ist ein Fehler aufgetreten. |
QCanBusDevice::ConfigurationError | 4 | Beim Versuch, einen Konfigurationsparameter festzulegen, ist ein Fehler aufgetreten. |
QCanBusDevice::UnknownError | 5 | Es ist ein unbekannter Fehler aufgetreten. |
QCanBusDevice::OperationError | 6 | Es wurde ein Vorgang versucht, während sich das Gerät in einem Zustand befand, der diesen nicht zuließ. Diese Enumeration wurde in Qt 5.14 eingeführt. |
QCanBusDevice::TimeoutError | 7 | Beim Warten auf geschriebene oder empfangene Frames ist eine Zeitüberschreitung aufgetreten. Diese Enumeration wurde in Qt 5.14 eingeführt. |
enum class QCanBusDevice::CanBusStatus
Diese Enumeration beschreibt mögliche CAN-Bus-Statuswerte.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanBusDevice::CanBusStatus::Unknown | 0 | Der CAN-Bus-Status ist unbekannt (z. B. wird er vom CAN-Plugin nicht unterstützt). |
QCanBusDevice::CanBusStatus::Good | 1 | Der CAN-Controller ist voll funktionsfähig |
QCanBusDevice::CanBusStatus::Warning | 2 | Der CAN-Controller befindet sich im Warnstatus |
QCanBusDevice::CanBusStatus::Error | 3 | Der CAN-Controller befindet sich im Fehlerstatus (sendet keine CAN-Frames mehr) |
QCanBusDevice::CanBusStatus::BusOff | 4 | Der CAN-Controller befindet sich im „Bus-off“-Zustand (vom CAN-Bus getrennt) |
enum QCanBusDevice::ConfigurationKey
Diese Enumeration beschreibt die möglichen Konfigurationsoptionen für die CAN-Bus-Verbindung.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanBusDevice::RawFilterKey | 0 | Diese Konfiguration legt fest, welche Art von CAN-Bus-Frames das aktuelle Gerät akzeptiert. Der erwartete Wert ist „ QList<QCanBusDevice::Filter> “. Durch die Übergabe einer leeren Liste werden alle zuvor festgelegten Filter, einschließlich der Standardfilter, gelöscht. Weitere Details finden Sie unter QCanBusDevice::Filter. |
QCanBusDevice::ErrorFilterKey | 1 | Dieser Schlüssel definiert die Art des Fehlers, der über die aktuelle Verbindung weitergeleitet werden soll. Der zugehörige Wert sollte vom Typ „ QCanBusFrame::FrameErrors “ sein. |
QCanBusDevice::LoopbackKey | 2 | Dieser Schlüssel legt fest, ob das CAN-Bus-Gerät im Loopback-Modus betrieben werden soll. Loopback bedeutet, dass bei jeder Übertragung eines CAN-Frames über den CAN-Bus ein lokales Echo dieses Frames an alle mit diesem CAN-Gerät verbundenen Anwendungen gesendet wird. Der erwartete Wert für diesen Schlüssel ist „ bool “. |
QCanBusDevice::ReceiveOwnKey | 3 | Dieser Schlüssel legt fest, ob dieses CAN-Gerät seine eigenen Sende-Frames empfängt. Dies kann genutzt werden, um zu überprüfen, ob die Übertragung erfolgreich war. Der erwartete Wert für diesen Schlüssel ist „ bool “. |
QCanBusDevice::BitRateKey | 4 | Dieser Schlüssel definiert die CAN-Bitrate in Bit pro Sekunde. Bei CAN FD kann die Nutzlast mit einer höheren Datenbitrate übertragen werden, wenn „ QCanBusFrame::hasBitrateSwitch()“ gesetzt ist. In diesem Fall wird „ QCanBusDevice::BitRateKey “ nur für die CAN-ID-Arbitrierungsphase verwendet. Siehe auch QCanBusDevice::DataBitRateKey |
QCanBusDevice::CanFdKey | 5 | Dieser Schlüssel legt fest, ob das Senden und Empfangen von CAN-FD-Frames aktiviert werden soll. Der erwartete Wert für diesen Schlüssel ist „ bool “. |
QCanBusDevice::DataBitRateKey | 6 | Dieser Schlüssel definiert die CAN-FD-Nutzdaten-Bitrate in Bit pro Sekunde. CAN FD ermöglicht es, die Nutzdaten von Frames mit dem Flag „ QCanBusFrame::hasBitrateSwitch “ mit einer höheren Datenbitrate zu übertragen, nachdem die Arbitrierungsphase mit der Nennbitrate abgeschlossen ist. Dieser Enum-Wert wurde in Qt 5.9 eingeführt. Siehe auch QCanBusDevice::BitRateKey |
QCanBusDevice::ProtocolKey | 7 | Dieser Schlüssel ermöglicht die Angabe eines anderen Protokolls. Derzeit kann dieser Parameter nur im SocketCAN-Plugin festgelegt und verwendet werden. Dieser Enum-Wert wurde in Qt 5.14 eingeführt. |
QCanBusDevice::UserKey | 30 | Dieser Schlüssel definiert den Bereich, in dem benutzerdefinierte Schlüssel beginnen. Er dient in der Regel dazu, plattformspezifische Konfigurationsoptionen zu ermöglichen. |
Siehe auch „ configurationParameter()“.
enum QCanBusDevice::Direction
flags QCanBusDevice::Directions
Diese Enumeration beschreibt mögliche Richtungen der Datenübertragung.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanBusDevice::Input | 1 | Eingaberichtung. |
QCanBusDevice::Output | 2 | Ausgangsrichtung. |
QCanBusDevice::AllDirections | Input | Output | Beide Richtungen, Eingabe und Ausgabe. |
Der Typ „Directions“ ist ein `typedef` für ` QFlags<Direction>`. Er speichert eine ODER-Kombination von „Direction“-Werten.
Dokumentation der Mitgliedsfunktionen
[explicit] QCanBusDevice::QCanBusDevice(QObject *parent = nullptr)
Erstellt ein serielles Busgerät mit dem angegebenen „ parent “.
[virtual] QCanBusDevice::CanBusStatus QCanBusDevice::busStatus()
Gibt den aktuellen CAN-Bus-Status zurück. Wenn der Status nicht abgefragt werden kann, wird QCanBusDevice::UnknownStatus zurückgegeben.
Hinweis: Diese Funktion ist möglicherweise nicht in allen CAN-Plugins implementiert. Weitere Informationen finden Sie in den Hilfeseiten der Plugins. Mit der Funktion ` hasBusStatus()` lässt sich zur Laufzeit überprüfen, ob das verwendete CAN-Plugin die Abfrage des CAN-Bus-Status unterstützt.
Siehe auch „ hasBusStatus()“ und „ resetController()“.
void QCanBusDevice::clear(QCanBusDevice::Directions direction = Direction::AllDirections)
Löscht die Eingabe- oder Ausgabepuffer des Geräts, je nach der Einstellung von ` direction`.
Diese Funktion wirkt sich nur auf die Puffer von ` QCanBusDevice ` aus. Frames, die bereits in den CAN-Treiber oder die CAN-Hardware-Schicht geschrieben wurden oder die noch nicht aus diesen Schichten gelesen wurden, werden durch diese Funktion nicht geleert.
Hinweis: Das Leeren der Ausgabepuffer ist nur bei gepufferten Geräten möglich.
Siehe auch framesAvailable(), readFrame(), framesToWrite() und writeFrame().
[protected] void QCanBusDevice::clearError()
Löscht die Fehler-ID und die für Menschen lesbare Beschreibung des letzten Gerätefehlers.
CAN-Bus-Implementierungen müssen diese Funktion verwenden, um den Fehlerstatus des Geräts zu aktualisieren.
Siehe auch error(), errorOccurred() und setError().
[pure virtual protected] void QCanBusDevice::close()
Diese Funktion ist dafür zuständig, die CAN-Bus-Verbindung zu schließen. Die Implementierung muss sicherstellen, dass die Funktion „ state()“ der Instanz auf „ QCanBusDevice::UnconnectedState “ gesetzt wird.
Die wichtigste Aufgabe dieser Funktion besteht darin, den Socket zum CAN-Gerät zu schließen und ` QCanBusDevice::setState()` aufzurufen.
Siehe auch ` disconnectDevice()`.
QList<QCanBusDevice::ConfigurationKey> QCanBusDevice::configurationKeys() const
Gibt die Liste der von der CAN-Bus-Verbindung verwendeten Schlüssel zurück.
Die Bedeutung der Schlüssel entspricht der unter ConfigurationKey beschriebenen. Wird ein Schlüssel nicht ausdrücklich genannt, wird die Standardeinstellung der Plattform für den jeweiligen Schlüssel verwendet.
QVariant QCanBusDevice::configurationParameter(QCanBusDevice::ConfigurationKey key) const
Gibt den aktuellen Wert zurück, der der Variablen „ ConfigurationKey “ zugewiesen ist: key; andernfalls einen ungültigen Wert: QVariant.
Siehe auch setConfigurationParameter() und configurationKeys().
bool QCanBusDevice::connectDevice()
Verbindet das Gerät mit dem CAN-Bus. Gibt bei Erfolg „ true “ zurück; andernfalls „ false “.
Diese Funktion ruft im Rahmen ihrer Implementierung ` open()` auf.
Siehe auch ` disconnectDevice()`.
[protected] QCanBusFrame QCanBusDevice::dequeueOutgoingFrame()
Gibt den nächsten ` QCanBusFrame ` aus der internen Liste der ausgehenden Frames zurück; andernfalls wird ein ungültiger ` QCanBusFrame` zurückgegeben. Der zurückgegebene Frame wird aus der internen Liste entfernt.
[virtual, since 6.2] QCanBusDeviceInfo QCanBusDevice::deviceInfo() const
Gibt ein ` QCanBusDeviceInfo ` für das aktuelle ` QCanBusDevice` zurück. Wenn die Funktion nicht von einer Unterklasse von ` QCanBusDevice` implementiert wird, wird ein standardkonstruiertes Objekt zurückgegeben.
Diese Funktion wurde in Qt 6.2 eingeführt.
void QCanBusDevice::disconnectDevice()
Trennt das Gerät vom CAN-Bus.
Diese Funktion ruft im Rahmen ihrer Implementierung die Funktion „ close()“ auf.
Hinweis: Diese Funktion sollte nur aufgerufen werden, wenn „ connectDevice()“ den Wert „ true “ zurückgegeben hat.
Siehe auch ` connectDevice()`.
[protected] void QCanBusDevice::enqueueOutgoingFrame(const QCanBusFrame &newFrame)
Fügt „ newFrame “ zur internen Liste der ausgehenden Frames hinzu, auf die über „ writeFrame()“ zugegriffen werden kann.
Unterklassen müssen diese Funktion aufrufen, wenn sie einen neuen Frame schreiben.
[protected] void QCanBusDevice::enqueueReceivedFrames(const QList<QCanBusFrame> &newFrames)
Fügt „ newFrames “ zur internen Liste der Frames hinzu, auf die über „ readFrame()“ zugegriffen werden kann, und löst das Signal „ framesReceived()“ aus.
Unterklassen müssen diese Funktion aufrufen, wenn sie Frames empfangen.
QCanBusDevice::CanBusError QCanBusDevice::error() const
Gibt den zuletzt aufgetretenen Fehler zurück. Der Fehlerwert wird immer auf den zuletzt aufgetretenen Fehler gesetzt und niemals zurückgesetzt.
Siehe auch setError() und errorString().
[signal] void QCanBusDevice::errorOccurred(QCanBusDevice::CanBusError)
Dieses Signal wird ausgegeben, wenn ein Fehler auftritt.
QString QCanBusDevice::errorString() const
Gibt eine für Menschen lesbare Beschreibung des zuletzt aufgetretenen Gerätefehlers zurück.
Siehe auch „ error()“.
qint64 QCanBusDevice::framesAvailable() const
Gibt die Anzahl der verfügbaren Frames zurück. Sind keine Frames verfügbar, gibt diese Funktion 0 zurück.
Siehe auch clear(), readFrame() und readAllFrames().
[signal] void QCanBusDevice::framesReceived()
Dieses Signal wird ausgegeben, wenn ein oder mehrere Frames empfangen wurden. Die Frames sollten mit den Funktionen „ readFrame()“ und „ framesAvailable()“ ausgelesen werden.
qint64 QCanBusDevice::framesToWrite() const
Bei gepufferten Geräten gibt diese Funktion die Anzahl der Frames zurück, die noch geschrieben werden müssen. Bei ungepufferten Geräten gibt diese Funktion immer Null zurück.
Hinweis: Im CAN-Treiber und in der CAN-Hardware-Schichtkann es zu zusätzlicher Pufferung kommen. Wenn diese Funktion also Null zurückgibt, bedeutet dies nicht, dass bereits alle CAN-Frames auf den CAN-Bus geschrieben wurden.
Siehe auch clear() und writeFrame().
[signal] void QCanBusDevice::framesWritten(qint64 framesCount)
Dieses Signal wird jedes Mal ausgesendet, wenn eine Nutzlast aus Frames auf den CAN-Bus geschrieben wurde. Das Argument „ framesCount “ wird auf die Anzahl der Frames gesetzt, die in dieser Nutzlast geschrieben wurden.
[virtual] bool QCanBusDevice::hasBusStatus() const
Gibt „true“ zurück, wenn das CAN-Plugin die Abfrage des CAN-Bus-Status unterstützt.
Siehe auch busStatus().
[protected] bool QCanBusDevice::hasOutgoingFrames() const
Gibt „ true “ zurück, wenn die interne Liste der ausgehenden Frames nicht leer ist; andernfalls wird „ false “ zurückgegeben.
[pure virtual] QString QCanBusDevice::interpretErrorFrame(const QCanBusFrame &frame)
Interpretiert „ frame “ als Fehlerrahmen und gibt eine für Menschen lesbare Beschreibung des Fehlers zurück.
Wenn frame kein Fehler-Frame ist, ist die zurückgegebene Zeichenkette leer.
[pure virtual protected] bool QCanBusDevice::open()
Diese Funktion wird von ` connectDevice()` aufgerufen. Unterklassen müssen eine Implementierung bereitstellen, die ` true ` zurückgibt, wenn die CAN-Bus-Verbindung hergestellt werden konnte; andernfalls ` false`. Die Implementierung von ` QCanBusDevice ` stellt beim Aufruf dieser Funktion sicher, dass die Methode ` state()` des Geräts bereits auf ` QCanBusDevice::ConnectingState ` gesetzt ist.
Die Implementierung muss sicherstellen, dass bei Erfolg die Methode ` state()` der Instanz auf ` QCanBusDevice::ConnectedState` gesetzt wird; andernfalls auf ` QCanBusDevice::UnconnectedState`. Die Methode ` setState()` muss verwendet werden, um den neuen Gerätestatus festzulegen.
Die benutzerdefinierte Implementierung ist für das Öffnen des Sockets, die Instanziierung eines möglicherweise erforderlichen ` QSocketNotifier ` sowie die Anwendung benutzerdefinierter und standardmäßiger ` QCanBusDevice::configurationParameter()` verantwortlich.
Siehe auch ` connectDevice()`.
QList<QCanBusFrame> QCanBusDevice::readAllFrames()
Gibt alle „ QCanBusFrame“ aus der Warteschlange zurück; andernfalls wird ein leeres „ QList “ zurückgegeben. Die zurückgegebenen Frames werden aus der Warteschlange entfernt.
Die Warteschlange arbeitet nach dem FIFO-Prinzip.
Siehe auch „ clear()“, „ framesAvailable()“ und „ readFrame()“.
QCanBusFrame QCanBusDevice::readFrame()
Gibt den nächsten „ QCanBusFrame “ aus der Warteschlange zurück; andernfalls wird ein leerer „ QCanBusFrame “ zurückgegeben. Der zurückgegebene Frame wird aus der Warteschlange entfernt.
Die Warteschlange arbeitet nach dem FIFO-Prinzip.
Siehe auch „ clear()“, „ framesAvailable()“ und „ readAllFrames()“.
[virtual] void QCanBusDevice::resetController()
Führt einen Reset des CAN-Controllers durch, um diesen, sofern möglich, aus dem Bus-Off-Zustand zu befreien.
Hinweis: Ein Resetdes CAN-Controllers stört die laufende Kommunikation und kann bis zu einer Sekunde dauern. Rufen Sie diese Funktion nur auf, um Busfehler zu beheben.
Hinweis: Diese Funktion ist möglicherweise nicht in allen CAN-Plugins implementiert. Weitere Informationen finden Sie in den Hilfeseiten der Plugins.
Siehe auch „ busStatus“ ().
[virtual] void QCanBusDevice::setConfigurationParameter(QCanBusDevice::ConfigurationKey key, const QVariant &value)
Setzt den Konfigurationsparameter „ key “ für die CAN-Bus-Verbindung auf „ value “. Die möglichen Schlüssel sind unter „ ConfigurationKey “ aufgeführt.
Ein Parameter kann durch die Angabe eines ungültigen „ QVariant “ zurückgesetzt werden. Das Zurücksetzen eines Parameters bedeutet, dass die Konfiguration auf ihre Standardeinstellung zurückgesetzt wird.
Hinweis: In den meisten Fällen werden Konfigurationsänderungen erst nach einer erneuten Verbindung wirksam.
Siehe auch configurationParameter().
[protected] void QCanBusDevice::setError(const QString &errorText, QCanBusDevice::CanBusError errorId)
Setzt die für Menschen lesbare Beschreibung des letzten Gerätefehlers auf „ errorText “. „ errorId “ kategorisiert die Art des Fehlers.
CAN-Bus-Implementierungen müssen diese Funktion verwenden, um den Fehlerstatus des Geräts zu aktualisieren.
Siehe auch error(), errorOccurred() und clearError().
[protected] void QCanBusDevice::setState(QCanBusDevice::CanBusDeviceState newState)
Setzt den Status des Geräts auf „ newState “. CAN-Bus-Implementierungen müssen diese Funktion verwenden, um den Gerätestatus zu aktualisieren.
Siehe auch „ state()“.
QCanBusDevice::CanBusDeviceState QCanBusDevice::state() const
Gibt den aktuellen Status des Geräts zurück.
Siehe auch setState() und stateChanged().
[signal] void QCanBusDevice::stateChanged(QCanBusDevice::CanBusDeviceState state)
Dieses Signal wird jedes Mal ausgesendet, wenn sich der Zustand des Geräts ändert. Der neue Zustand wird durch state dargestellt.
Siehe auch „ setState()“ und „ state()“.
[virtual] bool QCanBusDevice::waitForFramesReceived(int msecs)
Die Funktion wartet, bis neue Frames zum Lesen verfügbar sind und das Signal „ framesReceived()“ ausgelöst wurde, oder bis msecs Millisekunden verstrichen sind. Wenn „ msecs “ auf „ -1 “ gesetzt ist, läuft diese Funktion nicht ab.
Gibt „ true “ zurück, wenn neue Frames zum Lesen verfügbar sind und das Signal „ framesReceived()“ ausgelöst wird; andernfalls wird „ false “ zurückgegeben (wenn die Operation abgelaufen ist oder ein Fehler aufgetreten ist).
Hinweis: Diese Funktion startet eine lokale Ereignisschleife. Dies kann dazu führen, dass andere Anwendungs-Slots aufgerufen werden, während die Ausführung dieses Funktionsbereichs blockiert ist. Um Probleme zu vermeiden, sollten die Signale dieser Klasse nicht mit Slots verbunden werden. Ebenso darf diese Funktion niemals als Reaktion auf die Signale „ framesReceived()“ oder „ errorOccurred()“ aufgerufen werden.
Siehe auch ` waitForFramesWritten()`.
[virtual] bool QCanBusDevice::waitForFramesWritten(int msecs)
Bei gepufferten Geräten wartet diese Funktion, bis alle gepufferten Frames auf das Gerät geschrieben wurden und das Signal „ framesWritten()“ ausgegeben wurde, oder bis msecs Millisekunden verstrichen sind. Ist msecs gleich -1, läuft diese Funktion ohne Zeitüberschreitung ab. Bei ungepufferten Geräten kehrt sie sofort mit dem Wert „ false “ zurück, da „ writeFrame()“ keinen Schreibpuffer benötigt.
Gibt „ true “ zurück, wenn das Signal „ framesWritten()“ ausgelöst wird; andernfalls gibt sie „ false “ zurück (d. h. wenn die Operation ein Timeout erreicht hat oder ein Fehler aufgetreten ist).
Hinweis: Diese Funktion startet eine lokale Ereignisschleife. Dies kann zu Situationen führen, in denen andere Anwendungs-Slots aufgerufen werden, während die Ausführung des Funktionsbereichs blockiert ist. Um Probleme zu vermeiden, sollten die Signale dieser Klasse nicht mit Slots verbunden werden. Ebenso darf diese Funktion niemals als Reaktion auf die Signale „ framesWritten()“ oder „ errorOccurred()“ aufgerufen werden.
Siehe auch ` waitForFramesReceived()`.
[pure virtual] bool QCanBusDevice::writeFrame(const QCanBusFrame &frame)
Schreibt „ frame “ an den CAN-Bus und gibt bei Erfolg „ true “ zurück; andernfalls „ false “.
Auf einigen Plattformen wird der Frame möglicherweise in eine Warteschlange gestellt, und der Rückgabewert zeigt möglicherweise nur an, dass der Frame erfolgreich in die Warteschlange eingefügt wurde. Der eigentliche Frame wird erst später gesendet. Daher ist das Signal „ framesWritten()“ die endgültige Bestätigung dafür, dass der Frame an die Transportschicht übergeben wurde. Tritt ein Fehler auf, wird „ errorOccurred()“ ausgegeben.
Gemäß der CAN-Bus-Spezifikation haben Frames vom Typ „ remote transfer request (RTR) “ keine Nutzlast, sondern eine Länge von 0 bis 8 (einschließlich). Diese Länge gibt die erwartete Länge der Antwort-Nutzlast der Gegenstelle an. Daher kann es beim Senden eines RTR-Frames mit dieser Funktion dennoch erforderlich sein, eine beliebige Nutzlast für „ frame “ festzulegen. Die Länge dieser beliebigen Nutzlast entspricht der als erwartete Größe für den RTR-Frame festgelegten Wert.
Siehe auch „ QCanBusFrame::setPayload()“.
© 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.