QCanFrameProcessor Class
Die Klasse QCanFrameProcessor kann verwendet werden, um eine QCanBusFrame zu dekodieren oder um die Eingabedaten in eine QCanBusFrame zu konvertieren, die bereit ist, an den Empfänger gesendet zu werden. Mehr...
Kopfzeile: | #include <QCanFrameProcessor> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
qmake: | QT += serialbus |
Seit: | Qt 6.5 |
Status: | Vorläufig |
Diese Klasse befindet sich in der Entwicklung und kann sich noch ändern.
Öffentliche Typen
(since 6.5) struct | ParseResult |
enum class | Error { None, InvalidFrame, UnsupportedFrameFormat, Decoding, Encoding } |
Öffentliche Funktionen
QCanFrameProcessor() | |
~QCanFrameProcessor() | |
void | addMessageDescriptions(const QList<QCanMessageDescription> &descriptions) |
void | clearMessageDescriptions() |
QCanFrameProcessor::Error | error() const |
QString | errorString() const |
QList<QCanMessageDescription> | messageDescriptions() const |
QCanFrameProcessor::ParseResult | parseFrame(const QCanBusFrame &frame) |
QCanBusFrame | prepareFrame(QtCanBus::UniqueId uniqueId, const QVariantMap &signalValues) |
void | setMessageDescriptions(const QList<QCanMessageDescription> &descriptions) |
void | setUniqueIdDescription(const QCanUniqueIdDescription &description) |
QCanUniqueIdDescription | uniqueIdDescription() const |
QStringList | warnings() const |
Detaillierte Beschreibung
Die Klasse QCanFrameProcessor verarbeitet die CAN-Nachrichtenbeschreibungen (dargestellt durch die Klassen QCanMessageDescription und QCanSignalDescription ) und eine eindeutige Identifier-Beschreibung (dargestellt durch QCanUniqueIdDescription). Sie verwendet die Beschreibungen, um die eingehenden QCanBusFrame zu dekodieren oder um die benutzerspezifischen Daten in die richtige Nutzlast zu kodieren.
Vor der Dekodierung oder Kodierung muss die QCanFrameProcessor-Instanz ordnungsgemäß initialisiert werden. Die folgenden Daten müssen bereitgestellt werden:
- Eine valid eindeutige Bezeichnerbeschreibung. Verwenden Sie die Methode setUniqueIdDescription(), um eine geeignete Beschreibung bereitzustellen.
- Mindestens eine Nachrichtenbeschreibung. Verwenden Sie die Methode addMessageDescriptions() oder setMessageDescriptions(), um Nachrichtenbeschreibungen bereitzustellen. Alle Nachrichtenbeschreibungen müssen eindeutige Identifikatoren haben. Jede Nachricht kann mehrere Signalbeschreibungen enthalten, aber auch die Signalnamen innerhalb einer Nachricht müssen eindeutig sein.
Die Methode parseFrame() kann verwendet werden, um die eingehenden QCanBusFrame zu verarbeiten. Die Methode gibt eine ParseResult Struktur zurück, die die unique identifier und die signal values Map enthält. Die Schlüssel der Map sind die signal names, und die Werte der Map sind Signalwerte.
Die Methode prepareFrame() kann verwendet werden, um ein QCanBusFrame Objekt für einen bestimmten eindeutigen Bezeichner zu erzeugen, wobei die angegebenen Signalnamen und gewünschten Werte verwendet werden.
Während des Kodierungs- oder Dekodierungsprozesses können Fehler auftreten. In solchen Fällen können die Methoden error() und errorString() verwendet werden, um die Informationen über den Fehler zu erhalten.
Es können auch einige unkritische Probleme auftreten. Solche Probleme werden protokolliert, aber der Prozess wird nicht angehalten. Nach Abschluss des Prozesses kann die Methode warnings() verwendet werden, um die Liste aller Warnungen abzurufen.
Hinweis: Der letzte Fehler und die Fehlerbeschreibung sowie die Warnungen werden zurückgesetzt, sobald die Dekodierung oder Kodierung gestartet wird.
Siehe auch QCanMessageDescription und QCanSignalDescription.
Dokumentation der Mitgliedstypen
enum class QCanFrameProcessor::Error
Diese Aufzählung stellt die möglichen Fehler dar, die bei der Kodierung oder Dekodierung von QCanBusFrame auftreten können.
Konstante | Wert | Beschreibung |
---|---|---|
QCanFrameProcessor::Error::None | 0 | Kein Fehler aufgetreten. |
QCanFrameProcessor::Error::InvalidFrame | 1 | Der empfangene Frame ist ungültig und kann nicht geparst werden. |
QCanFrameProcessor::Error::UnsupportedFrameFormat | 2 | Das Format des empfangenen Frames wird nicht unterstützt und kann nicht geparst werden. |
QCanFrameProcessor::Error::Decoding | 3 | Bei der Dekodierung ist ein Fehler aufgetreten. Verwenden Sie errorString(), um eine String-Darstellung des Fehlers zu erhalten. |
QCanFrameProcessor::Error::Encoding | 4 | Bei der Kodierung ist ein Fehler aufgetreten. Verwenden Sie errorString(), um eine Zeichenfolgendarstellung des Fehlers zu erhalten. |
Dokumentation der Mitgliedsfunktionen
QCanFrameProcessor::QCanFrameProcessor()
Erzeugt einen CAN-Frame-Prozessor.
[noexcept]
QCanFrameProcessor::~QCanFrameProcessor()
Zerstört diesen Bildprozessor.
void QCanFrameProcessor::addMessageDescriptions(const QList<QCanMessageDescription> &descriptions)
Fügt neue Nachrichtenbeschreibungen descriptions zu den verfügbaren Nachrichtenbeschreibungen hinzu.
Alle Nachrichtenbeschreibungen sollten eindeutige Kennungen haben.
Wenn einige Nachrichtenbeschreibungen mehrere eindeutige IDs haben, wird nur die letzte Beschreibung verwendet.
Wenn der Parser bereits eine Nachrichtenbeschreibung mit der gleichen eindeutigen ID hatte, wird diese überschrieben.
Siehe auch messageDescriptions(), setMessageDescriptions(), und clearMessageDescriptions().
void QCanFrameProcessor::clearMessageDescriptions()
Entfernt alle Nachrichtenbeschreibungen für diesen Rahmenprozessor.
Siehe auch messageDescriptions(), addMessageDescriptions(), und setMessageDescriptions().
QCanFrameProcessor::Error QCanFrameProcessor::error() const
Gibt den letzten Fehler zurück.
Siehe auch errorString(), prepareFrame(), und parseFrame().
QString QCanFrameProcessor::errorString() const
Gibt die Textbeschreibung des letzten Fehlers zurück.
Siehe auch error(), prepareFrame(), und parseFrame().
QList<QCanMessageDescription> QCanFrameProcessor::messageDescriptions() const
Gibt alle Nachrichtenbeschreibungen zurück, die derzeit von diesem Rahmenprozessor verwendet werden.
Siehe auch addMessageDescriptions(), setMessageDescriptions(), und clearMessageDescriptions().
QCanFrameProcessor::ParseResult QCanFrameProcessor::parseFrame(const QCanBusFrame &frame)
Analysiert den Frame frame anhand der angegebenen Nachrichtenbeschreibungen.
Der Prozess des Parsens läuft wie folgt ab:
- Die uniqueIdDescription() wird verwendet, um den eindeutigen Bezeichner der Nachricht zu extrahieren.
- Der extrahierte eindeutige Bezeichner wird verwendet, um in der Liste aller verfügbaren messageDescriptions() nach einem passenden QCanMessageDescription zu suchen.
- Die passende QCanMessageDescription wird verwendet, um die Signalwerte aus dem Frame zu extrahieren.
Diese Methode gibt eine QCanFrameProcessor::ParseResult zurück, die sowohl den extrahierten eindeutigen Bezeichner als auch eine QVariantMap mit den Signalen und ihren Werten enthält. Die Schlüssel der Karte sind die signal names, und die Werte der Karte sind Signalwerte.
Ist bei der Dekodierung ein Fehler aufgetreten, wird ein Ergebnis mit leerer signalValues zurückgegeben. In solchen Fällen können die Methoden error() und errorString() verwendet werden, um Informationen über die Fehler zu erhalten.
Hinweis: Der Aufruf dieser Methode löscht alle vorherigen Fehler und Warnungen.
Siehe auch addMessageDescriptions(), error(), errorString(), und warnings().
QCanBusFrame QCanFrameProcessor::prepareFrame(QtCanBus::UniqueId uniqueId, const QVariantMap &signalValues)
Konstruiert einen CAN-Datenrahmen unter Verwendung von uniqueId und signalValues und gibt den konstruierten QCanBusFrame zurück.
Der Parameter signalValues muss Signalnamen als Schlüssel und erwartete Signalwerte als Werte enthalten.
Der Prozess der Erstellung des Frames ist wie folgt:
- Die uniqueId wird verwendet, um eine geeignete Nachrichtenbeschreibung zu finden.
- Wenn die Nachrichtenbeschreibung gefunden wird, wird ein QCanBusFrame mit einer Nutzlast der angegebenen Größe erstellt. Alle Bytes der Nutzlast sowie die Frame-ID werden mit Nullen initialisiert.
- uniqueIdDescription() wird verwendet, um die uniqueId in den entsprechenden Teil des Rahmens (Rahmenkennung oder Nutzlast) zu kodieren.
- Die ausgewählte Nachrichtenbeschreibung wird verwendet, um alle signalValues in den Rahmen zu kodieren.
- Die Teile des Rahmens, die nicht durch eine eindeutige ID oder vorhandene Signalbeschreibungen abgedeckt sind, bleiben unberührt (und enthalten daher weiterhin Nullen).
Wenn bei der Kodierung ein Fehler auftrat, wird ein ungültiges QCanBusFrame zurückgegeben. In solchen Fällen können die Methoden error() und errorString() verwendet werden, um Informationen über die Fehler zu erhalten.
Hinweis: Der Aufruf dieser Methode löscht alle vorherigen Fehler und Warnungen.
Siehe auch addMessageDescriptions(), error(), errorString(), und warnings().
void QCanFrameProcessor::setMessageDescriptions(const QList<QCanMessageDescription> &descriptions)
Ersetzt die aktuellen, von diesem Rahmenprozessor verwendeten Nachrichtenbeschreibungen durch die neuen Nachrichtenbeschreibungen descriptions.
Siehe auch messageDescriptions(), addMessageDescriptions(), und clearMessageDescriptions().
void QCanFrameProcessor::setUniqueIdDescription(const QCanUniqueIdDescription &description)
Setzt die Beschreibung des eindeutigen Bezeichners auf description.
Die eindeutige Identifier-Beschreibung muss gültig sein, um die CAN-Bus-Frames zu kodieren oder zu dekodieren. Siehe die Dokumentation der Klasse QCanUniqueIdDescription für weitere Details.
Siehe auch uniqueIdDescription() und QCanUniqueIdDescription.
QCanUniqueIdDescription QCanFrameProcessor::uniqueIdDescription() const
Gibt die Beschreibung des eindeutigen Identifikators zurück.
Die eindeutige Identifier-Beschreibung muss gültig sein, damit die CAN-Bus-Frames kodiert oder dekodiert werden können. Siehe die Dokumentation der Klasse QCanUniqueIdDescription für weitere Details.
Siehe auch setUniqueIdDescription() und QCanUniqueIdDescription.
QStringList QCanFrameProcessor::warnings() const
Gibt die Liste der Warnungen zurück, die beim letzten Kodierungs- oder Dekodierungsaufruf erzeugt wurden.
Siehe auch error(), errorString(), prepareFrame(), und parseFrame().
© 2025 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.