Project

General

Profile

Actions

Support Request #6259

closed

Read out wrong size of CAN data

Added by hidden about 5 years ago. Updated about 5 years ago.

Status:
Closed
Priority:
Normal
Customer:
AUDI
Department:
TKI
Requester's Priority:
Normal
Support Level:
2nd Level
Resolution:
Solved Issue
Product Issue Numbers:
Platform:
Windows 10 64bit
Topic:
StreamingLib::Reader
FAQ Links:

Description

Hallo,

ich möchte gern mit adtf-streaming lib flexray und Can Daten aus .dat lesen.

Bei der benutzung des Beispiels candump.dat auf dem Trace erzeugt vom Beispiel canwritter, habe ich die can Daten mit ID und 8 bytes richtig bekommen.

Aber beim Traces von ADTF bekomme ich CAN Daten mit mehr als 8 Bytes, und ID passen auch nicht?? pCanMessage->ui8Length (siehe code unter) ist oft mehr als 32 bytes

if (pDataBlock->GetStreamId() == nCanStream)
{
    nMessageCounter++;

    //get the time the block was received as a sample
    tTimeStamp tsReceived = pDataBlock->GetTime();

    //get data from datablock
    tCanMessage *pCanMessage = NULL;

    //get data from block
    pDataBlock->GetData((const tVoid**)&pCanMessage);

    //show can message
    cout << "#" << nMessageCounter << " -- " << tsReceived << " : C" << (int)pCanMessage->ui8Channel << " ID=" << hex << pCanMessage->ui16Id << dec << "[";

    for (int nCounter = 0; nCounter < pCanMessage->ui8Length; nCounter++)
    {
        cout << " " << hex << (int)pCanMessage->pui8Data[nCounter] << dec;
    }

    cout << "]" << endl;
}

Lösung

Ich denke du verwendest die falsche Datenstruktur. In ADTF wird schon lange nicht mehr tCanMessage verwendet sondern tCANData, die ist in der Streaming Library als tADTFCANData verfügbar. Welche CAN Struktur im Sample enthalten ist kannst du über die Größe der Daten ermitteln:

const tVoid* pBlockData;
tInt64 nBlockSize = pDataBlock->GetData(&pBlockData);

if (nBlockSize == sizeof(tADTFCANData))
{
    const tADTFCANData* pCanData = reinterpret_cast<const tADTFCANData*>(pBlockData);
    ...
}
else if (nBlockSize == sizeof(tCANMessage))
{
    const tCANMessage* pCanMessage = reinterpret_cast<const tCANMessage*>(pBlockData);
    ...
}
...

Files

can_trace.dat (3.95 MB) can_trace.dat trace hidden, 2019-02-22 10:05
adtf_streaming_can.JPG (322 KB) adtf_streaming_can.JPG screenshot hidden, 2019-02-22 10:07
Actions

Also available in: Atom PDF