我在 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 示例中清楚地看到传入的数据包,我也从未收到任何东西。
你能帮我吗?谢谢。