Can Bus Daten filtern

Gast #4016401
Lesenswert?

Hallo zusammen,

bin gerade dabei Can Bus Daten auszulesen.

Bekomme mit folgendem Programm alle ID's des Fahrzeuges angezeigt:

#include <mcp_can.h>
#include <SPI.h>

long unsigned int rxId;
unsigned char len = 0;
unsigned char rxBuf[8];

MCP_CAN CAN0(10);                               // Set CS to pin 10


void setup()
{
  Serial.begin(115200);
  CAN0.begin(CAN_250KBPS);                       // init can bus :
  pinMode(2, INPUT);                            // Setting pin 2 for 
/INT
  Serial.println("MCP2515 Library Receive Example...");
}

void loop()
{
    if(!digitalRead(2))                         // If pin 2 is low, read
    {
      CAN0.readMsgBuf(&len, rxBuf);              // Read data: len = 
data
      rxId = CAN0.getCanId();                    // Get message ID
      Serial.print("ID: ");
      Serial.print(rxId, HEX);
      Serial.print("  Data: ");
      for(int i = 0; i<len; i++)                // Print each byte of 
the data
      {
        if(rxBuf[i] < 0x10)                     // If data byte is less
        {
          Serial.print("0");
        }
        Serial.print(rxBuf[i], HEX);
        Serial.print(" ");
      }
      Serial.println();
    }
}


zum Beispiel werden Id's mit folgendem HEX Wert angezeigt:

ID:1   Data: 16 00 00 00 00 00 00 00
ID 44C Data: 01 02 03 04 05 06 07 08

möchte dieses nun auf nur EINE ID filtern aber bekommen keine passendes 
Programm geschrieben. Das mit zum Beispiel nur die ID 44C angezeigt 
wird.

Kann mir da jemand weiterhelfen??

VIelen Dank im Voraus
Gast #4016484
Lesenswert?

Dankeschön für die schnelle Antwort.

habe jetzt meine Programm wie folgt umgschrieben:

void loop()
{
    if(!digitalRead(2))                         // If pin 2 is low, read
    {
      CAN0.readMsgBuf(&len, rxBuf);              // Read data: len =
      rxId = CAN0.getCanId();                    // Get message ID
      if (rxId==xxx)
          {
            Serial.print("ID: ");
            Serial.print(rxId, HEX);
            Serial.print("  Data: ");
            for(int i = 0; i<len; i++)            // Print each byte of

      {
        if(rxBuf[i] < 0x10)                     // If data byte is less
        {
          Serial.print("0");
        }
        Serial.print(rxBuf[i], HEX);
        Serial.print(" ");
      }
      Serial.println();
    }
}
}

Bei xxx habe ich meine ID hineingeschrieben.
Nun bekomme ich leider gar keine Daten mehr angezeigt.

Habe ich etwas falsch programmiert oder muss ich den unteren Teil 
weglassen?

mfg
Tm

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren