Verwendung des VirtualCAN Plugin

Das VirtualCAN Plugin ermöglicht das Testen von CAN Anwendungen mit einer lokalen TCP/IP Verbindung ohne CAN Hardware. Der TCP-Server wird erstellt, wenn der erste Client createDevice() aufruft. Der voreingestellte TCP-Port ist 35468, der durch Angabe der vollqualifizierten URL an createDevice() geändert werden kann. Sobald der Server läuft, wird kein weiterer Server auf demselben System gestartet.

Danach senden alle Clients ihre CAN-Frames an den Server, der sie an die anderen Clients verteilt.

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("virtualcan"))) {
    // plugin available
}

Dabei ist virtualcan der Name des Plugins.

Als nächstes kann eine Verbindung zu einer bestimmten Schnittstelle hergestellt werden:

QCanBusDevice *device = QCanBus::instance()->createDevice(
    QStringLiteral("virtualcan"), QStringLiteral("can0"));
device->connectDevice();

Dabei ist can0 der Name des aktiven CAN-Kanals. Das VirtualCAN-Plugin bietet zwei Kanäle "can0" und "can1". Beide können als CAN 2.0 oder CAN FD Kanäle verwendet werden. Alle Anwendungen, die mit einem dieser Kanäle verbunden sind, empfangen alle Nachrichten, die an diesen Kanal gesendet werden.

Um sich mit einem entfernten Server zu verbinden, verwenden Sie die folgende vollqualifizierte URL als Schnittstellenname:

tcp://server:port/canX

zum Beispiel:

tcp://192.168.1.2:35468/can0

Das Gerät ist nun für das 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 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();

VirtualCAN unterstützt die folgenden Konfigurationen, die über setConfigurationParameter() gesteuert werden können:

Konfigurationsparameter SchlüsselBeschreibung
QCanBusDevice::CanFdKeyLegt fest, ob der virtuelle CAN-Bus im CAN-FD-Modus arbeitet oder nicht. Diese Option ist standardmäßig deaktiviert.
QCanBusDevice::ReceiveOwnKeyDer Empfang von CAN-Frames auf demselben Gerät, das den CAN-Frame gesendet hat, ist standardmäßig deaktiviert. Wenn Sie diese Option aktivieren, erscheinen alle an den CAN-Bus gesendeten CAN-Frames sofort im Empfangspuffer. Dies kann genutzt werden, um zu überprüfen, ob das Senden erfolgreich war. Wenn diese Option aktiviert ist, werden die so empfangenen Frames mit QCanBusFrame::hasLocalEcho() markiert.

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