Sur cette page

Utilisation du plugin VirtualCAN

Le plugin VirtualCAN permet de tester les applications CAN avec une connexion TCP/IP locale sans matériel CAN. Le serveur TCP est créé lorsque le premier client appelle createDevice(). Le port TCP par défaut est 35468, qui peut être modifié en donnant l'URL complète à createDevice(). Une fois le serveur lancé, aucun autre serveur ne peut être démarré sur le même système.

Par la suite, tous les clients envoient leurs trames CAN au serveur, qui les distribue aux autres clients.

Création de périphériques de bus CAN

Tout d'abord, il est nécessaire de vérifier que QCanBus fournit le plugin souhaité :

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

virtualcan est le nom du plugin.

Ensuite, une connexion à une interface spécifique peut être établie :

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

can0 est le nom du canal CAN actif. Le plugin VirtualCAN fournit dix canaux de "can0" à "can9". Tous peuvent être utilisés comme canaux CAN 2.0 ou CAN FD. Toutes les applications connectées à l'un de ces canaux reçoivent tous les messages envoyés à ce canal.

Pour se connecter à un serveur distant, utilisez l'URL entièrement qualifiée suivante comme nom d'interface :

tcp://server:port/canX

par exemple :

tcp://192.168.1.2:35468/can0

L'appareil est maintenant ouvert à l'écriture et à la lecture de trames CAN :

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

La lecture peut être effectuée à l'aide de la méthode readFrame(). Le signal framesReceived() est émis lorsqu'au moins une nouvelle trame est disponible pour la lecture :

QCanBusFrame frame = device->readFrame();

VirtualCAN supporte les configurations suivantes qui peuvent être contrôlées par setConfigurationParameter() :

Clé du paramètre de configurationDescription
QCanBusDevice::CanFdKeyDétermine si le bus CAN virtuel fonctionne en mode CAN FD ou non. Cette option est désactivée par défaut.
QCanBusDevice::ReceiveOwnKeyLa réception des trames CAN sur le même appareil que celui qui a envoyé la trame CAN est désactivée par défaut. Lorsque cette option est activée, toutes les trames CAN envoyées au bus CAN apparaissent immédiatement dans le tampon de réception. Cela permet de vérifier si l'envoi a réussi. Si cette option est activée, les trames reçues sont marquées par QCanBusFrame::hasLocalEcho().

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