接收CAN总线帧Qt和PeakCan USB适配器

时间:2018-05-28 09:32:45

标签: can-bus

我希望使用Peak System的PeakCan USB适配器从Qt接收Can Bus帧。目前我可以在公交车上写字并运行良好,我查看了PCAN View,但我的问题在于阅读过程。

当我使用PCAN传输数据时,虽然我进行了连接,但我的阅读槽并没有发生。

这是我的类构造函数,成员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] !";
}

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

您的代码可与我的pcan加密狗配合使用。除了类名等,我没有改变您的任何通话。

为了获得发射的信号,您必须确保

  • 您正在运行QCoreApplicationQApplication
  • 您的类BusCan必须继承QObject并包含Q_OBJECT宏。

如果仍然无法运行,则可以按照文档中的说明使QCanBus显示详细的日志记录:

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

您还可以从error()中查看errorString()QCanBusDevice