Verwendung des VectorCAN-Plugins
Das VectorCAN-Plugin kapselt die Low-Level-API für die Arbeit mit den CAN-Adaptern von Vector Informatik.
Dieses Plugin benötigt die Vector-CAN-Gerätetreiber und die Datei „vxlapi.dll“ (bzw. „vxlapi64.dll“ für 64-Bit-Builds).
Erstellen von CAN-Bus-Geräten
Zunächst muss überprüft werden, ob unter QCanBus das gewünschte Plugin bereitgestellt wird:
if (QCanBus::instance()->plugins().contains(QStringLiteral("vectorcan"))) {
// plugin available
}Dabei lautet „vectorcan“ der Name des Plugins.
Anschließend kann eine Verbindung zu einer bestimmten Schnittstelle hergestellt werden:
QString errorString;
QCanBusDevice*device = QCanBus::instance()->createDevice(
QStringLiteral("vectorcan"), QStringLiteral("can0"), &errorString);
if (!device) {
// Hier erfolgt die Fehlerbehandlung
qDebug << errorString;
} else {
device->connectDevice();
}Dabei ist „can0“ der Name des aktiven CAN-Kanals. Das VectorCAN-Plugin stellt 64 Kanäle (definiert durch XL_CONFIG_MAX_CHANNELS in der Vector-API) von „can0“ bis „can63“ zur Verfügung. Einige dieser Kanäle können virtuell sein und daher ohne tatsächliche CAN-Hardware genutzt werden. Um die virtuellen Kanäle zu ermitteln, kann das Programm „Vector Hardware Config“ (vcanconf.exe) verwendet werden, das im Treiberpaket von Vector enthalten ist. Die Methode availableDevices() gibt eine Liste der derzeit verfügbaren Geräte zurück.
Das Gerät ist nun zum Schreiben und Lesen von CAN-Frames geöffnet:
QCanBusFrame frame;
frame.setFrameId(8);
QByteArray payload("A36E");
frame.setPayload(payload);
device->writeFrame(frame);Das Lesen kann mithilfe der Methode „ readFrame()“ erfolgen. Das Signal „ framesReceived()“ wird ausgelöst, sobald mindestens ein neuer Frame zum Lesen verfügbar ist:
QCanBusFrame frame = device->readFrame();VectorCAN unterstützt die folgenden Konfigurationen, die über ` setConfigurationParameter()` gesteuert werden können:
| Schlüssel für Konfigurationsparameter | Beschreibung |
|---|---|
| QCanBusDevice::BitRateKey | Legt die Bitrate der CAN-Bus-Verbindung fest. |
| QCanBusDevice::ReceiveOwnKey | Der Empfang der CAN-Frames auf demselben Gerät, das den CAN-Frame gesendet hat, ist standardmäßig deaktiviert. Wenn diese Option aktiviert wird, erscheinen alle an den CAN-Bus gesendeten CAN-Frames sofort im Empfangspuffer. Dies kann genutzt werden, um zu überprüfen, ob der Versand erfolgreich war. Ist diese Option aktiviert, werden die so empfangenen Frames mit „ QCanBusFrame::hasLocalEcho “ () gekennzeichnet |
| QCanBusDevice::CanFdKey | Aktiviert die Verwendung von CAN FD auf der CAN-Bus-Verbindung. Ist diese Option aktiviert, ist es nicht möglich, die eigenen gesendeten CAN-Frames zu empfangen, sodass die Einstellung von „ QCanBusDevice::ReceiveOwnKey “ auf „true“ keine Auswirkung hat. Seit Qt 5.15. |
| QCanBusDevice::DataBitRateKey | Legt die Datenbitrate der CAN-Bus-Verbindung fest. Diese Option ist nur verfügbar, wenn „ QCanBusDevice::CanFdKey “ auf „true“ gesetzt ist. Seit Qt 5.15. |
VectorCAN unterstützt die folgenden zusätzlichen Funktionen:
© 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.