使用PeakCAN插件

PeakCAN插件封装了与PEAK-System CAN适配器协同工作的低级API。

此插件需要在Windows上安装PCAN设备驱动程序以及PCAN-Basic库版本4.4.0或更高版本(pcanbasic.dll),在Linux上的版本为4.0.0(libpcanbasic.so)。在macOS上,该插件需要UV Software提供的PCBUSB库,版本为0.9或更高。

注意:Qt版本5.14到6.4仅与PCBUSB库版本0.8.1兼容,但Qt版本6.5及更高版本需要PCBUSB版本0.9及以上。

注意:QCanBusDeviceInfo::alias()只在Windows且与PCAN-Basic 4.4.0或更高版本兼容时受支持。

创建CAN总线设备

首先需要检查QCanBus是否提供了所需的插件

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

其中peakcan是插件名称。

接下来,可以建立到特定接口的连接

QString errorString;
QCanBusDevice *device = QCanBus::instance()->createDevice(
    QStringLiteral("peakcan"), QStringLiteral("usb0"), &errorString);
if (!device) {
    // Error handling goes here
    qDebug << errorString;
} else {
    device->connectDevice();
}

其中usb0是活动的CAN接口名称。PeakCAN插件支持从usb0usb15的16个USB接口和从pci0pci15的16个PCI接口。方法availableDevices()返回当前可用的设备列表。

注意:此插件目前仅支持USB和PCI适配器。

注意:在macOS上,此插件目前仅支持USB适配器。

设备现在已打开,可用于写入和读取CAN帧

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

可以借助方法readFrame()进行读取。当至少有一个新的可用帧供读取时,会发出framesReceived()信号

QCanBusFrame frame = device->readFrame();

PeakCAN支持以下配置,可从setConfigurationParameter()进行控制

配置参数键描述
QCanBusDevice::CanFdKey此配置选项确定是否允许发送或接收CAN FD帧。默认情况下,此选项被禁用。要启用此选项,需要与CAN FD兼容的硬件。
QCanBusDevice::BitRateKey确定CAN总线连接的比特率。支持的比特率如下:5000, 10000, 20000, 33000, 47000, 50000, 83000, 95000, 100000, 125000, 250000, 500000, 800000, 1000000。如果QCanBusDevice::CanFdKey选项启用,则比特率限制为125000, 250000, 500000或1000000。注意,此配置参数只能在QCanBusDevice未连接时调整。
QCanBusDevice::DataBitRateKey确定CAN FD总线连接的数据比特率。必须启用QCanBusDevice::CanFdKey选项才能设置此选项。可能的数据比特率为2000000, 4000000, 8000000或10000000。注意,此配置参数只能在QCanBusDevice未连接时调整。

PeakCAN 支持以下附加功能:

© 2024 Qt 公司有限公司。本文档中的文档贡献是各自所有者的版权。提供的文档根据自由软件基金会发布的 GNU 自由文档许可版本 1.3 的条款许可。Qt 及其 respective logos 是芬兰および / または全球其他国家 Qt 公司有限公司的商标。所有其他商标均为其各自所有者的财产。