Uso del plugin PeakCAN
El plugin PeakCAN encapsula la API de bajo nivel para trabajar con los adaptadores CAN de PEAK-System.
Este plugin requiere los controladores de dispositivo PCAN y la biblioteca PCAN-Basic versión 4.4.0 o superior en Windows (pcanbasic.dll) resp. 4.0.0 en Linux (libpcanbasic.so). En macOS el plugin requiere la librería PCBUSB de UV Software, versión 0.9 o superior.
Nota: Las versiones Qt 5.14 a 6.4 sólo son compatibles con la librería PCBUSB versión 0.8.1, pero las versiones Qt 6.5 y superiores requieren una librería PCBUSB versión 0.9 o superior.
Nota: QCanBusDeviceInfo::alias() sólo es compatible con Windows y con PCAN-Basic 4.4.0 o superior.
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("peakcan"))) { // plugin available }
Donde peakcan 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("peakcan"), QStringLiteral("usb0"), &errorString);if (!device) { // El manejo de errores va aquí qDebug << errorString; } else { device->connectDevice(); }
Donde usb0 es el nombre de la interfaz CAN activa. El plugin PeakCAN soporta 16 interfaces USB desde usb0 hasta usb15 y 16 interfaces PCI desde pci0 hasta pci15. El método availableDevices() devuelve una lista de los dispositivos actualmente disponibles.
Nota: Actualmente sólo los adaptadores USB y PCI son soportados por este plugin.
Nota: En macOS, sólo los adaptadores USB son soportados actualmente por este plugin.
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 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();
PeakCAN soporta las siguientes configuraciones que pueden ser controladas a través de setConfigurationParameter():
| Clave del parámetro de configuración | Descripción |
|---|---|
| QCanBusDevice::CanFdKey | Esta opción de configuración determina si se pueden enviar o recibir tramas CAN FD. Por defecto, esta opción está desactivada. Se necesita hardware compatible con CAN FD para habilitar esta opción. |
| QCanBusDevice::BitRateKey | Determina la velocidad de bits de la conexión de bus CAN. Se admiten las siguientes velocidades de bits: 5000, 10000, 20000, 33000, 47000, 50000, 83000, 95000, 100000, 125000, 250000, 500000, 800000, 1000000. Si la opción QCanBusDevice::CanFdKey está activada, las tasas de bits se limitan a 125000, 250000, 500000 o 1000000. Tenga en cuenta que este parámetro de configuración sólo se puede ajustar mientras QCanBusDevice no está conectado. |
| QCanBusDevice::DataBitRateKey | Determina la tasa de bits de datos de la conexión del bus CAN FD. La opción QCanBusDevice::CanFdKey debe estar activada para permitir el ajuste de esta opción. Las velocidades de transmisión de datos posibles son 2000000, 4000000, 8000000 o 10000000. Tenga en cuenta que este parámetro de configuración sólo puede ajustarse mientras QCanBusDevice no está conectado. |
PeakCAN soporta las siguientes funciones adicionales:
- QCanBusDevice::resetController()
- QCanBusDevice::busStatus()
- QCanBusDeviceInfo::alias() (sólo Windows y PCAN-Basic >= 4.4.0): Devuelve el PCAN_DEVICE_ID que se puede ajustar a un valor definido por el usuario de 0..255 resp. 0..4294967295 (dependiendo del dispositivo) con PCAN-View. El valor por defecto es 255 o 4294967295.
© 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.