VectorCAN-Plugin verwenden

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 vxlapi.dll (vxlapi64.dll für 64 Bit Builds).

Erstellen von CAN-Bus-Geräten

Zunächst ist zu prüfen, ob QCanBus das gewünschte Plugin bereitstellt:

if (QCanBus::instance()->plugins().contains(QStringLiteral("vectorcan"))) {
    // plugin available
}

Dabei ist 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) { // Fehlerbehandlung geht hier    qDebug << errorString;
} else {  device->connectDevice(); }

Dabei ist can0 der Name des aktiven CAN-Kanals. Das VectorCAN Plugin bietet 64 Kanäle (definiert durch XL_CONFIG_MAX_CHANNELS in der Vector API) von can0 bis can63. Einige dieser Kanäle können virtuell sein und können daher ohne tatsächliche CAN-Hardware verwendet werden. Um die virtuellen Kanäle herauszufinden, kann das Programm "Vector Hardware Config" (vcanconf.exe) verwendet werden, das im Treiberpaket von Vector enthalten ist. Die Methode availableDevices() gibt eine Liste der aktuell verfügbaren Geräte zurück.

Das Gerät ist nun offen für das Schreiben und Lesen von CAN-Frames:

QCanBusFrame frame;
frame.setFrameId(8);
QByteArray payload("A36E");
frame.setPayload(payload);
device->writeFrame(frame);

Das Lesen kann mit der Methode readFrame() durchgeführt werden. Das Signal framesReceived() wird ausgegeben, wenn 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 der KonfigurationsparameterBeschreibung
QCanBusDevice::BitRateKeyBestimmt die Bitrate der CAN-Bus-Verbindung.
QCanBusDevice::ReceiveOwnKeyDer Empfang von CAN-Frames auf demselben Gerät, das den CAN-Frame gesendet hat, ist standardmäßig deaktiviert. Wenn diese Option aktiviert ist, erscheinen alle CAN-Frames, die an den CAN-Bus gesendet werden, sofort im Empfangspuffer. Dies kann verwendet werden, um zu überprüfen, ob das Senden erfolgreich war. Wenn diese Option aktiviert ist, werden die so empfangenen Frames mit QCanBusFrame::hasLocalEcho() markiert.
QCanBusDevice::CanFdKeyAktiviert die Verwendung von CAN FD auf der CAN-Bus-Verbindung. Wenn diese Option aktiviert ist, ist es nicht möglich, eigene gesendete CAN-Frames zu empfangen, so dass das Setzen von QCanBusDevice::ReceiveOwnKey auf true keinen Effekt hat. Seit Qt 5.15.
QCanBusDevice::DataBitRateKeyBestimmt die Datenbitrate der CAN-Bus-Verbindung. Dies ist nur verfügbar, wenn QCanBusDevice::CanFdKey auf true gesetzt ist. Seit Qt 5.15.

VectorCAN unterstützt die folgenden zusätzlichen Funktionen:

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