Verwendung des VirtualCAN-Plugins
Das VirtualCAN-Plugin ermöglicht das Testen von CAN-Anwendungen über eine lokale TCP/IP-Verbindung ohne CAN-Hardware. Der TCP-Server wird erstellt, sobald der erste Client die Funktion `createDevice()` aufruft. Der Standard-TCP-Port ist 35468; dieser kann geändert werden, indem bei `createDevice()` die vollständig qualifizierte URL angegeben wird. Sobald der Server läuft, wird auf demselben System kein weiterer Server gestartet.
Anschließend senden alle Clients ihre CAN-Frames an den Server, der diese an die anderen Clients weiterleitet.
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("virtualcan"))) {
// plugin available
}Dabei ist „virtualcan“ der Name des Plugins.
Anschließend 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 stellt zehn Kanäle von „can0“ bis „can9“ zur Verfügung. Alle 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 eine Verbindung zu einem Remote-Server herzustellen, verwenden Sie die folgende vollqualifizierte URL als Schnittstellennamen:
tcp://server:port/canXBeispiel:
tcp://192.168.1.2:35468/can0Das Gerät ist nun zum Schreiben und Lesen von CAN-Frames bereit:
QCanBusFrame frame;
frame.setFrameId(8);
QByteArray payload("A36E");
frame.setPayload(payload);
device->writeFrame(frame);Das Lesen kann mit der Methode „ readFrame()“ erfolgen. Das Signal „ framesReceived()“ wird ausgelöst, sobald 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üssel | Beschreibung |
|---|---|
| QCanBusDevice::CanFdKey | Legt fest, ob der virtuelle CAN-Bus im CAN-FD-Modus betrieben wird oder nicht. Diese Option ist standardmäßig deaktiviert. |
| QCanBusDevice::ReceiveOwnKey | Der Empfang der CAN-Frames auf demselben Gerät, das den CAN-Frame gesendet hat, ist standardmäßig deaktiviert. Bei Aktivierung dieser Option 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 dadurch empfangenen Frames mit „ QCanBusFrame::hasLocalEcho()“ gekennzeichnet. |
© 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.