Ich habe ein Array.
Nun möchte ich vergleich ob es zu einem meiner anderen Arrays passt.
In der Praxis habe ich also von einem Can Bus eine Nachricht ausgelesen und möchte gucken ob die Nachricht mit einer meiner festgelegten Nachrichten übereinstimmt.
Ich habe hier schon 2 Varianten Probiert.
Die erste ist auskommentiert, da nicht exakt auf die komplette Nachricht geprüft wird sondern immer nur Teil für Teil. So kann es vorkommen, dass er manchmal in Nachricht1(vergleich) und manchmal in Nachricht2(vergleich2) fündig wird.
Variante 2 gibt mir eine Zahl aus, die nicht mehr viel mit der Tatsächlichen Nachricht gemein hat. Das macht das ganze recht umständlich.
void loop()
{
unsigned char len = 0;
unsigned char buf[8];
unsigned char vergleich[8] = {9, 9, 9, 9, 255, 25, 255, 255};
unsigned char vergleich2[8] = {0, 0, 0, 0, 255, 255, 255, 255};
long value = 5;
int Sperren = 5;
if (CAN_MSGAVAIL == CAN.checkReceive()) // check if data coming
{
CAN.readMsgBuf(&len, buf); // read data, len: data length, buf: data buf
unsigned int canId = CAN.getCanId();
Serial.println("-----------------------------");
//Serial.print(buf[6]);
Serial.print("Get data from ID: ");
Serial.println(canId, HEX);
for (int i = 0; i < len; i++) // print the data
{
value *= 10;
value += buf[i];
//value += (buf[i]*pow(10,i));
/*if(buf[i] == vergleich[i] || buf[i] == vergleich2[i]){
Serial.print(buf[i], HEX);
Serial.print("\t");
Sperren=0;
}else
{
Serial.print("Stop");
Sperren=1;
break;
}*/
}
//Serial.print("Sperren= ");
//Serial.print(Sperren);
Serial.print("Ergebnis= ");
Serial.print(value);
Serial.println();
}
}