PeakCAN-Plugin verwenden
Das PeakCAN-Plugin kapselt die Low-Level-API für die Arbeit mit den CAN-Adaptern des PEAK-Systems.
Dieses Plugin benötigt die PCAN-Gerätetreiber und die PCAN-Basic-Bibliothek Version 4.4.0 oder höher unter Windows (pcanbasic.dll) bzw. 4.0.0 unter Linux (libpcanbasic.so). Unter macOS benötigt das Plugin die PCBUSB-Bibliothek von UV Software in der Version 0.9 oder höher.
Hinweis: Die Qt-Versionen 5.14 bis 6.4 sind nur kompatibel zur PCBUSB-Bibliothek Version 0.8.1, aber Qt-Versionen 6.5 und höher erfordern eine PCBUSB-Version 0.9 aufwärts.
Hinweis: QCanBusDeviceInfo::alias() wird nur unter Windows und mit PCAN-Basic 4.4.0 oder höher unterstützt.
Erstellen von CAN-Bus-Geräten
Zunächst ist zu prüfen, ob QCanBus das gewünschte Plugin zur Verfügung stellt:
if (QCanBus::instance()->plugins().contains(QStringLiteral("peakcan"))) { // plugin available }
Dabei ist peakcan der Name des Plugins.
Anschließend kann eine Verbindung zu einer bestimmten Schnittstelle hergestellt werden:
QString errorString;QCanBusDevice *device = QCanBus::instance()->createDevice( QStringLiteral("peakcan"), QStringLiteral("usb0"), &errorString);if (!device) { // Fehlerbehandlung geht hier qDebug << errorString; } else { device->connectDevice(); }
Dabei ist usb0 der Name der aktiven CAN-Schnittstelle. Das PeakCAN-Plugin unterstützt 16 USB-Schnittstellen von usb0 bis usb15 und 16 PCI-Schnittstellen von pci0 bis pci15. Die Methode availableDevices() gibt eine Liste der aktuell verfügbaren Geräte zurück.
Hinweis: Nur die USB- und PCI-Adapter werden derzeit von diesem Plugin unterstützt.
Hinweis: Unter macOS werden derzeit nur USB-Adapter von diesem Plugin unterstützt.
Das Gerät ist nun für das Schreiben und Lesen von CAN-Frames geöffnet:
QCanBusFrame frame; frame.setFrameId(8); QByteArray payload("A36E"); frame.setPayload(payload); device->writeFrame(frame);
Das Lesen kann mit der Methode readFrame() durchgeführt werden. Das Signal framesReceived() wird ausgegeben, wenn mindestens ein neuer Frame zum Lesen verfügbar ist:
QCanBusFrame frame = device->readFrame();
PeakCAN unterstützt die folgenden Konfigurationen, die über setConfigurationParameter() gesteuert werden können:
Schlüssel der Konfigurationsparameter | Beschreibung |
---|---|
QCanBusDevice::CanFdKey | Diese Konfigurationsoption legt fest, ob CAN FD-Frames gesendet oder empfangen werden dürfen. In der Voreinstellung ist diese Option deaktiviert. Um diese Option zu aktivieren, ist CAN FD-kompatible Hardware erforderlich. |
QCanBusDevice::BitRateKey | Bestimmt die Bitrate der CAN-Bus-Verbindung. Die folgenden Bitraten werden unterstützt: 5000, 10000, 20000, 33000, 47000, 50000, 83000, 95000, 100000, 125000, 250000, 500000, 800000, 1000000. Wenn die Option QCanBusDevice::CanFdKey aktiviert ist, sind die Bitraten auf 125000, 250000, 500000 oder 1000000 begrenzt. Beachten Sie, dass dieser Konfigurationsparameter nur eingestellt werden kann, wenn die QCanBusDevice nicht angeschlossen ist. |
QCanBusDevice::DataBitRateKey | Bestimmt die Datenbitrate der CAN FD-Busverbindung. Die Option QCanBusDevice::CanFdKey muss aktiviert sein, damit diese Option eingestellt werden kann. Mögliche Datenbitraten sind 2000000, 4000000, 8000000, oder 10000000. Beachten Sie, dass dieser Konfigurationsparameter nur eingestellt werden kann, wenn die QCanBusDevice nicht angeschlossen ist. |
PeakCAN unterstützt die folgenden zusätzlichen Funktionen:
- QCanBusDevice::resetController()
- QCanBusDevice::busStatus()
- QCanBusDeviceInfo::alias() (nur Windows und PCAN-Basic >= 4.4.0): Gibt die PCAN_DEVICE_ID zurück, die mit PCAN-View auf einen benutzerdefinierten Wert von 0..255 bzw. 0..4294967295 (je nach Gerät) gesetzt werden kann. Der Standardwert ist 255 bzw. 4294967295.
© 2025 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.