2

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 の例を介して着信パケットを明確に確認できますが、何も受信しません。

助けてくれませんか?ありがとう。

4

0 に答える 0