Uso del plugin VirtualCAN
El plugin VirtualCAN permite probar aplicaciones CAN con una conexión local TCP/IP sin hardware CAN. El servidor TCP se crea cuando el primer cliente llama a createDevice(). El puerto TCP por defecto es 35468, que puede cambiarse dando la URL completa a createDevice(). Una vez que el servidor está funcionando, no se inicia ningún otro servidor en el mismo sistema.
Después, todos los clientes envían sus tramas CAN al servidor, que las distribuye a los demás clientes.
Creación de dispositivos de bus CAN
En primer lugar es necesario comprobar que QCanBus proporciona el plugin deseado:
if (QCanBus::instance()->plugins().contains(QStringLiteral("virtualcan"))) { // plugin available }
Donde virtualcan es el nombre del plugin.
A continuación, se puede establecer una conexión con una interfaz específica:
QCanBusDevice *device = QCanBus::instance()->createDevice( QStringLiteral("virtualcan"), QStringLiteral("can0")); device->connectDevice();
Donde can0 es el nombre del canal CAN activo. El plugin VirtualCAN proporciona diez canales de "can0" a "can9". Todos ellos pueden utilizarse como canales CAN 2.0 o CAN FD. Todas las aplicaciones conectadas a uno de estos canales reciben todos los mensajes que se envían a este canal.
Para conectarse a un servidor remoto, utilice la siguiente URL completa como nombre de interfaz:
tcp://server:port/canXpor ejemplo:
tcp://192.168.1.2:35468/can0El dispositivo está ahora abierto para escribir y leer tramas CAN:
QCanBusFrame frame; frame.setFrameId(8); QByteArray payload("A36E"); frame.setPayload(payload); device->writeFrame(frame);
La lectura puede realizarse utilizando el método readFrame(). La señal framesReceived() se emite cuando al menos una nueva trama está disponible para su lectura:
QCanBusFrame frame = device->readFrame();
VirtualCAN soporta las siguientes configuraciones que pueden ser controladas a través de setConfigurationParameter():
| Clave del parámetro de configuración | Descripción |
|---|---|
| QCanBusDevice::CanFdKey | Determina si el bus CAN virtual funciona en modo CAN FD o no. Esta opción está desactivada por defecto. |
| QCanBusDevice::ReceiveOwnKey | La recepción de las tramas CAN en el mismo dispositivo que estaba enviando la trama CAN está desactivada por defecto. Al activar esta opción, todas las tramas CAN enviadas al bus CAN aparecen inmediatamente en el búfer de recepción. Esto se puede utilizar para comprobar si el envío se ha realizado correctamente. Si esta opción está habilitada, las tramas por tanto recibidas se marcan con 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.