使用 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.0 到 can63.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 及其相应徽标是公司在芬兰和/或其他国家的注册商标。所有其他商标归其各自所有者所有。