使用 SystecCAN 插件

SystecCAN 插件封装了与 SYS TEC CAN 适配器工作的低级别 API。

此插件需要 SYS TEC CAN 设备驱动程序和 usbcan32.dll(64 位构建的 usbcan64.dll)。

创建 CAN 总线设备

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

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

其中 systeccan 是插件名称。

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

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

其中,can0.0 是活动的 CAN 接口名称(接口 0,通道 0)。SystecCAN 插件支持从 can0.0can63.1 的 64 个 USB 接口(所谓的模块)。每个模块可以有一个或两个通道,可以通过 canX.0 或 canX.1 索引访问。availableDevices() 方法返回当前可用的设备列表。

注意:SYS TEC 还提供 8 或 16 通道 CAN 接口。这些设备由一个 USB 集线器和多个双通道模块组成。

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

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

可以读取使用 readFrame() 方法。当至少有一个新的数据包可读取时,将发出 framesReceived() 信号

QCanBusFrame frame = device->readFrame();

SystecCAN 支持以下配置,可以通过 setConfigurationParameter() 控制

配置参数键描述
QCanBusDevice::BitRateKey确定 CAN 总线连接的比特率。支持以下比特率:10000、20000、50000、100000、125000、250000、500000、800000 和 1000000。请注意,此配置参数只能在 QCanBusDevice 未连接时调整。
QCanBusDevice::ReceiveOwnKey默认情况下禁用了接收同一通道发送的 CAN 数据包。如果启用此选项,则接收到的数据包将带有 QCanBusFrame::hasLocalEcho() 标记。

SystecCAN 支持以下附加功能

© 2024 Qt 公司有限公司。本文件中包含的文档贡献是各自所有者的版权。本文件中提供的文档根据自由软件基金会发布的 GNU 自由文档许可第 1.3 版 的条款授予许可。Qt 及其相应徽标是公司在芬兰和/或其他国家的注册商标。所有其他商标归其各自所有者所有。