使用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插件支持从usb0到usb15的16个USB接口和从pci0到pci15的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 支持以下附加功能:
- QCanBusDevice::resetController()
- QCanBusDevice::busStatus()
- QCanBusDeviceInfo::alias() (仅限 Windows 和 PCAN-Basic >= 4.4.0): 返回 PCAN_DEVICE_ID,该 ID 可以通过 PCAN-View 设置为用户定义的值,范围从 0..255 或 0..4294967295(取决于设备)。默认值是 255 或 4294967295。
© 2024 Qt 公司有限公司。本文档中的文档贡献是各自所有者的版权。提供的文档根据自由软件基金会发布的 GNU 自由文档许可版本 1.3 的条款许可。Qt 及其 respective logos 是芬兰および / または全球其他国家 Qt 公司有限公司的商标。所有其他商标均为其各自所有者的财产。