首页 > 解决方案 > 接收 Can BUS 帧 Qt 和 PeakCan USB 适配器

问题描述

我想使用 Peak System 的 PeakCan USB 适配器从 Qt 接收 Can Bus 帧。目前我可以在总线上写字并且效果很好,我用 PCAN View 进行检查,但我的问题出在阅读过程中。

当我使用 PCAN View 传输数据时,尽管我进行了连接,但我的读取槽没有出现。

这是我的类构造函数,成员 m_device 是 QCanBusDevice 类型:

m_device = QCanBus::instance()->createDevice("peakcan", "usb0");
m_device->connectDevice()
connect(m_device, &QCanBusDevice::framesReceived, this, &BusCan::onFramesReceived);

现在我用于读取 Can Bus 帧的插槽:

void BusCan::onFramesReceived() {
    qDebug() << "[Frame received] !";
}

任何帮助表示赞赏!

标签: can-bus

解决方案


您的代码适用于我的 pcan-dongle。除了类名等之外,我没有更改您的任何电话。

为了发出信号,您必须确保

  • 你正在运行一个QCoreApplicationQApplication
  • 您的类BusCan必须继承QObject并包含Q_OBJECT-macro。

如果它仍然不起作用,您可以QCanBus按照文档中的说明进行显示详细日志记录:

http://doc.qt.io/qt-5/qtserialbus-index.html

您还可以检查error()errorString()从您的QCanBusDevice


推荐阅读