QT CAN BUS,SocketCAN无法读取CAN帧

时间:2016-07-26 16:33:11

标签: c++ qt can-bus socketcan qt5.7

我在QT中使用readFrame()方法读取CAN帧时遇到了麻烦。

我的初始化代码:

#include <QCanBusFrame>
#include <QCanBus>
#include <QCanBusDevice>

CANSend::CANSend(QString interface){

CANdevice = QCanBus::instance()->createDevice("socketcan", interface);
if (!CANdevice->connectDevice()) {}

 }

发送数据的代码 - 一切正常

void CANSend::send_pos(uint16_t pos)
{
QCanBusFrame frame;
frame.setFrameId(1024);
QByteArray payload;
payload[0]=0;
payload[1]=pos>>8;
payload[2]=pos;

frame.setPayload(payload);
CANdevice->writeFrame(frame);
}

读取数据的代码

int CANSend::check_messages(){

 const QCanBusFrame frame = CANdevice->readFrame();

 const qint8 dataLength = frame.payload().size();

 const qint32 id = frame.frameId();

 return id;
}

在调试期间我总是得到     frame = @ 0x7fffffffdf10,     dataLength = 0,     id = 0,

所以,即使我可以通过candump命令以及QT CANBUS示例清楚地看到输入数据包,但我从未收到过任何信息。

你能帮助我吗?感谢。

0 个答案:

没有答案