Uso del plugin VectorCAN
El plugin VectorCAN encapsula la API de bajo nivel para trabajar con los adaptadores CAN de Vector Informatik.
Este plugin requiere los controladores de dispositivo Vector CAN y el vxlapi.dll (vxlapi64.dll para versiones de 64 bits).
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("vectorcan"))) { // plugin available }
Donde vectorcan es el nombre del plugin.
A continuación, se puede establecer una conexión con una interfaz específica:
QString errorString;QCanBusDevice *device = QCanBus::instance()->createDevice( QStringLiteral("vectorcan"), QStringLiteral("can0"), &errorString);if (!device) { // La gestión de errores va aquí qDebug << errorString; } else { device->connectDevice(); }
Donde can0 es el nombre del canal CAN activo. El plugin VectorCAN proporciona 64 canales (definidos por XL_CONFIG_MAX_CHANNELS en la API Vector) desde can0 hasta can63. Algunos de estos canales pueden ser virtuales, y por lo tanto se pueden utilizar sin hardware CAN real. Para conocer los canales virtuales, se puede utilizar el programa "Vector Hardware Config" (vcanconf.exe), que se incluye en el paquete de controladores de Vector. El método availableDevices() devuelve una lista de los dispositivos disponibles actualmente.
El 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 mediante 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();
VectorCAN soporta las siguientes configuraciones que pueden ser controladas a través de setConfigurationParameter():
| Clave del parámetro de configuración | Descripción |
|---|---|
| QCanBusDevice::BitRateKey | Determina la velocidad de bits de la conexión del bus CAN. |
| 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() |
| QCanBusDevice::CanFdKey | Habilitar el uso de CAN FD en la conexión de bus CAN. Si esta opción está habilitada, entonces no es posible recibir sus propias tramas CAN siendo enviadas, por lo que establecer QCanBusDevice::ReceiveOwnKey a true no tiene ningún efecto. Desde Qt 5.15. |
| QCanBusDevice::DataBitRateKey | Determina la tasa de bits de datos de la conexión de bus CAN. Esto sólo está disponible cuando QCanBusDevice::CanFdKey se establece en true. Desde Qt 5.15. |
VectorCAN soporta las siguientes funciones adicionales:
© 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.